iOS9 中默認非HTTPS的協議是被禁止的,我們為了能正常發起http請求,在info.plist文件中添加AppTransportSecuritySettings字典,將NSAllowsArbitraryLoads設置為YES來禁止ATS。
iOS10 從2017年1月1日起蘋果提出所有新提交的App默認不允許使用NSAllowsArbitraryLoads來繞過ATS的限制,也就是說強制我們用HTTPS,否則我們提交App可能會被拒絕。
解決方案
通過NSExceptionDomains設置白名單的方式來針對特定的域名開放HTTP內容來通過審核。可以簡單理解成,把不支持https協議的接口添加到白名單。
操作步驟
- 在項目info.plist中添加一個Key:App Transport Security Settings,類型為Dictionary
- 在第一步添加的字典內添加一個Key: Exception Domains,類型為Dictionary
- 在Exception Domains內添加要支持的域,其中域作為Key,類型為Dictionary
- 每個域下面需要設置3個屬性:類型為Boolean
NSIncludesSubdomains YES
NSExceptionRequiresForwardSecrecy NO
NSExceptionAllowsInsecureHTTPLoads YES
應用場景
- 第三方不支持https請求的接口
- 不支持https協議的圖片地址
- 不支持https協議的h5網址
玩的開心......