1

Я не получаю push-уведомления в своем приложении Android от Cordova. С тем же кодом я могу получать push-уведомления в моем приложении iOS. Раньше я использовал плагин pushwoosh из PhoneGap сборки (PGB):Push-уведомление не принимается в приложении Android Cordova

< gap:plugin name="com.pushwoosh.plugins.pushwoosh" version="3.4.2" /> 

уведомление Push-было получено как для прошивки и Android без каких-либо ошибок.

Недавно я изменил плагин и добавил новый:

< gap:plugin name="pushwoosh-cordova-plugin" version="6.4.0" source="npm" />  

Устройство регистрируется в pushwoosh и получить маркер устройства.
GCM (php-backend) используется для отправки push-уведомлений для Android.
Я получаю ответ от успеха ГОГО на отправку толчка уведомления:

{"multicast_id":86307627949689xxxxx,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1480488792901983%a4d1b626f9xxxxxx"}]} 

Но толчок уведомление не получено Android App в любых случаях, является ли приложение работает фон или передний план или закрыто.

Тем не менее обе версии IOS и Android приложения получает уведомления толчка при отправке из Pushwoosh панели

Справочный документ: http://docs.pushwoosh.com/docs/cordova-phonegap

Мой код:

document.addEventListener("deviceready", DeviceReady, false); 

function DeviceReady() 
{ 
    window.pushwoosh = cordova.require("pushwoosh-cordova-plugin.PushNotification"); 

    // should be called before pushwoosh.onDeviceReady 
    document.addEventListener('push-notification', function(event) { 
    navigator.notification.alert(JSON.stringify(event.notification)); 

    //get the notification payload 
    if (device.platform == 'android' || device.platform == 'Android') {  
      navigator.notification.alert(event.notification.message);   
    }else{ 
     navigator.notification.alert(event.notification.aps.alert);    
    } 

    if (device.platform == 'iOS') { 
     pushwoosh.setApplicationIconBadgeNumber(0); 
    } 

    }); 

    // Initialize Pushwoosh. This will trigger all pending push notifications on start. 
    // projectid : GOOGLE_PROJECT_NUMBER 
    pushwoosh.onDeviceReady({ 
    appid: "3FXXX-3CXXX", 
    projectid: "4631220XXXXX" 
    }); 

    pushwoosh.registerDevice(
    function(status) { 
     var pushToken = status.pushToken; 
     document.getElementById('hiddentoken').value = pushToken;    
    },function(status) { 
     //~ alert("Error Status" + status); 
}); 

    //reset badges on app start 
    pushwoosh.setApplicationIconBadgeNumber(0); 

} 

манифеста:

<?xml version="1.0" encoding="utf-8" standalone="no"?> 
<manifest xmlns:amazon="http://schemas.amazon.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto" android:windowSoftInputMode="adjustPan" package="com.XXXXX.XXXXX" platformBuildVersionCode="22" platformBuildVersionName="5.1.1-1819727"> 
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.VIBRATE"/> 
    <uses-permission android:name="android.permission.WAKE_LOCK"/> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
    <permission android:name="com.XXXXX.XXXXX.permission.C2D_MESSAGE" android:protectionLevel="signature"/> 
    <uses-permission android:name="com.XXXXX.XXXXX.permission.C2D_MESSAGE"/> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/> 
    <uses-permission android:name="com.sec.android.provider.badge.permission.READ"/> 
    <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/> 
    <uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/> 
    <uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT"/> 
    <uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE"/> 
    <uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"/> 
    <uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT"/> 
    <uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE"/> 
    <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/> 
    <uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/> 
    <uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/> 
    <uses-permission android:name="android.permission.READ_APP_BADGE"/> 
    <uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/> 
    <uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/> 
    <permission android:name="com.XXXXX.XXXXX.permission.RECEIVE_ADM_MESSAGE" android:protectionLevel="signature"/> 
    <uses-permission android:name="com.XXXXX.XXXXX.permission.RECEIVE_ADM_MESSAGE"/> 
    <uses-permission android:name="com.amazon.device.messaging.permission.RECEIVE"/> 
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:configChanges="locale|keyboard|keyboardHidden|orientation|screenSize" android:label="@string/app_name" android:name="com.XXXXX.XXXXX.Apppp" android:screenOrientation="portrait" android:windowSoftInputMode="adjustUnspecified|stateUnspecified"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/> 
     <meta-data android:name="PW_LOG_LEVEL" android:value="DEBUG"/> 
     <meta-data android:name="PW_NO_BROADCAST_PUSH" android:value="false"/> 
     <receiver android:exported="true" android:name="com.google.android.gms.gcm.GcmReceiver" android:permission="com.google.android.c2dm.permission.SEND"> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE"/> 
       <category android:name="com.XXXXX.XXXXX"/> 
      </intent-filter> 
     </receiver> 
     <activity android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/> 
     <receiver android:name="com.pushwoosh.MessageAlertReceiver" android:permission="com.amazon.device.messaging.permission.SEND"> 
      <intent-filter> 
       <action android:name="com.amazon.device.messaging.intent.REGISTRATION"/> 
       <action android:name="com.amazon.device.messaging.intent.RECEIVE"/> 
       <category android:name="com.XXXXX.XXXXX"/> 
      </intent-filter> 
     </receiver> 
     <service android:name="com.pushwoosh.PushAmazonIntentService"/> 
     <amazon:enable-feature android:name="com.amazon.device.messaging" android:required="false"/> 
     <activity android:name="com.pushwoosh.richpages.RichPageActivity"/> 
     <activity android:name="com.pushwoosh.MessageActivity"/> 
     <activity android:name="com.pushwoosh.PushHandlerActivity"/> 
     <activity android:name="com.pushwoosh.inapp.WebActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/> 
     <service android:name="com.pushwoosh.inapp.InAppRetrieverService"/> 
     <receiver android:enabled="true" android:name="com.pushwoosh.local.BootReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </receiver> 
     <service android:exported="false" android:name="com.pushwoosh.GCMListenerService"> 
      <intent-filter android:priority="-50"> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE"/> 
      </intent-filter> 
     </service> 
     <service android:exported="false" android:name="com.pushwoosh.GCMInstanceIDListenerService"> 
      <intent-filter android:priority="-50"> 
       <action android:name="com.google.android.gms.iid.InstanceID"/> 
      </intent-filter> 
     </service> 
     <service android:exported="false" android:name="com.pushwoosh.GCMRegistrationService"/> 
     <service android:name="com.pushwoosh.location.GeoLocationService"/> 
     <activity android:name="com.pushwoosh.internal.utils.PermissionActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/> 
     <receiver android:name="com.pushwoosh.local.AlarmReceiver"/> 
     <service android:enabled="true" android:exported="true" android:isolatedProcess="false" android:label="iBeacon" android:name="com.pushwoosh.thirdparty.radiusnetworks.ibeacon.service.IBeaconService"/> 
     <service android:enabled="true" android:name="com.pushwoosh.thirdparty.radiusnetworks.ibeacon.IBeaconIntentProcessor"/> 
     <service android:name="com.pushwoosh.beacon.PushBeaconService"/> 
     <service android:enabled="true" android:exported="false" android:name="com.pushwoosh.internal.utils.LockScreenService"/> 
    </application> 
</manifest> 

Любая помощь будет оценена по достоинству.

+0

добавление файла манифеста здесь будет полезно, возможно, у вас есть только pushwoosh-ресивер в ваш файл манифеста, и это не понимает полезную нагрузку, отправленную вашим сервером. –

+0

@UmangChamaria Я добавил файл манифеста. Можете ли вы проверить это? – Ajith

ответ

0

Вы можете попробовать следующее, перечисленных в Apache Cordova/Phonegap Push Notification Tutorial:

  • Проверьте уже установлен ли вы Push уведомление Plugin
  • Убедитесь, что вы установили необходимые инструменты в SDK Manager,
  • Проверьте, что вы включили файл cordova.js с вашим проектом.
  • Проверьте идентификатор отправителя, который вы создали в проектах GCM.
  • Убедитесь, что подключение к Интернету

Вы также можете получить дополнительные советы и информацию об осуществлении кнопочных уведомлений в Кордове Применение из следующих ссылок:

+0

Я прошел проверку и попробовал все, что упоминалось выше. Но все равно не получает push-уведомление. Это все началось после того, как я обновил плагин, как указано в исходном сообщении. – Ajith

0

Файл манифеста имеет только один приемник, предоставляемый SDK pushwoosh, этот ресивер сможет показывать только push-уведомление, если полезная нагрузка уведомления находится в том формате, в котором он ожидает. Если вам нужно показывать уведомления, отправленные с вашего собственного сервера, у вас должен быть свой собственный приемник, который должен понимать загружаемую вами полезную нагрузку, а затем отображать ее.

Примечание: Последняя версия игровых сервисов не поддерживает несколько GCMListenerServices. В идеале у вас должна быть одна ваша служба, которая понимает, является ли нажим с вашего сервера или от pushwoosh и обрабатывает его соответствующим образом. Во время тестирования вы можете увидеть случаи, когда push-загрузка push передается нескольким GCMListenerServices, но это поведение несовместимо, поэтому лучше всего иметь только одну услугу