react-native PushNotificationIOS-如何确定是从前台还是后台调用通知处理程序

时间:2019-03-06 17:41:34

标签: react-native react-native-ios react-native-push-notification

根据react-native PushNotificationIOS文档(未在插件中使用),我在AppDelegate中具有以下代码,对didReceiveRemoteNotification进行了一些细微调整,以便它可以处理前台和后台的通知,但是,我无法告诉是从哪里处理的,我的处理程序需要知道,因为它做的是不同的事情。

有什么想法可以获取这些信息吗?

// Required to register for notifications
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
 {
  [RCTPushNotificationManager didRegisterUserNotificationSettings:notificationSettings];
 }
 // Required for the register event.
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
 {
  [RCTPushNotificationManager didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
 }
 // Required for the notification event. You must call the completion handler after handling the remote notification.
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
 {
  [RCTPushNotificationManager didReceiveRemoteNotification:userInfo];
  completionHandler(UIBackgroundFetchResultNewData);
 }
 // Required for the registrationError event.
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
 {
  [RCTPushNotificationManager didFailToRegisterForRemoteNotificationsWithError:error];
 }
 // Required for the localNotification event.
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
 {
  [RCTPushNotificationManager didReceiveLocalNotification:notification];
 }

1 个答案:

答案 0 :(得分:1)

您想在JS端还是本机端知道。如果在本地,请参考此Detect if the application in background or foreground in swift。在JS端,您可以使用react-native AppState API。 https://facebook.github.io/react-native/docs/appstate