在iOS 9中,应用程序无法使用canOpenURL
来检查是否安装了应用程序。
如果你的(iOS 9.0 或更高版本)应用使用方案调用此方法 尚未声明,该方法返回 false,无论是否 设备上安装了适用于该方案的应用程序。
但我想知道 Facebook 应用程序如何在未安装应用程序的情况下成功将用户定向到应用商店,或者如果已安装打开目标应用程序!
Facebook无法在LSApplicationQueryScheme中列出所有应用程序!
谢谢
来自canOpenURL:
文档:
与此方法不同,openURL: 方法不受 UIDefaultLaunch情节提要要求:如果应用处理方案 安装在设备上,openURL: 方法有效,无论还是 不是你已经声明了这个方案。
因此,他们执行以下操作:
1)尝试使用符合fb的url调用openURL:
,例如fb[app-id]://authorize...
直到它返回true(我已经检查过了,他们调用了很多url,例如fb[app-id]lite
,fb[app-id]mac
,fb[app-id]paid
,fb[app-id]green
等)。如果成功,将打开目标应用。
2)如果调用openURL:
没有成功,他们尝试使用http://itunes.apple.com/app/...
URL调用canOpenURL:
,然后使用相同的URL调用openURL:
。用户被重定向到应用商店。