如圖是在我啟動(dòng)一個(gè) Xcode 7 + iOS 9 的 App 之后驻售,控制臺(tái)的輸出。
這在 Xcode 6.4 + iOS 8 時(shí),是不會(huì)有的情況椭更,原因是【為了強(qiáng)制增強(qiáng)數(shù)據(jù)訪問(wèn)安全, 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é)議扔水⊥词蹋】
下面說(shuō)解決方案:
①如果你的輸出信息是-canOpenURL: failed for URL: "kindle://home" - error: "This app is not allowed to query for scheme kindle"
去你的 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 里面建立一個(gè)叫 LSApplicationQueriesSchemes 的 Array,把你在xxxx部分看到的詞匯一個(gè)一個(gè)填進(jìn)去较坛,直至控制臺(tái)沒(méi)有任何相關(guān)輸出即可印蔗。
③關(guān)于其他通過(guò) WebView 訪問(wèn) http 網(wǎng)址引發(fā)的控制臺(tái)報(bào)錯(cuò)信息
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
如之前所說(shuō),Apple 希望我們?cè)L問(wèn)相對(duì)安全的 HTTPS丑勤,所以在你需要訪問(wèn) HTTP 時(shí)喻鳄,
雖 Apple 不建議,但可通過(guò)在 Info.plist 中聲明如上圖所示的內(nèi)容确封,倒退回不安全的網(wǎng)絡(luò)請(qǐng)求除呵,這樣依然能讓 App 訪問(wèn)指定 HTTP再菊,甚至任意的 HTTP。