"canOpenURL" 表现得很奇怪……我是吗?

"canOpenURL" is acting weird... or am I?

我觉得很奇怪,虽然 canOpenURL(myURL) 是 false 而 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" - 错误:"This app is not allowed to query for scheme instagram"

[MC] systemgroup.com.apple.configurationprofiles 路径的系统组容器是 /private/var/containers/Shared/SystemGroup/systemgroup。com.apple.configurationprofiles

[MC] 从 public 有效的用户设置中读取。

我的Info.plist如下

您必须将您的 URL 方案 包含在 LSApplicationQueriesSchemes 中,而不是 URL 本身。

因此,您不需要当前 LSApplicationQueriesSchemes 中的所有项目,您只需要 一个 instagram 的项目即可。