У меня есть приложение React Native, где я пытаюсь получить тихое уведомление iOS push, отправленное обработчику в JavaScript.
Поведение, которое я вижу, это то, что функция didReceiveRemoteNotification
в AppDelegate
вызывается, но мой обработчик в JavaScript не вызывается, если приложение не находится на переднем плане или недавно закрыто.
То, что меня смущает, очевидно, что приложение пробуждается и имеет функцию didReceiveRemoteNotification
, но вызов [RCTPushNotificationManager didReceiveRemoteNotification:notification]
, похоже, ничего не делает.
Кроме того, если я открою приложение после получения уведомления, я вижу, что в этой точке вызывается обработчик React Native.
Моя функция didReceiveRemoteNotification
выглядит так:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)notification
{
NSLog(@"didReceiveRemoteNotification");
[RCTPushNotificationManager didReceiveRemoteNotification:notification];
}
В корневой части моего приложения React Native у меня есть следующее:
componentDidMount() {
AppState.addEventListener('change', this.handleAppStateChange);
PushNotificationIOS.addEventListener('notification', (notification) => {
console.log("notification recieved");
})
}
handleAppStateChange(currentAppState) {
console.log(currentAppState);
}
Я отправляю push-уведомление с использованием AWS SNS со следующим сообщением:
{
"APNS_SANDBOX":"{\"aps\":{\"content-available\":\"1\"}}"
}
Вот журнал из XCode:
2016-04-20 10:38:01.255 [info][tid:com.facebook.React.JavaScript] inactive
2016-04-20 10:38:01.986 [info][tid:com.facebook.React.JavaScript] background
2016-04-20 10:38:17.279 test[4056:1383261] didReceiveRemoteNotification
2016-04-20 10:38:17.284 [info][tid:com.facebook.React.JavaScript] notification recieved
2016-04-20 10:44:56.330 test[4056:1383261] didReceiveRemoteNotification
2016-04-20 10:44:56.332 [info][tid:com.facebook.React.JavaScript] notification recieved
2016-04-20 10:46:07.091 test[4056:1383261] didReceiveRemoteNotification
2016-04-20 10:49:30.039 [info][tid:com.facebook.React.JavaScript] notification recieved
2016-04-20 10:49:30.639 [info][tid:com.facebook.React.JavaScript] active
В этом журнале 3 push-уведомления отправляются. Полученные в 10:38 и 10:44 оба правильно назвали JavaScript. Тем не менее, тот, который был получен в 10:46, не вызывал обработчика в JavaScript, пока я не открыл приложение в 10:49.
Есть ли что-нибудь, что я могу сделать, чтобы убедиться, что вызов моего собственного кода React встречается даже при не запущенном приложении?