简体   繁体   中英

App does not receive GCM messages after reboot on Android 5.0

I use react-native-gcm-android and react-native-system-notification packages to manage GCM notifications (Android), everything works fine on Android 4.x but on 5.0 (ASUS_Z00AD) after reboot GCM messages not appear, log shows me

W/BroadcastQueue(  639): Reject to launch app com.Sgoomys.Main/10246 for broadcast: App Op 48
W/GCM-DMM ( 1824): broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=com.Sgoomys.Main (has extras) }

In AndroidManifest.xml all the settings are made according the packages documentation:

<permission 
    android:name="com.Sgoomys.Main.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.Sgoomys.Main.permission.C2D_MESSAGE" />
   ...
<receiver
    android:name="com.google.android.gms.gcm.GcmReceiver"
    android:exported="true"
    android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>
      <action android:name="com.google.android.c2dm.intent.RECEIVE" />
      <category android:name="com.Sgoomys.Main" />
    </intent-filter>
  </receiver>
  <service android:name="com.oney.gcm.GcmRegistrationService"/>
  <service android:name="com.oney.gcm.BackgroundService"></service>

  <service
    android:name="io.neson.react.notification.GCMNotificationListenerService"
    android:exported="false" >
    <intent-filter>
      <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    </intent-filter>
  </service>
  <receiver
    android:exported="false"
    android:name="com.oney.gcm.GcmBroadcastReceiver">
    <intent-filter>
      <action android:name="com.oney.gcm.GCMReceiveNotification" />
      </intent-filter>
  </receiver>

Google Play Services library is com.google.android.gms:play-services-gcm:8.4.0

Finally I solved the puzzle...

Application doesn't start at boot-up because it was blocked by Asus utility "Auto-start manager" - all recently installed apps are blocked by default.

So now I will add a check for com.asus.mobilemanager package with alert and button to start this utility and unblock autorun, but I think the correct way will be detect all possible blocking software and inform user about it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM