【问题标题】:Receiving the FCM notifications multiple times on Nougat在 Nougat 上多次接收 FCM 通知
【发布时间】:2018-02-14 10:47:38
【问题描述】:

我在我的应用中使用 Firebase 推送通知。但是,当我发送某个事件的通知时,仅在 Nougat 设备 上 2-3 分钟后我会收到多次通知。在版本低于 Nougat 的设备上,我只收到一条通知。

我检查了服务器一次只发送一个通知。 我的应用程序 gradle 有以下依赖项。

compile `com.google.firebase:firebase-messaging:11.8.0`

这是 FCM 监听器的代码:

public class MyFcmListenerService extends FirebaseMessagingService {

    @Override
public void onMessageReceived(RemoteMessage remoteMessage) {

  }
}

在清单文件中:

<service android:name="com.myApp.test.fcm.MyFcmListenerService">
  <intent-filter>
     <action android:name="com.google.firebase.MESSAGING_EVENT" />
   </intent-filter>
</service>

【问题讨论】:

    标签: android firebase firebase-cloud-messaging


    【解决方案1】:

    当我尝试从旧 GCM 迁移到新 FCM 时,这开始发生在我身上。 您需要确保删除所有与 GCM 相关的代码,包括 gradle(删除 com.google.android.gms:play-services-gcm)和 Manifest

    (删除:

    <uses-permission android:name="mypackage.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    
    <permission
        android:name="mypackage.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    

    )

    还要确保您CLEAN您的项目并REBUILD它,以删除对 GCM 类的任何缓存引用。最后一部分花了我2个小时才弄清楚。 一个不错的技巧是查找所有 (⇧⌘F) "GCM" 并查看是否从生成的文件中获得命中。

    【讨论】:

      【解决方案2】:

      同样的事情发生在我身上,我尝试了一切都是徒劳的

      然后我意识到我们从头到尾存储了 android 设备的所有 fcm 令牌,而没有验证或删除它们

      我删除了所有 fcm 令牌并重新登录了我的应用程序,该应用程序在我服务器数据库的 FCM 令牌列表中插入了一个新的单数令牌

      它工作得很好,我认为 FCM 应该在发布新令牌之前使早期令牌失效,即使跨安装、多个 apk 和多个 apk 调试会话

      尝试仅发送 1 个令牌,同时清理构建并重新安装您的应用

      【讨论】:

        猜你喜欢
        • 2019-08-01
        • 2023-02-25
        • 1970-01-01
        • 2022-06-15
        • 2021-09-08
        • 2023-03-26
        • 2021-09-16
        • 2016-12-24
        • 1970-01-01
        相关资源
        最近更新 更多