CN1中的NSAllowsArbitraryLoadsInWebContent

时间:2016-10-17 11:36:58

标签: plist codenameone

我正在尝试处理Apple对Codename One的http限制。

根据iOS Cocoa keys doc,NSAllowsArbitraryLoadsInWebContent将按照以下说明在iOS 10上运行:

  

可选的布尔值,仅适用于要加载的内容   进入以下类的实例:

     

WKWebView

     

UIWebView(仅限iOS)

     

WebView(仅限macOS)

     

将此键的值设置为YES以获得ATS政策的豁免   您的应用程序的Web视图,而不会影响ATS授权的安全性   您的NSURLSession连接。

     

默认值为NO。

     

要支持旧版本的iOS和macOS,您可以使用此密钥   并仍然手动配置ATS。为此,请将此键的值设置为   是,并配置NSAllowsArbitraryLoads子项。

     

如果将此密钥添加到Info.plist文件中,则无论如何   密钥的值,ATS忽略NSAllowsArbitraryLoads的值   键。从iOS 10.0和macOS 10.12开始可用。

我的第一个问题是:

BrowserComponent是否公开WKWebView或UIWebView?在这种情况下,有问题的Cocoa密钥将起作用,并允许我避免iOS 10的风险NSAllowsArbitraryLoads。

第二个问题:

为了确保与早期版本的兼容性,我知道我应该这样做:

  • 将NSAllowsArbitraryLoads设置为true(由于以下几点,这将在iOS 10中被忽略)。

  • 将NSAllowsArbitraryLoadsInWebContent设置为true(这将在iOS 9中被忽略,并且将使用NSAllowsArbitraryLoads)。

我是对的吗?

谢谢

1 个答案:

答案 0 :(得分:5)

我不明白您尝试采取的步骤,但如果您尝试在应用程序中允许使用http网址,Codename one可以通过添加此构建提示来简化

ios.plistInject=<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict><key>CFBundleURLTypes</key><array><dict><key>CFBundleURLName</key><string>com.mycompany.myapp</string></dict><dict><key>CFBundleURLSchemes</key><array><string>MyApp</string></array></dict></array> 

相应地更改com.mycompany.myappMyApp

只需添加该构建提示,您的http / https网址将在所有iOS版本(包括iOS 9和10)上无缝运行。

我目前在我的一些应用程序上使用它,它工作正常,也在10.1 beta 3上测试过。

修改

再次阅读你的问题后,我意识到你的问题没有得到解答:

是的,即使BrowserComponent没有公开UIWebView,该键也能正常工作。 (根据个人测试)

只需使用NSAllowsArbitraryLoads并将其设置为true,如上所述,它将处理所有事情。如果您设置NSAllowsArbitraryLoads,则只会在iOS 10中忽略NSAllowsArbitraryLoadsInWebContent