iOS9 白名单问题 -canOpenURL: failed for URL: xx - error:This app is not allowed to query for scheme x...
【iOS開發(fā)】-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"
?
Collection/Bookmark/Share for width under 768px
?
控制臺(tái)輸出
?
如圖是在我啟動(dòng)一個(gè) Xcode 7 + iOS 9 的 App 之后,控制臺(tái)的輸出。
這在 Xcode 6.4 + iOS 8 時(shí),是不會(huì)有的情況,原因是【為了強(qiáng)制增強(qiáng)數(shù)據(jù)訪問安全, iOS9 默認(rèn)會(huì)把所有從NSURLConnection 、 CFURL 、 NSURLSession發(fā)出的 HTTP 請(qǐng)求,都改為 HTTPS 請(qǐng)求:iOS9.x-SDK編譯時(shí),默認(rèn)會(huì)讓所有從NSURLConnection 、 CFURL 、 NSURLSession發(fā)出的 HTTP 請(qǐng)求統(tǒng)一采用 TLS 1.2(SSL 3.1) 協(xié)議。】
下面說解決方案:
①如果你的輸出信息是-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,把它設(shè)置成 NO,這不一定會(huì)阻擋你的控制臺(tái)繼續(xù)輸出這條信息,但是可以保證你的 App 正常運(yùn)行。
②如果你的輸出信息是 xxxx - error: "This app is not allowed to query for scheme xxxx"
(在這里因?yàn)槲业?App 集成了分享到QQ、微信、微博的功能,xxxx部分我看到了 mqq、wechat、sinaweibosso 等多條信息)
?
Info.plist
?
去 Info.plist 里面建立一個(gè)叫 LSApplicationQueriesSchemes 的 Array,把你在xxxx部分看到的詞匯一個(gè)一個(gè)填進(jìn)去,直至控制臺(tái)沒有任何相關(guān)輸出即可。
③關(guān)于其他通過 WebView 訪問 http 網(wǎng)址引發(fā)的控制臺(tái)報(bào)錯(cuò)信息
?
Info.plist 中設(shè)置 ATS
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
如之前所說,Apple 希望我們?cè)L問相對(duì)安全的 HTTPS,所以在你需要訪問 HTTP 時(shí),
雖 Apple 不建議,但可通過在 Info.plist 中聲明如上圖所示的內(nèi)容,倒退回不安全的網(wǎng)絡(luò)請(qǐng)求,這樣依然能讓 App 訪問指定 HTTP,甚至任意的 HTTP。
轉(zhuǎn)載于:https://www.cnblogs.com/zmloveworld/p/5218161.html
總結(jié)
以上是生活随笔為你收集整理的iOS9 白名单问题 -canOpenURL: failed for URL: xx - error:This app is not allowed to query for scheme x...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS8.3越狱用户安全吗?为了安全请尽
- 下一篇: 震动效果