4

是否可以通过修改基础来更改allowsCellularAccess现有的值?NSURLSessionNSURLSessionConfiguration

如果用户的设备当前已连接到 WiFi,我希望在不取消现有请求的情况下尊重用户对我的应用程序设置的任何更改。

4

1 回答 1

7

不会。会话会复制其配置。它不保留它。在你的情况下我会做的是:

  • 复制会话的现有配置并更改该标志。
  • 使用修改后的配置创建一个新会话。
  • 如果用户在 Wi-Fi 上,请在旧会话上调用 finishTasksAndInvalidate。这将使会话保持足够长的时间以完成任何现有的请求,之后它将消失。
  • 如果用户使用蜂窝网络,请调用 invalidateAndCancel,然后等待重新启动这些任务,直到用户使用 Wi-Fi。

此外,您可以调用cancelByProducingResumeData:任务,然后在具有不同配置的不同会话中重新创建(恢复)它。该任务仍将报告其原始配置allowsCellularAccess,但将根据新会话的配置运行。(陈旧的报告可能被认为是一个错误。)

于 2016-08-03T02:36:08.890 回答