在Nougat上多次接收FCM通知

时间:2018-02-14 10:47:38

标签: android firebase firebase-cloud-messaging

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

我检查过服务器一次只发送一个通知。 我在app gradle中具有以下依赖性。

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

以下是FCM Listener的代码:

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>

2 个答案:

答案 0 :(得分:4)

当我尝试从旧的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" />

还要确保清除您的项目并重建,以删除对GCM类的任何缓存引用。最后一部分花了我2个小时来弄明白。 一个很好的技巧可以是找到所有(⇧⌘F)“GCM”,看看你是否从生成的文件中获得了点击。

答案 1 :(得分:0)

同一件事发生在我身上,我徒劳地尝试了一切

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

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

效果很好,我认为FCM应该在发行新令牌之前甚至在安装,多个apk和多个apk调试会话中都使较早的令牌无效

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