【发布时间】:2021-04-02 14:22:32
【问题描述】:
我正在尝试检查用户手机上安装了哪些默认应用程序。
我将应用程序名称添加到 LSApplicationQueriesSchemes 数组字符串(例如计算器的“calc”),然后使用此函数进行检查:
func isAppInstalled(_ appName:String) -> Bool{
let appScheme = "\(appName)://app"
let appUrl = URL(string: appScheme)
if UIApplication.shared.canOpenURL(appUrl! as URL){
return true
} else {
return false
}
}
并像使用它
let result = isAppInstalled("calc")
但在控制台中收到此错误
-canOpenURL:URL 失败:“calc://app” - 错误:“操作无法完成。(OSStatus 错误 -10814。)”
这意味着应用程序未安装。此代码适用于 appstore 应用、书籍、Apple tv、facetime、消息等,但不适用于计算器、时间应用、指南针、联系人、提示。
我的代码有什么问题?或者也许苹果改变了这个应用程序方案?在 iOS 14 设备上测试。
【问题讨论】:
-
您现在认为该 URL 有效吗?在 Safari 中输入它只会出现错误。并非所有应用都有 URL 方案。
-
@Paulw11 URL 有效。我在 safari 中尝试“calc://app” url,在 ios 14 上完美运行。