2016-06-07 40 views
1

是否可以通过修改底层NSURLSessionConfiguration更改现有NSURLSession上的allowsCellularAccess的值?更改允许对现有NSURLSessionCellularAccess

我想在用户的设置中对我的应用程序进行任何更改,而不必取消现有的请求,如果他们的设备当前连接到WiFi。

回答

1

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

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

因此,如果用户开始使用allowsCellularAccess = NO进行下载,然后走到外面,实现下载已经停止,并且想要通过蜂窝下载,他们将不得不重新开始下载? –

+0

如果应用程序使用下载任务,并且如果应用程序和服务器都正确支持恢复下载,则用户应该能够在设备重新连接到Wi-Fi网络后恢复他或她停止的地方。但是,我不知道有什么方法可以让它恢复工作,除非'allowCellularAccess'为'YES',否则无法将任务移至新会话,并且没有办法修改任务底层的'NSURLRequest'的'allowedCellularAccess'属性。 – dgatwood