首页 文章

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

提问于
浏览
1

我正在开发一个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连接且调试应用程序未运行时,我还需要做些什么才能开始接收推送通知?

NOTE: 我的django代码工作正常,我在FCM服务器的响应中看到成功消息 .

谢谢 .

1 回答

  • 2

    将此添加到服务清单:

    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>
    

相关问题