检查iOS 9和iOS 10上已安装的应用程序
我正在检查一个用户是否安装了几个应用程序。我需要它在ios9和iOS10上工作。 我首先在ios9上进行测试,检查iOS 9和iOS 10上已安装的应用程序,ios,swift,url,swift3,Ios,Swift,Url,Swift3,我正在检查一个用户是否安装了几个应用程序。我需要它在ios9和iOS10上工作。 我首先在ios9上进行测试,schemeAvailablefunc返回true,即使应用程序通过了测试 设备上未安装 func schemeAvailable(scheme: String) -> Bool { if let url = URL(string: scheme) { return UIApplication.shared.canOpenURL(url) } ret
schemeAvailable
func返回true,即使应用程序通过了测试
设备上未安装
func schemeAvailable(scheme: String) -> Bool {
if let url = URL(string: scheme) {
return UIApplication.shared.canOpenURL(url)
}
return false
}
我已将以下内容添加到我的info.plist,即我将检查的应用程序已安装:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>app1</string>
<string>app2</string>
</array>
LSApplicationQueriesSchemes
附件1
附件2
在我的项目的“信息”选项卡中,我添加了两种url类型,并为每种类型插入了标识符和url方案。您不必在应用程序列表中添加其他应用程序的方案。如果您这样做,您的应用程序将成为该方案的URL响应程序,并且始终为真 canOpenURL方法未在上标记为已弃用 我复制了一个代码片段,其中的一部分代码用于通过自定义方案打开应用程序url
/**
Abre los perfiles de la app en las distintas redes sociales.
- Parameters:
- url: Esquema personalizado de la app
- secondaryURL: Si la app no está presente en el dispositivo abrimos su version web (twitter, facebook, etc...)
*/
func open(_ url: String, secondaryURL: String? = nil) -> Void
{
if let url = URL(string: url), UIApplication.shared.canOpenURL(url)
{
UIApplication.shared.open(url, completionHandler: nil)
}
else if let secondaryURL = secondaryURL, let url = URL(string: secondaryURL), UIApplication.shared.canOpenURL(url)
{
UIApplication.shared.open(url, completionHandler: nil)
}
else
{
print("No se puede hacer nada de nada.\r\napp_url: \(url)")
}
}
这里有一个例子。我尝试打开twitter应用程序,如果没有,打开Safari并显示twitter网页
@IBAction private func handleTwitterButtonTap(sender: UIButton) -> Void
{
let twitter_app_url: String = "twitter://user?screen_name=GetPomodoroApp"
let twitter_web_url: String = "https://twitter.com/GetPomodoroApp"
self.open(twitter_app_url, secondaryURL: twitter_web_url)
}
听起来你并不是所有的注册都是正确的。您的App1和App2都需要URL标识符和方案,并且“想要启动App1和App2”的应用程序必须定义
LSApplicationQueriesSchemes
例如
这在“App1”中
这在“App2”中
这在“LauncherApp”中
然后,在“LauncherApp”中,我可以执行以下操作:
let s = "DMCApp1://TestMe"
let customURL: URL = URL(string: s)!
if UIApplication.shared.canOpenURL(customURL) {
print("YES - I can open App1 !!!")
UIApplication.shared.open(customURL, options: [:], completionHandler: nil)
} else {
print("NO - App1 is not available.")
}
@dmorrow的可能重复我正在解释ios9的一个问题
canOpenURL
不受欢迎您可以共享实际的url方案-不是app1
和app2
?@dmorrow com.companyname.app1,com.companyname.app2。它们尚未在商店中发布。它们是本地应用如果我在项目的“信息”选项卡中删除了两种url类型、标识符和url方案,则url“app1://”-error:“(null)”失败,url“app2://”-error:“(null)”失败,即使app2已安装到hi@user2363025。我添加了一个例子。这个答案令人困惑。方案必须在LSApplicationQueriesSchemes
下列出。方案必须为您自己的应用程序(您自己的方案)列出。但是没有注册外部计划,比如twitter、facebook@rmaddy@Adolfo那是不对的。与canOpenURL
一起使用的任何URL方案必须列在LSApplicationQueriesSchemes
下。这是iOS 9以来的一项要求。