- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发企业应用程序。到目前为止,一切都在模拟器中运行良好,但当我将它部署到物理设备上时,它崩溃了。发生崩溃是因为应用程序通过“HTTP”而不是“HTTPS”连接到 Web 服务。
我在 info.plist
文件中添加了 ATS 异常。我需要知道企业应用程序将在 2016 年(Apple 的截止日期)之后继续使用 HTTP
工作吗?
应用程序将托管在我们自己的服务器上,苹果不审查企业应用程序。
更新 1我只需要知道企业应用程序是否会在 2016 年之后继续使用此 ATS 异常(exception)情况?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>xxxxxxxx</string>
<key>CFBundleIdentifier</key>
<string>com.xxxxxxx.xxx</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1.009</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MinimumOSVersion</key>
<string>9.0</string>
<key>UIDeviceFamily</key>
<array>
<integer>2</integer>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIMainStoryboardFile~ipad</key>
<string>Main</string>
<key>UIAppFonts</key>
<array>
<string>Fonts/Montserrat-Black.otf</string>
<string>Fonts/Montserrat-Bold.otf</string>
<string>Fonts/Montserrat-ExtraBold.otf</string>
<string>Fonts/Montserrat-Regular.otf</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>http://xxxxxxx.xxxxx.xxx</key>
<dict>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
</dict>
最佳答案
从 2017 年开始,任何 Apple App Store 提交仍然可以请求 App Transport Security (ATS) 异常(exception),Apple 将对其进行审核。您将需要高度限制您的异常(exception)列表,并且不允许一揽子任意 http 加载。审稿人仍然可以拒绝您的提交并要求提供更多信息。
即通过非安全通道请求美国政府 NOAA 图像的应用程序可能 被允许,因为 NOAA 目前不支持这些天气雷达图像的 HTTPS/SSL……再次,向上给 Apple 审阅者...
NSAllowsArbitraryLoadsInWebContent
lets you have a strict ATS dictionary but still load arbitrary content in a web view (WKWebView, UIWebView, WebView)
NSAllowsLocalNetworking
allows loading of local resources without disabling ATS for the rest of your app
NSAllowsArbitraryLoadsInMedia
disables all ATS restrictions for media that your app loads using the AV Foundation framework. Employ this key only for loading media that are already encrypted, such as files protected by FairPlay or by secure HLS, and that do not contain personalized information.
这些不会得到 Apple 的审查,因此允许禁用 ATS,直到 future 可能的 iOS 版本禁止非安全流量,但这远非最佳做法
如果您的企业应用需要基于本地网络的非安全资源,请改用新的 NSAllowsLocalNetworking
异常。
如果您的企业应用需要通过公共(public)互联网获取的非安全企业资源,您可能会遇到超出 iOS 应用传输安全问题范围的安全问题。
关于ios - 适用于企业应用程序的 Apple App 传输安全 (ATS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40522749/
关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 Stack Overflow 的 on-topic。 4年前关闭。
假设我有一个列表 xs。如何在 ATS 中编写以下循环样式: foreach x in xs do process(x) 最佳答案 您可以使用旧的 DIY 风格(也:经典的 ATS 风格),也就是说,
在开头加上:从 ATS 网站学习 ATS。 尝试从列表中提取记录时,一旦我尝试引用记录变量,就会在下面的 x4.a 上收到类型错误。 那么为什么会失败 - x4 不知道它有记录吗? typedef a
我知道可以使用 libc/math 中的 sqrt 函数来完成它: staload Math = "libats/libc/SATS/math.sats" val sqrt2 = $Math.sqrt
我可以像堆栈一样使用列表,但是在 ATS 中创建队列的正确方法是什么?例如,假设我有以下伪代码: val xs = queue_create() val () = xs.enqueue(1) val
例如,如何在 ATS 中构造一个数组,其中包含从 A 到 Z 的所有大写字母?在 C 中,这可以按如下方式完成: char *Letters() { int i; char *cs = (
例如,我正在 ATS 中寻找一个示例,该示例或多或少地执行以下 C 代码的功能: int *theMultable[10][10]; void theMultable_initialize() {
例如,如何构造一个包含所有数字的列表:0、1、2、3、4、5、6、7、8 和 9。 最佳答案 您可以使用 val xs = ($list {int} (0, 1, 2, 3, 4, 5, 6, 7,
基本上,我正在寻找或多或少相当于以下 C 代码的东西: int theGlobalCount = 0; int theGlobalCount_get() { return theGlobalCount
假设我想对列表中的整数求和。我可以通过在列表上应用初始值为 0 的 reduce 运算符和加法函数来做到这一点。 ATS中reduce算子叫什么名字? 最佳答案 “reduce”这个名字有点含糊。它可
这里有两段代码我认为是等效的,除了第二段的行数比它应该多: fun move_ul {i:nat} ( p: int(i) , ms: list0(Int) ): list0(Int) = if
我经常在 ATS 中看到使用 case、case+ 或 case- 形成的 case 表达式。有什么区别? 最佳答案 如果表达式不详尽,使用 case 会发出警告,case+ 会产生错误,而 case
我知道如何使用 patsopt 和 atscc2js 将 ATS 代码编译成 JS 代码: patsopt -d foo.dats | atscc2js -o foo_dats.js 我是否需要为 a
例如,如何在 ATS 中编写 x 的 10 次幂的表达式?我尝试了 x^10 和 x^^10,但都没有奏效。 最佳答案 ATS 中整数和浮点值的取幂运算符是 ** ,如 implement main0
当使用像 list_map 这样的高阶函数时,需要构建闭包函数并将它们作为参数传递。之后,构建的闭包就变成了垃圾。有没有办法在调用堆栈上构建这样的闭包函数(以便在调用后自动释放它们)? 最佳答案 正如
main0 函数的类型是什么? 我正在编写 gtk3 库。但是 g_application_run() 函数需要 argv。当然,ATS语言可以在main0函数上使用argv。但是类型是什么? 最佳答
有时,我会看到如下代码: var foo = lam@(x: int): int => ... lam@ 是什么意思? lam 和 lam@ 有什么区别? 最佳答案 在内存方面,lam 创建一个盒装闭
这是日期格式化程序设置: let dateFormatter = DateFormatter() dateFormatter.dateStyle = .medium dateFormatter.tim
我想得到下面的结果但不使用 at语法,因为它在 Safari 中不受支持,我很难使用它。有谁知道任何方法?先感谢您! #content { background-color: black; h
也许我可以使用这样的脚本文件: 现在在 -f script_file 但是如何将参数分配给脚本。 最佳答案 at 没有 -f 开关。你可以像下面这样使用它: echo "sh script.sh" |
我是一名优秀的程序员,十分优秀!