zoukankan      html  css  js  c++  java
  • 【iOS开发】canOpenURL: failed for URL


    控制台输出


    如图是在我启动一个 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"


    set Bitcode to NO


    去你的 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


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

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


    Info.plist 中设置 ATS
    <key>NSAppTransportSecurity</key>
    <dict>
    <!--Include to allow all connections (DANGER)-->
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    </dict>

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



    文/KyXu(简书作者)
    原文链接:http://www.jianshu.com/p/e38a609f786e
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    CentOs 7.3下ELK日志分析系统搭建
    01 使用Git基本方法
    02 网页换肤
    运行代码
    01 使用JavaScript原生控制div属性
    excel 删除了自动保存的文件,如何恢复
    Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法!
    eclipse启动错误
    centos已安装gcc 4.8.2,gcc -version 也是4.8.2 但是被其他工具调用时,显示未调用4.8.2
    centos 6.4安装cmake
  • 原文地址:https://www.cnblogs.com/mafeng/p/5691660.html
Copyright © 2011-2022 走看看