iOS9 白名單問題 -canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"

來源:互聯網
上載者:User

標籤:

【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。

iOS9 白名單問題 -canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.