我在我的应用中使用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>
答案 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个令牌,还清理构建并重新安装您的应用