您可能认为这是一个重复的问题,但事实并非如此,我完全了解有关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:网址失败:&#34; XYZ://&#34; - 错误:&#34;此应用不是 允许查询方案XYZ&#34;
然而,如果我尝试从AppA
开启AppB
,它就可以毫无问题地工作!
// Works alright
UIApplication.sharedApplication().openURL(appAURL!)
我无法弄明白为什么!
答案 0 :(得分:0)
我找到了解决自己问题的方法。我在这里回答它,而不仅仅是删除我的问题,因为它可能有一天会帮助某人。
这里的问题是我正在尝试为其他开发人员开发一个框架,我有一个测试应用程序,我用来检查我的框架是否一切正常。我在框架目标中设置了LSApplicationQueriesSchemes
值,而不是实际的测试应用程序。 SO:
您需要在应用目标的info.plist
中设置白名单值