iOS9 白名单问题 -canOpenURL: failed for URL: xx - error:This app is not allowed to query for scheme x...
【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。
轉載于:https://www.cnblogs.com/zmloveworld/p/5218161.html
總結
以上是生活随笔為你收集整理的iOS9 白名单问题 -canOpenURL: failed for URL: xx - error:This app is not allowed to query for scheme x...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS8.3越狱用户安全吗?为了安全请尽
- 下一篇: 震动效果