您可能认为这是一个重复的问题,但事实并非如此,我完全了解 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”
但是,如果我尝试从中打开AppA
它将AppB
毫无问题!
// Works alright
UIApplication.sharedApplication().openURL(appAURL!)
我想不通为什么!