我正在开发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服务器的响应成功消息。
感谢。
答案 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>