为什么安卓手机无法接收FCM推送通知?

6
我正在开发一个Android项目,尝试使用FCM接收推送通知。我按照FCM官方文档这里的描述实现了一切。
我通过从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服务器的响应中看到了成功消息。
谢谢。

你好。你是真的在 priority 中使用了 hight 还是打错字了?你能发一下你的 Android 代码吗? :) - AL.
这是一个打字错误。但我确实使用了 high。我发现当应用程序在后台运行时,它不会被调用。 - Amit Pandya
请发布一些相关的代码片段和有效载荷,就像我之前提到的那样。这可能有助于我们找到一些东西。 - AL.
1个回答

5

将以下内容添加到服务清单(manifest)中:

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>

@kilokahn 在这里,https://developer.android.com/guide/topics/manifest/service-element 这里有详细的解释。 - user5962153

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接