iOS10 canOpenURL:返回结果不正确的坑

最近在做一个国际化的项目,需要用到国外的支付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文件的时候,刚刚那个打钩的地方,又没有打钩了。。。但是功能却已经完成了。。。不是很理解。。。待深入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值