在应用程序处于后台时Android应用程序图标上设置徽章编号或者在收到facebook app

时间:2017-05-25 12:33:36

标签: java android react-native

我正在使用react native为android和ios开发应用程序。我希望在收到远程通知时在应用程序图标上显示徽章编号。我正在使用react-native-fcm第三方库和iOS徽章工作正常。在android中,我只能在应用程序处于前台时显示徽章编号。当应用程序被杀或在后台我无法显示徽章编号。我知道Android本身不支持显示徽章,但我看到Facebook和Messenger应用程序在Android上显示徽章。请有人告诉我如何在Android上实现这一点甚至应用程序被杀死或在后台。提前谢谢。

1 个答案:

答案 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());
            ...