android – Firebase发送推送通知两次

我写了一个非常简单的 Android应用来测试firebase推送通知,我收到两次通知.

这是清单服务:

<service
        android:name="com.google.firebase.messaging.FirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
    <service
        android:name="com.google.firebase.iid.FirebaseInstanceIdService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>

这是应用程序gradle:

compile 'com.google.android.gms:play-services:9.0.0'
    compile 'com.google.firebase:firebase-core:9.0.0'
    compile 'com.google.firebase:firebase-messaging:9.0.0'
}
apply plugin: 'com.google.gms.google-services'

这是项目级别的gradle:

classpath 'com.google.gms:google-services:3.0.0'

解决方法

看起来您正在使用com.google.android.gms:play-services:9.0.0(包括play-services-gcm)和com.google.firebase:firebase-messaging:9.0.0

来自firebase-massaging的FCM会自动注册一个实例ID令牌(设备ID),因此如果您有在您的应用中注册令牌的逻辑,则可能是您要注册两次.这可能会导致您收到多个通知.更一般地说,虽然你不应该在同一个应用程序中使用FCM和GCM,正是出于这个原因.因此,如果您打算使用FCM,则应从应用中删除GCM.

此外,使用播放服务包括所有play-services-x A​​PI,如play-services-gcm和play-services-drive等.因此,请始终使用分割库,如play-services-x而不仅仅是播放服务.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...