开展IOS反应原生项目。
当应用程序为DEAD并收到推送通知时 -
我希望应用根据通知的有效负载导航到其他页面。 当应用程序处于前台或后台时 - 一切正常。 当应用程序被杀死时 - 应用程序就会自行打开。
下面添加的是我的Appdelegate.m代码。 我正在捕获通知并将其记录到控制台,但我不知道如何将其发送到本地反应。使用RN 0.46
expo 19(与ExpoKit分开)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
_window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
_window.backgroundColor = [UIColor whiteColor];
[[ExpoKit sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
_rootViewController = [ExpoKit sharedInstance].rootViewController;
_window.rootViewController = _rootViewController;
[_rootViewController loadReactApplication];
[_window makeKeyAndVisible];
if ([launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]) {
NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification) {
//logs the notification's payload
NSLog(@"app recieved notification from remote%@",notification);
} else {
NSLog(@"app did not recieve notification");
}
}
return YES;
}
答案 0 :(得分:0)
要实现此类行为,您需要为您的应用实施某种deep linking。这样,您可以在您的react-native应用程序中侦听有效负载并导航到正确的屏幕。 react-navigation和react-native-navigation有自己的深层链接实现。
来自react-native docs,
处理深层链接
如果您的应用是从注册到您应用的外部网址启动的 您可以使用
从任何组件访问和处理它
componentDidMount() {
Linking.getInitialURL().then((url) => {
if (url) {
console.log('Initial url is: ' + url);
}
}).catch(err => console.error('An error occurred', err));
}