В соответствии с инструкцией по настройке здесь, в примерном приложении, A) я создал класс, который extends
класс услуг firebase. B) Я помещал эти классы в AndroidManifest.xml
A) Класс Java
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
//a) What 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());
}
}
B) AndroidManifest.xml
<service
android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
Затем приложение может получать уведомления от FCM!
Вот мой вопрос:
-
Кто начал службу уведомления FirebaseMessagingService? Должно быть какое-то место, вызывающее startService(), не так ли?
-
Я понимаю, что уведомление о нисходящем потоке будет доставляться на мое мобильное устройство google play, независимо от состояния моего приложения. Затем, насколько я могу гарантировать, что мой
onMessageReceive()
вызывается, когдаapp
илиservice
естьswipe closed/killed/force stop
? Является ли соответствующее поведение документированным где угодно?
ИЗМЕНИТЬ:
- Меня больше беспокоит следующий случай. Расскажите о
data message
. (по сравнению сnotification message
.) Мое клиентское приложение получило сообщение FCM и отобразило уведомление по умолчанию, поскольку служба воспроизведения Google запущена и отправляет ее на системный трей. Но мойonMessageReceive()
не вызывается, потому чтоMyFirebaseMessagingService
убит системой и не перезапускается. Является ли это возможным?