Wei*_*eng 11 notifications android android-service firebase firebase-cloud-messaging
根据这里的设置指南,在示例应用程序中,A)我创建了一个extendsfirebase服务类的类.B)我把这些课程放在了AndroidManifest.xml
A)Java类
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
//a) What's the life cycle of the service? How can I ensure this method is getting called?
//b) If the service is killed at some point, will system restart it on receiving new messages?
Log.d(TAG, "From: " + remoteMessage.getFrom());
}
}
Run Code Online (Sandbox Code Playgroud)
B)AndroidManifest.xml
<service
android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
然后,该应用程序可以从FCM接收通知!
这是我的问题:
谁启动了FirebaseMessagingService通知服务?必须有一些地方调用startService(),不是吗?
我的理解是,无论我的应用程序状态如何,下游通知都会传送到我的移动设备的Google Play服务.然后,我可以保证什么程度,我onMessageReceive()被调用的时候,app或者service是swipe closed/killed/force stop?相关行为是否记录在何处?
编辑:
data message.(与notification message.相比.)我的客户端应用程序收到FCM消息并显示默认通知,因为Google Play服务正在运行并将其发送到系统托盘.但我onMessageReceive()没有被调用,因为MyFirebaseMessagingService被系统杀死而没有重新启动.可能吗?AL.*_*AL. 13
1.谁启动了FirebaseMessagingService通知服务?必须有一些地方调用startService(),不是吗?
SDK会自动为您执行此操作.
2.我的理解是,下游通知将传送到我的移动设备的谷歌播放服务,无论我的应用程序状态如何.然后,我可以保证什么程度,我
onMessageReceive()被调用的时候,app或者service是swipe closed/killed/force stop?相关行为是否记录在何处?
Android版接收消息的官方文档就在这里.它讨论了应用程序处于前台和后台时消息的行为(取决于您使用的消息有效负载的类型(即notification或data)).
为了能够自己处理消息(in onMessageReceived()),您必须发送data- 仅消息有效负载.
关于刷卡关闭/杀死/强制停止的主题,这个主题已经讨论了很长一段时间,似乎没有明确的答案.在我的一次测试中,如果我轻扫关闭我的应用程序,我仍然能够收到一条消息(使用data- 仅测试消息有效负载进行测试).但是当我从"设置"菜单强制关闭它时,我无法接收任何消息.请注意,这并不总是行为.
有一些设计,当你的设备刷卡关闭的应用程序,这将是一样的止动力(请参阅我的答案在这里).
还有一些设备,即使应用程序仍然只是被轻扫一下,即使它没有强行关闭,设备本身也会阻止它接收消息.其他人则认为情况并非如此,因为像WhatsApp这样的应用程序能够做到这一点.到目前为止,我之所以学到这一点,是因为设备制造商已将大多数知名应用程序列入白名单.
所以只是回答你的问题,不.这在任何地方都没有记录,因为(IMO)这是一个主要依赖于设备并且FCM无法完全控制的主题.
我更关注以下案件.我们来谈谈数据信息.(与通知消息相比.)我的客户端应用程序收到FCM消息并显示默认通知,因为Google Play服务正在运行并将其发送到系统托盘.但是我的onMessageReceive()没有被调用,因为MyFirebaseMessagingService被系统杀死而没有重新启动.可能吗?
AFAIK,FirebaseMessagingService 与Google Play服务捆绑在一起,因此只要Google Play服务处于活动状态,Firebase服务也会启用.我回答的部分内容如下:
但是,我已经看到之前提到的
FirebaseMessagingService(参见这篇文章,@ ArthurThompson的评论):这些服务将由Google Play服务启动,该服务始终在设备上运行.您不必也不应该自己启动/停止这些服务.
| 归档时间: |
|
| 查看次数: |
6825 次 |
| 最近记录: |