首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Firebase服务在后台运行时无法创建新通知

Firebase服务在后台运行时无法创建新通知
EN

Stack Overflow用户
提问于 2017-03-01 07:50:17
回答 1查看 53关注 0票数 0

我使用了Firebase通知,并创建了一个扩展FirebaseMessagingService的类。我在这个类中创建了一个方法,该方法获取消息体,然后根据有效负载显示通知。

我的问题是,这个通知只有在我的应用程序运行时才有效,但当它关闭时,我会收到Firebase的默认通知,而不是我创建的自定义通知。

我的服务类是:

代码语言:javascript
运行
复制
public class FirebaseNotifications extends FirebaseMessagingService {

String lastChange = "";
String currentChange = "";

@Override
public void onCreate() {
    super.onCreate();
    Log.i("firebase", "it started");
    SharedPreferences settings = getSharedPreferences(PREFS, 0);
    lastChange = settings.getString("lastFbInput", "");
    Log.i("lastChange", lastChange);
}

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);

    currentChange = remoteMessage.getNotification().getBody();
    Log.i("from: ", remoteMessage.getFrom() + "");
    if(remoteMessage.getData().size()>0)
        Log.i("payload: ", remoteMessage.getData().toString());

    if(remoteMessage.getNotification() != null)
        Log.i("message body: ",  remoteMessage.getNotification().getBody());

    if(!lastChange.equals("")) {
        Log.i("equals", "1");
        if (!lastChange.equals(currentChange)) {
            showNotification(remoteMessage.getNotification().getBody());
            Log.i("equals", "2");
        }
    }
    else
    {
        showNotification(remoteMessage.getNotification().getBody());
        Log.i("equals", "3");
    }

}

我的问题是该服务甚至不运行showNotification方法。有没有人能给出一个解决方案?

EN

回答 1

Stack Overflow用户

发布于 2017-03-01 11:08:24

这是预期的行为。当您的应用程序处于后台时,Android会自动处理通知。从docs

大多数消息类型都提供了

onMessageReceived,但以下消息类型除外:

当你的应用程序在后台时交付的

  • Notifications。在这种情况下,通知将传送到设备的系统托盘。用户轻触通知,即可打开default.
  • Messages的应用程序启动器,同时包含通知和数据有效负载,包括后台和前台。在这种情况下,通知将传送到设备的系统托盘,数据有效负载将以启动程序活动意图的附加形式传送。

您的有效负载中可能同时包含notificationdata。要只让你的应用程序处理通知(在onMessageReceived()中),你应该使用data-only消息有效负载。有关更多详细信息,请参阅Message Types文档。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42520836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档