【问题标题】:This app is not allowed to query for scheme XYZ://此应用不允许查询方案 XYZ://
【发布时间】:2016-04-04 02:11:09
【问题描述】:

您可能认为这是一个重复的问题,但事实并非如此,我完全了解 SO 关于 canOpenURL 及其在 iOS 9 上的警告的所有答案,但这是我的问题:

我正在尝试检查我的设备上是否安装了特定应用(均由我开发)。 我已将AppA 上的方案声明为:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>com.my.company.id</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>XYZ</string>
        </array>
    </dict>
</array>

在另一个应用程序上,AppB 我已在 info.plist 中添加:

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>XYZ</string>
</array> 

现在,在AppB 中,我正在尝试找出是否像这样安装了AppA

     internal static let appAScheme = "XYZ://"

 static func  AppAInstalled() -> Bool {

    let appAURL = NSURL(string: appAScheme)

    return UIApplication.sharedApplication().canOpenURL(appAURL!)


}

它总是返回

-canOpenURL:URL 失败:“XYZ://” - 错误:“此应用不是 允许查询方案XYZ"

但是,如果我尝试从 AppB 打开 AppA,它将毫无问题!

// Works alright
UIApplication.sharedApplication().openURL(appAURL!)

我不知道为什么!

【问题讨论】:

    标签: swift ios9 uiapplication custom-url xcode7.2


    【解决方案1】:

    我找到了解决我自己问题的方法。我在这里回答它,而不是仅仅删除我的问题,因为它有一天可能会对某人有所帮助。

    这里的问题是我正在尝试为其他开发人员开发一个框架,我有一个测试应用程序,我正在使用它来检查我的框架是否一切正常。我在框架目标内设置LSApplicationQueriesSchemes 值,而不是实际的测试应用程序。所以:

    您需要在应用目标的 info.plist 中设置白名单值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-28
      • 2015-12-19
      • 1970-01-01
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 2019-01-28
      相关资源
      最近更新 更多