在为DeepLinking调用OpenURL时推送viewcontroller

时间:2016-04-19 10:13:20

标签: ios objective-c deep-linking openurl

我需要在打开时推送一个viewcontroller

- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url
        options:(nonnull NSDictionary<NSString *,id> *)options
调用

方法。

当app在后台时,它工作正常。但是当我杀死了应用程序并点击链接时,它就没有被推送。我在didFinishLaunch方法中设置了标签栏控制器。会在openURL之后调用完成吗?

2 个答案:

答案 0 :(得分:0)

如果您的应用程序未运行,您将使用网址Launch Option Key拨打application:didFinishLaunchingWithOptions:方法。

要处理它,请检查启动选项中的UIApplicationLaunchOptionsURLKey键并提取URL:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if (launchOptions[UIApplicationLaunchOptionsURLKey] != nil) {
        // Opened from an URL
    }
}

答案 1 :(得分:0)

我明白了。这是因为applink启动应用程序时会调用appdelegate didFinishLaunch方法。我正在使用FBSDK并返回

return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];

如果我的自定义方案,这将返回false。所以我通过检查我的URL方案明确地调用它。

if ([launchURL.scheme isEqualToString:@"urlScheme"]) {
[self application:application openURL:launchURL sourceApplication:sourceApplication annotation:@""]; }

在返回didFinishLaunch之前放上上面的代码解决了我的问题。