问题
I can't receive my Firebase Notifications when the app is killed or in background.
I signed the APK, and it doesn't work, and when I send my Data notification with JSON the logcat shows me this error:
broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=com.example.paolomazza.firebasedemo3 (has extras) }
Given the following Manifest, what could be the cause of this bug? Thanks in Advance
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<receiver android:name="com.example.paolomazza.firebasedemo3.OnBootBroadcastReceiver">
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".FirebaseIDService">
<intent-filter>
<action android:name="com.example.paolomazza.firebasedemo3.INSTANCE_ID_EVENT"
android:stopWithTask="false" />
</intent-filter>
</service>
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"
android:stopWithTask="false" />
</intent-filter>
</service>
</application>
And here's the code for showing the notifications
public void onMessageReceived(RemoteMessage remoteMessage) {
Map<String, String> data = remoteMessage.getData();
//you can get your text message here.
String text= data.get("my_custom_key");
System.out.println(text);
notifies(text);
}
private void notifies(String body){
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(MyFirebaseMessagingService.this)
.setSmallIcon(android.R.drawable.ic_menu_help)
.setContentTitle("Congratulations!")
.setContentText(body);
Notification mNot= mBuilder.build();
NotificationManager mNotMan = (NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE);
mNotMan.notify(1,mNot);
}
回答1:
OK, I just solved the problem.
If you're using a Huawei device, or a device that uses a EMOI os, just go to
Advanced settings
than go to
Battery
and
Protected Apps
than select your app, switch it on and you'll be able to receive your notifications in the background!
来源:https://stackoverflow.com/questions/44650985/app-doesnt-show-firebase-notifications-broadcast-intent-callback-result-cance