2017-12-18 280 views
2

我正在测试Firebase推送通知,并从Firebase撰写器面板发送通知,并且我注意到如果我从应用程序信息面板关闭应用程序进程, t到达设备。即使我再次启动应用程序,通知也会丢失,并且永远不会收到。如果应用程序关闭,则不会收到Firebase推送通知

我也tryed这一点:

关闭应用程序 - 在设备上>电源 - - >关闭设备>发送通知...并没有收到通知!

看来,firebase只能收到通知,如果设备已启动应用程序,并没有100%关闭,我的意思是,关闭它只是后退键,但不杀死应用程序进程。

这怎么可能?即使应用程序关闭,Firebase也会收到通知。

我正在测试Nexus 5X与Android 8.0和我使用的最后一个版本Firebase push Notifications

+1

有两种类型的消息 - 通知消息和数据消息。你使用哪一个? –

+0

我安卓最新版本7.0+介绍DOZE,当应用程序停止运行或不运行时,不允许后台服务。 https://developer.android.com/about/versions/nougat/android-7.0-changes.html –

+0

可能有帮助[post](https://stackoverflow.com/q/39504805/4625829) –

回答

0

您是否在Java代码中添加了Firebase服务? 这里是链接:firebase/quickstart-android

您必须添加在java文件夹的3 Java文件以及在添加这些服务的名称AndroidManifest.xml中

+0

尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/18289146) –

+0

我在清单和代码中添加了服务,是的... – NullPointerException

0

似乎火力只能如果收到通知设备 已启动应用程序,而不是100%关闭,我的意思是,只需使用 后退键关闭它,但不会终止应用程序进程。

不,FCM会发送到所有具有Google Play服务和目标应用程序的设备。这就是为什么它被称为推送通知。

您的应用程序还可以得到,当它运行的通知,来处理那些你需要重写

onMessageRecieved(RemoteMessage mes); 

可能有很多原因,没有得到通知的应用程序。他们中的一些可能是:

  • 消息服务不包括在未正确配置清单

  • 播放服务。或者不在电话中。

  • 有时延迟很高(很少)。我注意到它在编写后有时花费大约2-3分钟 。

  • SHA1指纹未在控制台中注册和/或更新的google-services.json不在源中。

  • 卸载并重新安装应用程序。所以这个令牌可能会发生再生。

请按照此链接开始使用消息传递。

https://firebase.google.com/docs/cloud-messaging/android/client

+0

SHA1未在控制台中注册,但因为它是可选的。会影响吗?这是记录在任何地方? – NullPointerException

+0

注册它总是更好。确保您提交调试密钥的发布版本和释放密钥的调试目的。这里是如何获得密钥的SHA1 https://stackoverflow.com/questions/15727912/sha-1-fingerprint-of-keystore-certificate – coder3101

+0

为什么更好?在网站的文档中,它被告知它们是可选的,仅用于其他服务,而不是用于推送 – NullPointerException

0

如果你是从你的火力控制台发送将其发送通知消息,所以那些你不会得到,如果你的应用程序被关闭,你需要发送具有数据有效载荷,其控制台没有消息做。

https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages

+0

有可能发送一个没有服务器?只用Firebase面板? – NullPointerException

+0

没有,正如我所说的控制台不发送数据消息 – tyczj

+0

谢谢,在文档中解释,如果它发送没有playload它不会到达应用程序关闭的设备? – NullPointerException

相关问题