2015-07-21 272 views
17

iOS 9涉及的新的ATS導致許多http相關功能停止工作。我必須將所有http請求url添加到白名單中,或者我可以通過將NSAllowsArbitraryLoads設置爲YES來禁用ATS。如果NSAllowsArbitraryLoads設置爲YES,App Store是否拒絕提交?

有誰知道如果NSAllowsArbitraryLoads已設置爲YES,App Store是否會拒絕提交?

+0

沒有明顯的拒絕理由,因爲NSAllowsArbitraryLoads是公共API的一部分,並被記錄在案。如果您可以列出您的應用程序正在使用的所有主機,則最好將它們添加到plist文件而不是使用通配符異常。還要注意的是,在這種情況下,任何能夠讀取純文本的人都可以輕鬆訪問主機列表:) – Vladimir

+0

我的猜測是,將來它會在應用安裝時向用戶發出可怕的消息。 – funkybro

+0

任何人都知道這是否也適用於macOS應用程序? –

回答

14

更新:蘋果將12月底後拒絕應用程序不符合ATS 2016

Source

但是,如果你只需要在網頁加載http://資源(UIWebView的/ WKWebView/SafariViewController),那麼以下就足夠了。

注:此鍵只能從iOS的10

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoadsInWebContent</key> 
    <true/> 
</dict> 
+0

這是一個很大的影響。這是否僅影響iOS網絡API。第三方庫如curl如何? – jayatubi

+0

我認爲已經加密的批量數據存在例外情況,例如媒體流。不知道捲曲,但。 –

+0

@Vijayts也請提一下,這個密鑰只支持iOS 10.0+ –

2

所有使用NSURLConnection,CFURL或NSURLSession API的連接都在爲iOS 9.0或更高版本以及OS X 10.11或更高版本構建的應用程序中使用App Transport Security默認行爲。不符合要求的連接將失敗。

但是,您可以在應用程序或擴展的Info.plist文件中指定默認行爲的例外情況。使用屬性列表中的鍵以指定特例或關閉App Transport Security。表1-1顯示了鍵和它們的類型,並使用縮進來指示結構。

這裏是源鏈接:https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

18

感謝大家的回答。

好消息是蘋果Accepted我的應用程序NSAllowsArbitraryLoads設置爲YES。只有//資源:

UPDATE(感謝@Vijayts): 蘋果將拒絕十二月結束後應用程序不符合ATS 2016

Source

但是,如果你需要加載一個HTTP在網頁(UIWebView/WKWebView/SafariViewController)中,以下內容就足夠了。

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoadsInWebContent</key> 
    <true/> 
</dict> 
+1

因此,在2016年12月之後將NSAllowsArbitraryLoads設置爲YES將不起作用?這不是ATS規範的一部分嗎? – Henning

+1

@亨寧似乎是真的。 –

+0

將接受的答案改爲@ Vijayts的答案不是更好嗎? –

3

我們從蘋果公司的最新聽到有關NSAllowsArbitraryLoads在2016年12月。 https://developer.apple.com/news/?id=12212016b

蘋果仍在接受新的應用程序和更新。我的新應用於2017年4月獲得批准,其中NSAllowsArbitraryLoads設置爲YES。我最近也提交了更新,沒有問題沒有拒絕。

+0

感謝您的回答。希望我的應用能夠通過... – sajaz

0

我有一個應用程序,允許用戶指定一個URL在執行過程中顯示在Web視圖中。該網址可能是HTTP網址。爲此,我將NSAllowsArbitraryLoads設置爲yes。

我已於2016年12月後提交了此應用的更新,並且沒有任何問題。

我的plist還指定了NSAllowsArbitraryLoadsInWebContent,我指定了激活應用程序使用TLS的已知Web服務的TLS的例外。

我只是包括那個解釋說,由於我的應用程序支持iOS 9

我從未甚至不得不從這個應用程序審查問題NSAllowsArbitraryLoadsInWebContent是不夠的檢討筆記。