最近在做一个国际化的项目,需要用到国外的支付APP。但是这个APP没有像微信,支付宝那样提供SDK。我只能将我的老pro,含泪升级到最新版本,使用工具获取到了这个APP的跳转链接
ovo://
但是问题来了:因为苹果的审核机制,如果用户没有安装OVO这款应用的时候,我们是不能显示的,所以要对其进行判断。代码如下:
BOOL canOpen = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@\"ovo://\"]
然后我就理所当然的就没去管他了,因为我的手机下载了OVO。但是后来测试去测试的时候,他的手机没有安装,这个支付按钮居然还显示,显然没有判断到,所以我就查了一下,很坑,这里给出解决办法,按照这个办法应该能解决你的问题:
- 配置
Info.Plist
里面的
LSApplicationQueriesSchemes
,添加一行,这里我的链接是
ovo://
,所以这里填的是
ovo
,注意去掉
://
-
URL types
这里面如果你配置过了,请删掉!!!不要删除微信,支付宝等配置,仅仅删除你配置的相关的就好。我之前也一直认为这里和上面的配套配置的,其实并不是,像微信,支付宝之所以要配套,使我们集成了SDK,这里面是用于从微信,支付宝跳回来的标识。这里推荐一篇文章,关于URL Schemes的解释链接: URL Schemes 使用详解.
一般这样就可以成功了,但是!我走到这一步还是判断不对。后来发现,我的Info.Plist文件有问题:
这里的Info.Plist里面要勾选,勾选之后运行项目,运行项目,如果没报错那就应该解决了。如果报错,大概率是报:
- Multiple commands produce xxx
- Target ‘’ (project \’’) has copy command from xx
- Target ‘’ (project \’’) has process command with output xxx
解决办法:点击项目->Build Phases ->Copy Bundle Resources,删除Info.Plist文件即可。
重新运行项目,就可以正常的判断到是否可以打开某一个应用了,当然前提是你这个链接是对的。
有一个很奇怪的问题,当我重新打开项目,去看Info.Plist文件的时候,刚刚那个打钩的地方,又没有打钩了。。。但是功能却已经完成了。。。不是很理解。。。待深入