iOS - 如果应用程序处于非活动状态,深度链接不起作用



我正在为ios实现深度链接->反应自然。

我知道如果应用程序处于活动状态,就会触发方法didFinishLaunchingWithOptions。但将这些代码放入应用程序中无助于传递深度链接

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
if(launchOptions) {
NSDictionary *userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
NSURL *siteURL = [NSURL URLWithString:[userInfo objectForKey:@"url"]];
if(siteURL) {
//      [self application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:^(UIBackgroundFetchResult result){}];
//      return [self application:application openURL:siteURL options:launchOptions];
return [RCTLinkingManager application:application openURL:siteURL options:launchOptions];
}
}
return Yes;
}

网站URL是有效的,但我已经尝试了以上方法,但都不起作用。

这是openURL方法,如果应用程序处于非活动状态,则永远不会调用该方法

- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
NSLog(@"123456xx %@",url.absoluteString);
NSString *myUrl = url.absoluteString;
if ([myUrl containsString:@"fb***"]) {
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
];
} else {
return [RCTLinkingManager application:application openURL:url options:options];
}
//  return [RCTLinkingManager application:application openURL:url options:options];
}

didReceiveRemoteNotification方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSLog(@"123456 did receive");
// redirect while got url from notif
NSString *urlstr = (NSString*)[userInfo objectForKey:@"url"];
if(urlstr) {
NSLog(@"123456 did receive url %@", urlstr);
NSURL *url = [NSURL URLWithString:urlstr];
[RCTLinkingManager application:application openURL:url options:@{}];
}

[RNCPushNotificationIOS didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}

您还需要实现openURL委托方法,如下所示:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
// handle deeplinks here.
}

从那里你可以处理URL的打开,即使你的应用程序是";处于活动状态";正如你所说。

最新更新