在iOS 9中,应用程序无法使用canOpenURL来检查应用程序是否已安装。
如果您的(iOS 9.0或更高版本)应用程序使用未声明的方案调用此方法,则该方法将返回false,无论该方案的适当应用程序是否已安装在设备上。
但我想知道,如果应用程序没有安装,facebook应用程序是如何成功地引导用户应用程序的,或者如果安装了应用程序,就打开目标应用程序!
facebook不能列出LSApplicationQueriesSchemes中的所有应用程序!
谢谢
发布于 2016-09-17 12:17:34
来自canOpenURL: 文档
与此方法不同,openURL:方法不受UIDefaultLaunchStoryboard要求的限制:如果在设备上安装了处理方案的应用程序,则无论您是否声明了该方案,openURL:方法都能工作。
因此,他们所做的如下:
1)尝试用符合fb的urls调用openURL:,例如fb[app-id]://authorize...,直到它返回true为止(我检查了它,它们调用了很多urls,例如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:。用户被重定向到App。
https://stackoverflow.com/questions/37345597
复制相似问题