dav*_*vid 12 url-scheme ios ios9
在iOS 9中,应用程序无法用于canOpenURL检查是否安装了应用程序.
如果您的(iOS 9.0或更高版本)应用程序使用您尚未声明的方案调用此方法,则无论设备上是否安装了适用于该方案的应用程序,该方法都将返回false.
但我想知道如果没有安装应用程序,facebook app如何成功将用户引导到appstore,或者如果安装了目标应用程序则打开目标应用程序!
facebook无法列出LSApplicationQueriesSchemes中的所有应用程序!
谢谢
来自canOpenURL: 文档:
与此方法不同,openURL: 方法不受 UIDefaultLaunchStoryboard 要求的约束:如果设备上安装了处理方案的应用程序,则 openURL: 方法将起作用,无论您是否已声明该方案。
因此,他们执行以下操作:
1)尝试使用fb兼容的url进行调用,openURL:例如直到它返回true(我已经检查过,他们正在fb[app-id]://authorize...调用很多url,例如fb[app-id]lite,,,,等)。如果成功,目标应用程序将打开。fb[app-id]macfb[app-id]paidfb[app-id]green
2) 如果调用没有成功openURL:,他们会尝试使用canOpenURL:url进行调用http://itunes.apple.com/app/...,然后openURL:使用相同的 url 进行调用。用户被重定向到 App Store。