Mam aplikację React Native, w której próbuję uzyskać ciche powiadomienie push iOS wysłane do programu obsługi w języku JavaScript.Ciche powiadomienie push w systemie iOS z React Native, gdy aplikacja jest w tle
Zachowanie, które widzę, polega na tym, że wywoływana jest funkcja didReceiveRemoteNotification
w nazwie, ale mój program obsługi JavaScript nie zostaje wywołany, chyba że aplikacja znajduje się na pierwszym planie lub została niedawno zamknięta.
Chodzi mi o to, że jestem zdezorientowany, jest to oczywiście, że aplikacja jest budzona i ma funkcję didReceiveRemoteNotification
, ale wtedy połączenie z [RCTPushNotificationManager didReceiveRemoteNotification:notification]
nie wydaje się nic.
Ponadto, jeśli otworzę aplikację po otrzymaniu powiadomienia, widzę w tym miejscu wywołanie funkcji React Native.
Moja didReceiveRemoteNotification
funkcja wygląda tak:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)notification
{
NSLog(@"didReceiveRemoteNotification");
[RCTPushNotificationManager didReceiveRemoteNotification:notification];
}
W składnik główny Moje React Native app mam to:
componentDidMount() {
AppState.addEventListener('change', this.handleAppStateChange);
PushNotificationIOS.addEventListener('notification', (notification) => {
console.log("notification recieved");
})
}
handleAppStateChange(currentAppState) {
console.log(currentAppState);
}
przesyłam powiadomienia push przy użyciu AWS SNS z następujących wiadomość:
{
"APNS_SANDBOX":"{\"aps\":{\"content-available\":\"1\"}}"
}
Oto dziennik z 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
W tym dzienniku są wysyłane 3 powiadomienia push, które zostały wysłane. Te, które otrzymałem o 10:38 i 10:44, obydwa nazywają się poprawnie. Jednak ten, który został odebrany o 10:46, nie wywołał obsługi w JavaScript, dopóki nie otworzyłem aplikacji o 10:49.
Czy jest coś, co mogę zrobić, aby zapewnić, że połączenie z moim React Native Code będzie miało miejsce, nawet jeśli aplikacja nie działa?
Świetnie, wydaje się, że udało się to rozwiązać! – DownChapel