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

来源:互联网 发布:pp助手mac 编辑:程序博客网 时间:2024/06/15 05:22

史上最全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 方式打开,粘贴进去
<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></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了,我可以下班回家了!


原创粉丝点击