Невозможно получить сообщение типа "данные", когда приложение находится в фоновом режиме в реакции-нативной-firebase
У меня были некоторые проблемы с react-native-fcm
а также react-native-push-notification
вот я и решил попробовать react-native-firebase
,
Я могу получить следующую полезную нагрузку, отправленную сервером, когда приложение находится на переднем плане:
{
"to":"FCM_TOKEN",
"data": {
"icon": "http://host.com/img.jpg",
"title": "xyz title",
"body": "sadsaddsasadsda",
"click_action": "https://host.com/id/391",
"data": "some json.stringify custom data"
}
}
Тем не менее, когда приложение находится в фоновом режиме, FCM.onMessage()
не получает никаких уведомлений вообще. Я мог бы получить эти данные в фоновом режиме с react-native-fcm
или же react-native-push-notification
так что мне интересно, если это ограничение react-native-firebase
,
wixRoutes.js
import firebase from 'react-native-firebase';
import {Navigation} from 'react-native-navigation';
let FCM = firebase.messaging();
FCM.requestPermissions();
FCM.getToken().then(token=>{
console.log('has token',token);
});
FCM.onTokenRefresh((refreshedToken) => {
console.log(refreshedToken);
});
FCM.onMessage((message=>{
console.log('new message',message);
}));
FCM.getInitialNotification().then(notif => {
console.log('initial message',notif);
});
function startApp() {
Navigation.startSingleScreenApp(/..../);
}
startApp();
AndroidManifest.xml
<!-- FCM -->
<service
android:name="io.invertase.firebase.messaging.MessagingService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="io.invertase.firebase.messaging.InstanceIdService" android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<!-- If you would like to schedule local notifications then you also need to add the following:-->
<receiver android:name="io.invertase.firebase.messaging.RNFirebaseLocalMessagingPublisher"/>
<receiver android:enabled="true" android:exported="true" android:name="io.invertase.firebase.messaging.RNFirebaseSystemBootEventReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.QUICKBOOT_POWERON"/>
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity android:launchMode="singleTop" /......./ />
1 ответ
Причина была в том, что в моем телефоне Xiaomi Red Note 4X по умолчанию в опции разработчика была выбрана опция "Не сохранять действия", которая убивает приложение, когда оно находится в фоновом режиме, что делает невозможным получение каких-либо уведомлений. Dsable этот вариант, и он отлично работает.