iOS openurl深层链接崩溃应用和设备

时间:2015-01-30 12:49:18

标签: ios objective-c iphone deep-linking openurl

我已设置深层链接以使用我的应用,回复应用代理中的以下功能:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation;

如果之前已经打开了应用,那么您可以打开Safari的链接,例如:

myapp://foo/bar

它可以毫无问题地打开应用程序并处理链接。

但是,如果您杀死应用程序(使用应用程序切换器)然后从Safari打开相同的链接,它将在模拟器中使应用程序崩溃或在运行iOS 8.1.3的iPhone 5上崩溃设备。

但我不明白为什么?

我已尝试从应用代理中删除application:sourceApplication:annotation:功能,但如果应用未运行,它仍然会崩溃。 (如果它正在运行它打开应用程序正常)。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

找了几个小时后,这对我有用了

if([[UIApplication sharedApplication] canOpenURL:url]){            
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            [[UIApplication sharedApplication] openURL:url];
        });
    }

答案 1 :(得分:0)

试试这个。

ios 11的开放URL(深层链接)更新

func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool
    {

        if url.absoluteString.contains("ABC") {
            NotificationCenter.default.post(Notification.init(name: Notification.Name(rawValue: "reloadData")))
            return true
        }
        else // facebook
        {
            return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, options: options)

            //return true
        }
        //return true
    }