为什么Android没有收到FCM推送通知?

时间:2017-03-04 19:43:20

标签: android notifications google-cloud-messaging firebase-cloud-messaging

我正在开发Android项目并尝试使用FCM接收推送通知。我在FCM的官方文档中实现了所有内容,就像它描述here一样。

我通过从Firebase控制台发送演示通知来测试我的工作,但它确实有效。我在我的Django网站上使用了web密钥,它向FCM服务器发送通知,我的Android应用程序接收正确。但是有一个问题。应用程序仅在连接到Android Studio并且安装并运行调试应用程序时才会收到通知。如果我从调试应用程序退出并尝试,它不会收到它。我将priority更改为hight,添加了content_available = true但仍未正常工作。

我检查了Android Studio中的错误日志,发现了这个,

W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=com.app.android (has extras) }

我认为GCM正在参与这个场景,我不知道如何解决这个错误,因为我根本不使用GCM代码,因为所有内容都迁移到了FCM。任何人都可以告诉我,当我的设备未与Android Studio连接且调试应用程序未运行时,我还需要做些什么才能开始接收推送通知?

注意:我的django代码运行正常,我看到来自FCM服务器的响应成功消息。

感谢。

1 个答案:

答案 0 :(得分:3)

将此添加到服务清单:

android:enabled="true"
android:exported="true">

就像这样:

     <service
        android:name=".firebase.MyFirebaseMessagingService"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    <service
        android:name=".firebase.MyFirebaseInstanceIDService"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>