我觉得很奇怪,虽然canOpenURL(myURL)是假的,而open(myURL)完全重定向到了我想要的应用程序。我在这里做错什么了?

override func viewDidAppear(_ animated: Bool) {
    let instagramUrl = URL(string: "instagram://app")!
    print(UIApplication.shared.canOpenURL(instagramUrl))    // false
    if UIApplication.shared.canOpenURL(instagramUrl) {
        UIApplication.shared.open(instagramUrl, options: [:], completionHandler: nil)
    } else {
        UIApplication.shared.open(URL(string: "http://instagram.com")!, options: [:], completionHandler: nil)    // Instagram successfully launched???
        // UIApplication.shared.open(instagramUrl, options: [:], completionHandler: nil)        // This works too
        print("Open failed.")    // Open failed.
    }
}

慰问:
-canOpenURL:URL失败:“instagram://app”-错误:“此应用不允许查询方案instagram”
[MC]System group.com.apple.configurationprofiles的系统组容器路径是/private/var/containers/Shared/systemgroup/systemgroup.com.apple.configurationprofiles
[MC]读取公共有效用户设置。
我的信息列表如下
swift - “canOpenURL”的行为很奇怪……还是我吗?-LMLPHP

最佳答案

您必须将URL方案包含到LSApplicationQueriesSchemes中,而不是URL本身。
因此,与当前LSApplicationQueriesSchemes中的所有项不同,您只需要一个值为instagram的项,它就可以工作了。

关于swift - “canOpenURL”的行为很奇怪……还是我吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51348865/

10-13 04:01