2016-06-07 43 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