您可能认为这是一个重复的问题,但事实并非如此,我完全知道有关该问题的所有答案canOpenURL
及其在 iOS 9 上的注意事项,但这是我的问题:
我正在尝试检查我的设备上是否安装了特定的应用程序(均由我开发)。
我已宣布该计划AppA
as:
<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>
Now, in 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
from AppB
它会毫无问题地工作!
// Works alright
UIApplication.sharedApplication().openURL(appAURL!)
我不明白为什么!