iOS9 白名单问题 -canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"

【iOS开发】-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"

Collection/Bookmark/Share for width under 768px

控制台输出

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

这在 Xcode 6.4 + iOS 8 时,是不会有的情况,原因是【为了强制增强数据访问安全, iOS9 默认会把所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 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。

时间: 2024-11-25 11:07:41

iOS9 白名单问题 -canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"的相关文章

【iOS开发】-canOpenURL: failed for URL: &quot;xx&quot; - error:&quot;This app is not allowed to query for scheme xx&quot;

如图是在我启动一个 Xcode 7 + iOS 9 的 App 之后,控制台的输出. 这在 Xcode 6.4 + iOS 8 时,是不会有的情况,原因是[为了强制增强数据访问安全, iOS9 默认会把所有从NSURLConnection . CFURL . NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnection . CFURL . NSURLSession发出的 HTTP 请求统一采用 TLS 1.2(

社交分享:-canOpenURL: failed for URL: &quot;weixin://app/*************/&quot; - error: &quot;This app is not allowed to query for scheme weixin&quot;

升级到iOS9后,微信,QQ,微博等社交软件的分享都失效了,控制台默默地打印了这条信息: This app is not allowed to query for scheme xxx 这是因为iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装. 受此影响,当你的应用在iOS 9中需要使用微信SDK的相关能力(分享.收藏.支付.登录等)时,需要在“Info.plist”里配置: <ke

-canOpenURL: failed for URL: &quot;&quot; - error: &quot;(null)&quot; , iOS9 App传输安全 支持http 解决方案

-canOpenURL: failed for URL: "CamCardHDOpenAPI:*" - error: "(null)" This app is not allowed to query for scheme *  在iOS 9中必须将url加入白名单中. (LSApplicationQueriesSchemes) 在Xcode中打开Info.plist文件:添加一个键“NSAppTransportSecurity”,类型为Dictionary,在该d

适配ios9出现的问题:-canOpenURL: failed for URL

我的解决方法是: info.plist中找到LSApplicationQueriesSchemes, 然后在下方添加Key 如:-canOpenURL: failed for URL: "momochs://xxxxxxxx" 就添加<string>momochs</string> 添加后: <key>LSApplicationQueriesSchemes</key> <array> <string>sinawei

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

我当时采用的shareSDK集成的第三方登陆功能,我先将白名单添加到一个info.plist文件里面,微博和人人的可以登陆,而qq和微信无法登陆,于是我将白名单等写在了TARGETS的info里面.发现可以进行登陆了.

IOS 应用跳转 (IOS9白名单)

跳转到指定app的实现 IOS中应用的跳转是通过URL实现的,因此在实现应用跳转之前我们要设置一下对应的URL. 图一(寻找配置软件的URL) 图二(具体配置选项) 注意: 如果IOS版本为IOS9 我们需要为app设置白名单. 实现跳转的前提是有这个app,因此我们需要把被跳转的app先运行,即安装到模拟器中. 如图三(在info中添加) 效果图四 代码: // // ViewController.m // X // // Created by ma c on 16/4/9. // Copyr

项目适配iOS9遇到的一些问题及解决办法 ,以及URL 白名单配置方法

1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Security policy requires the use of a secure connection. 原因:iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (ATS)新特性要求App内访问的网络必须使用HTTPS协议

适配iOS9遇到的一些问题_Scheme白名单_ Bitcode及解决办法

升级Xcode7 运行项目发现报错如下: 1.Scheme白名单问题 -canOpenURL: failed for URL: "weixin://app/wxdaae92a9cfe5d54c/" - error: "This app is not allowed to query for scheme weixin" 搜索后得知 近期苹果公司iOS 9系统策略更新,限制了http协议的访问,此外应用需要在"Info.plist"中将要使用的UR

iOS9 URL Schme 白名单

原文地址: https://github.com/ChenYilong/iOS9AdaptationTips WWDC 2015 Session 703: "Privacy and Your App( 时间在30:18左右)关于 URL scheme 的介绍,指出: 也就是说:在iOS9中,如果使用 canOpenURL: 方法,该方法所涉及到的 URL scheme 必须在"Info.plist"中将它们列为白名单,否则不能使用.key叫做LSApplicationQuer