我正在使用react native为android和ios开发应用程序。我希望在收到远程通知时在应用程序图标上显示徽章编号。我正在使用react-native-fcm第三方库和iOS徽章工作正常。在android中,我只能在应用程序处于前台时显示徽章编号。当应用程序被杀或在后台我无法显示徽章编号。我知道Android本身不支持显示徽章,但我看到Facebook和Messenger应用程序在Android上显示徽章。请有人告诉我如何在Android上实现这一点甚至应用程序被杀死或在后台。提前谢谢。
答案 0 :(得分:3)
onMessageReceived没有得到调用,它只调用数据有效负载发送。
如果发送数据有效负载和通知有效负载,则还要发送onMessageReceived,而不是调用。
当应用程序处于后台或因FirebaseMessagingService正在运行而被杀死时,请使用以下代码从服务器获取徽章。
public class Custom_FirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "FirebaseMsgService";
String activityName;
@Override
public void zzm(Intent intent) {
Log.i("uniqbadge", "zzm");
Set<String> keys = intent.getExtras().keySet();
for (String key : keys) {
try {
Log.i("uniq", " " + key + " " + intent.getExtras().get(key));
if (key.equals("badge")) {
String cnt = intent.getExtras().get(key).toString();
int badgeCount = Integer.valueOf(cnt);
Log.i("uniq", " badge count " + badgeCount);
ShortcutBadger.applyCount(this, badgeCount);
Log.i("uniq", " " + "end");
}
} catch (Exception e) {
Log.i("uniqbadge", "zzm Custom_FirebaseMessagingService" + e.getMessage());
}
}
super.zzm(intent);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.i(TAG, "From: " + remoteMessage.getFrom());
if (remoteMessage == null)
return;
if (remoteMessage.getNotification() != null) {
Log.i(TAG, "Notification Body: " + remoteMessage.getNotification().getBody());
}
if (remoteMessage.getData().size() > 0) {
Log.i(TAG, "Data Payload: " + remoteMessage.getData().toString());
...