我正在测试Firebase推送通知,从Firebase编辑器面板发送通知,我注意到如果我从“应用信息”面板关闭应用进程,则发送的推送通知无法到达设备。即使我再次启动应用程序,通知也会丢失,并且永远不会收到。
我也试过这个:
关闭应用程序流程 - >关闭设备 - >设备上电 - >发送通知......并且没有收到通知!
似乎firebase只能在设备启动应用程序时才会收到通知,而不是100%关闭,我的意思是,只需使用后退键关闭它,但不会终止应用程序进程。
这怎么可能?即使应用程序关闭,firebase也会收到通知。
我正在使用Android 8.0在 Nexus 5X 上进行测试,而我正在使用FAILED TEST SUMMARY
---------------------------------------------------------------------
Test adding / removing items [tests/007-addremovepoll.phpt]
Test callback edge-cases [tests/019-callbackinvalidsignature.phpt]
的最新版本。
答案 0 :(得分:1)
对不起,很抱歉,希望此功能能对下一个有此问题的用户有所帮助,因为没有答案被选择为“解决方案”。
正确设置服务,即使关闭应用程序也可以使用。那是因为,Firebase Messages由Google Play服务提供,因此关闭您的应用程序与该服务没有关系。
起初,通知从未到来。通过搜索设备设置,我发现我的应用程序的节能系统处于活动状态(关闭时已从堆栈中删除),因此发送了通知,但我的应用程序无法拿走并显示这些内容。
禁用该选项后,我进行了很多次测试,发现有时当应用程序完全关闭时,通知会在2-3分钟后出现。有时会碰到5分钟。您需要耐心等待,它将来!
相反,仅通过后退按钮打开或关闭应用时,通知会在几秒钟内出现。
答案 1 :(得分:0)
您是否在Java代码上添加了firebase服务? 这是链接:firebase/quickstart-android
您必须在java文件夹中添加这3个java文件,并在 AndroidManifest.xml
中添加这些服务名称答案 2 :(得分:0)
似乎firebase只能在设备上收到通知 有应用程序启动,而不是100%关闭,我的意思是,关闭它只是 返回密钥但不杀死应用程序进程。
不,FCM会发送到所有拥有Google Play服务和目标应用程序的设备。这就是为什么它被称为推送通知。
您的应用程序在运行时也会收到通知,以处理您需要覆盖的内容
onMessageRecieved(RemoteMessage mes);
应用无法收到通知可能有很多原因。其中一些可能是:
消息传递服务未包含在清单中
未正确配置播放服务。或者不在电话中。
有时延迟很高(很少)。我注意到它有时需要大约2-3分钟 作曲后。
SHA1指纹未在控制台中注册和/或更新后的google-services.json不在源中。
卸载并重新安装该应用。因此可能会发生令牌再生。
请点按此链接开始发送消息。
https://firebase.google.com/docs/cloud-messaging/android/client
答案 3 :(得分:0)
如果您从firebase控制台发送它,它会发送一条通知消息,以便在您的应用程序关闭时无法获得通知消息,您需要发送具有控制台不执行的数据有效负载的消息。
https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages
答案 4 :(得分:0)
在您的AndroidManifest.xml文件中,从消息服务中删除android:exported=false
。
说明:当您的应用程序被完全杀死或从后堆栈中删除时。操作系统尝试重新启动消息传递服务,但是如果清单文件中包含android:exported=false
,则操作系统将无法重新启动该服务,因为该服务只能由同一应用程序重新启动。
参考:https://developer.android.com/guide/topics/manifest/service-element#exported