不:请参阅下面的更新#3:关键缺失的元素:您必须waitsForConnectivity将会话配置上的标志设置为true.
let config = URLSessionConfiguration.ephemeral
config.waitsForConnectivity = true
let sesh = URLSession(configuration: config)
let url = URL(string: "https://google.com")!
sesh.dataTask(with: request) { (_, _, error) in
print(error)
}.resume()
如果您不设置该标志,请求会立即失败,因为 LTE 访问无法立即使用,而只能在最短暂的延迟之后使用。将此标志设置为 true 会使请求工作。在我的测试中,甚至在启用 over LTE 和在未启用但通过 WiFi 进行waitsForConnectivity的情况下发出相同请求之间似乎没有明显的时间差异,几乎就像在某些情况下启用的等待期是下一个回合一样runloop 那种情况。waitsForConnectivitywaitsForConnectivity
更新#1
我无法通过 LTE 提出任何请求。当waitsForConnectivity设置为true时,请求只是根据会话配置的超时属性超时。waitsForConnectivity什么时候false,请求立即失败。当我有更多信息时,我会更新我的问题和答案。我正在等待 Apple TSI 请求的回复,这通常需要几天时间。
更新#2
更神秘的是,相同的示例代码在其他两个开发人员的硬件上通过蜂窝网络运行良好。我知道我的硬件很好,因为 Apple 的应用程序在 LTE 上运行良好(电话在高速公路上滚动,除了我的手表在车上)。所以有些事情真的很可疑。我已经要求 Apple DTS 对此进行调查,他们也无法重现该问题。我会尽快跟进他们。
更新#3
在我上次更新这篇文章后的几周内,手机请求开始在我的应用程序中运行。我没有改变我的手表,没有软件更新,没有重置,什么都没有。我什至没有重新编译代码;与以前相同的版本仍在我的手表上。它刚刚开始按预期工作,就像在其他开发人员的设备上一样。
我注意到的唯一奇怪的事情是,我收到了来自 AT&T 的三个背靠背相同的 SMS 消息,通知我我的 Apple Watch 现在与我的 iPhone 号码相关联。这很奇怪,因为这种联系据说发生在我拆箱手机的那天晚上,而不是两个月后。我不知道这是否与我的问题有关。我所知道的是,蜂窝请求现在正在工作。