Xcode 史上最全canOpenURL: failed问题解决办法

由于苹果在IOS9.0开始规定在App中使用Https协议与服务器进行数据交互,导致很多原本正常的功能,莫名的就崩掉了。查看控制台 就会看到各种错误提示,例如:-canOpenURL: failed for URL: "weixin://" - error:This app is not allowed to query for scheme weixin";  canOpenURL: failed for URL: "wechat://" - error:This app is not allowed to query for scheme wechat";  App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file 等!

         不要慌张,既然有提示按照提示处理即可,对症下药方能药到病除。

1、开启Http 支持,添加ATS配置

                  为了方便,可直接拷贝如下代码 右键 Info.plist 使用 Socure code 方式打开,粘贴进去

 
  1. <key>NSAppTransportSecurity</key>

  2. <dict>

  3. <key>NSAllowsArbitraryLoads</key>

  4. <true/>

  5. </dict>     

2、canOpenURL: failed 问题处理

      这里是本文的核心,请认真细看。App中常见的 使用QQ、微博等第三方登录或者分享到 朋友圈、QQ空间等,经常会遇到 canOpenURL: failed 问题,这个问题其实就是 sso白名单设置问题。在友盟官方有章节着重描述这个问题。可参考友盟《配置sso白名单》 ,看到这里有人就笑了。这么简单按照上面配置好了,分分钟妥妥的拿下。确实,在一般情况下按照上面两个步骤之后,问题基本就拿下了。但是……然并卵,还是 报 canOpenURL: failed 错误

  我需要一把羽毛扇保持冷静!!!大胆猜想,小心求证。一阵抓狂后,又仔仔细细检查了项目配置果不然,发现了几个平时基本没注意的问题。第一个坑 Info.plist 在 Target Membership 中没有勾选,如下图:

一定要勾选,否则配置不会生效。勾选后,运行发现还是没屌用。此刻心中一万头草泥马奔腾而过……但问题还的解决啊。排查继续中,见证奇迹的时刻到了:居然是 Info.plist File 中文件路径是空的,是空的,空的,空,的……

只能说运气太差,这种问题也会被我碰到。正常情况这里是 Info.plist 的文件路径,新建项目默认就有了不需要去手动填写。万一是空的,你需要填写对应的地址,格式为:项目名/Info.plist或者项目根目录/项目名/Info.plist。 例如:Anthropometry/Info.plist 或者 $(SRCROOT)/Anthropometry/Info.plist 注意:Anthropometry 是我的项目,此处需要根据各自项目做修改。正确后可以 在 General 选项卡看到配置的信息,没有显示则说明地址不对。两者对比图如下:

都配置完成后,终于大功告成。运行下,看看效果。神马???还是不行!。。。我快要奔溃了,左思右想莫非哪里还有问题!突然看到 Info 选项 里面 没有 配置sos白名单。如下图核对后,加上相应配置。终于。。。终于。。OK了,我可以下班回家了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值