Я пытаюсь использовать Firebase для push-уведомлений для Android. Но я столкнулся с очень странной проблемой. Все в порядке, когда я отправляю push на передний план. Все нормально, когда я посылаю push в фоновом режиме (я отправляю только данные), пока я не вернусь на передний план, а затем обратно на задний план.FirebaseMessagingService не вызывается после второго фона
Мой FirebaseMessagingService
не вызывается, когда у меня есть приложение, которое возвращается во второй раз. Кроме того, обратите внимание, что я использую эмулятор Android. Код:
public class MyAndroidFirebaseMsgService extends FirebaseMessagingService {
private static final String TAG = "MyAndroidFCMService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
}
}
//...
public class MyAndroidFirebaseInstanceIdService extends FirebaseInstanceIdService {
private static final String TAG = "MyAndroidFCMIIDService";
@Override
public void onTokenRefresh() {
//Get hold of the registration token
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
//Log the token
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
private void sendRegistrationToServer(String token) {
//Implement this method if you want to store the token on your server
}
}
AndroidManifest.xml:
<service android:name=".MyAndroidFirebaseMsgService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".MyAndroidFirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
Сервер:
curl -H "Content-type: application/json" -H "Authorization:key=<MYKEY>" -X POST -d '{"to": "<MYTOKEN>","data": {"hello": "This is a Firebase Cloud Messaging Device Group Message!"}}' https://fcm.googleapis.com/fcm/send
Как я могу решить эту проблему?
FirebaseMessagingService не зайдет на фоне –
если (.! GetIntent() getExtras() = NULL) { для (String ключ:.. GetIntent() getExtras() Keyset ()) { Значение объекта = getIntent(). GetExtras(). Get (ключ); Log.d ("MainActivity:", "Key:" + key + "Value:" + value); } } –
вы можете получить данные с объекта цели –