Я реализовал приложение на реагирующем языке, которое отправляет уведомления pu sh через Firebase. В большинстве случаев он работает хорошо, но иногда уведомления pu sh не принимаются устройством (в основном iOS 13 устройств).
Для устройств, получающих мои уведомления pu sh правильно, onNotification запускается каждый раз (передний план и фон).
Для устройств, не получающих мои уведомления pu sh, onMessage запускается (только на переднем плане).
пакет. json
"react-native-firebase": "^5.6.0"
Podfile
pod 'Firebase/Core', '~> 6.19.0'
pod 'Firebase/Functions', '~> 6.19.0'
pod 'Firebase/Messaging', '~> 6.19.0'
pod 'Firebase/Auth', '~> 6.19.0'
Чтобы проверить мои уведомления pu sh, я отправляю его через POSTMAN, используя API Firebase, с текущим Полезная нагрузка:
{
"to" : "my_FCM_token",
"priority" : "high",
"notification" : {
"body" : "Body TEST",
"title": "TEST Notification",
"vibrate": 1,
"sound": 1
},
"data" : {
"key" : "value"
}
}
Обратите внимание, что это всегда возвращает мне успех
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// FIREBASE CONFIG
[FIRApp configure];
// SETTING ROOT VIEW CONTROLLER
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"MyModule"
initialProperties:nil];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
[RNSplashScreen show];
return YES;
}
Приложение. js
async componentDidMount() {
firebase.messaging().hasPermission().then(enabled => {
if (enabled) {
firebase.messaging().getToken().then(token => {
global.token = token;
})
} else {
firebase.messaging().requestPermission()
.then(() => {
alert("Permission Accepted", error)
})
.catch(error => {
alert("Permission Denied", error)
});
}
});
this.initialNotificationListener = firebase.notifications().getInitialNotification().then((notificationOpen: NotificationOpen) => {
alert("Getting initial Notification")
});
this.notificationOpenedListener = firebase.notifications().onNotificationOpened((notificationOpen: NotificationOpen) => {
alert("onNotificationOpened triggered")
});
this.notificationListener = firebase.notifications().onNotification((notification: Notification) => {
alert("onNotification triggered")
});
this.onMessageListener = firebase.messaging().onMessage(async (remoteMessage) => {
alert("onMessage triggered")
});
}
componentWillUnmount() {
this.notificationOpenedListener();
this.notificationDisplayedListener();
this.notificationListener();
this.initialNotificationListener();
this.onMessageListener();
}
Любая помощь будет оценена, спасибо :)