iOS开发-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query fo(代

Posted 丑蛋蛋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query fo(代相关的知识,希望对你有一定的参考价值。

技术分享


如图是在我启动一个 Xcode 7 + ios 9 的 App 之后,控制台的输出。

这在 Xcode 6.4 + iOS 8 时,是不会有的情况,原因是【为了强制增强数据访问安全, iOS9 默认会把所有从NSURLConnectionCFURLNSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnectionCFURLNSURLSession发出的 HTTP 请求统一采用 TLS 1.2(SSL 3.1) 协议。】

下面说解决方案:

①如果你的输出信息是-canOpenURL: failed for URL: "kindle://home" - error: "This app is not allowed to query for scheme kindle"

技术分享

 

去你的 target 里面的 Build Settings 下的 Enable Bitcode,把它设置成 NO,这不一定会阻挡你的控制台继续输出这条信息,但是可以保证你的 App 正常运行。

②如果你的输出信息是 xxxx - error: "This app is not allowed to query for scheme xxxx"
(在这里因为我的 App 集成了分享到QQ、微信、微博的功能,xxxx部分我看到了 mqq、wechat、sinaweibosso 等多条信息)

技术分享

去 Info.plist 里面建立一个叫 LSApplicationQueriesSchemes 的 Array,把你在xxxx部分看到的词汇一个一个填进去,直至控制台没有任何相关输出即可。

③关于其他通过 WebView 访问 http 网址引发的控制台报错信息

技术分享

 

技术分享


如之前所说,Apple 希望我们访问相对安全的 HTTPS,所以在你需要访问 HTTP 时,
虽 Apple 不建议,但可通过在 Info.plist 中声明如上图所示的内容,倒退回不安全的网络请求,这样依然能让 App 访问指定 HTTP,甚至任意的 HTTP。

以上是关于iOS开发-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query fo(代的主要内容,如果未能解决你的问题,请参考以下文章

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

适配iOS9时候,qq和微信第三方登陆一直失败-canOpenURL: failed for URL:

社交分享:-canOpenURL: failed for URL: "weixin://app/*************/" - error: "This app is

-canopenurl:failed for url:怎么解决

`UIApplication.shared.canOpenURL(:)` 方法在 iOS 11.4(仅限 iPad 设备)上不起作用?

iOS 14 canOpenURL