NSURLSessions后台会话的正确用例是什么?

时间:2017-07-20 15:48:46

标签: ios swift http nsurlsession nsurlsessiondownloadtask

this回答的评论中,我正在讨论backgroundTasks,最终导致:

将backgroundTasks用于与下载/上传无关的任何内容。对于上传/下载,请使用NSURLSessions的backgroundSessions。然后我又发表了一条评论,询问为什么不对所有类型的请求使用背景会话,并被告知:

  

对于常规REST调用,后台会话不太方便,   而且通常不是你想要的。它们不是通用工具   对于每个请求;它们用于执行上传和下载。

什么使后台会话不太方便REST调用?有时,您可能会因为大量数据而放慢互联网速度。确保所有数据提交都通过,这不方便吗?

1 个答案:

答案 0 :(得分:0)

我不确定,但如果您正在做类似银行交易的事情,那么您将不想使用backgroundSession。因为您希望用户在离开之前知道该决定。用户永远不应该假设他们可以离开应用程序和应用程序将继续工作应该。也不应该认为他们可以恢复(通过downloadTaskWithUrl)。

如果出于某种原因,用户进行了$ 2000交易并按下期望交易按钮,但,会发生什么情况。下次用户返回屏幕时,由于安全原因,他们可能会被注销,并且从不知道或保持登录状态,但他们会看到事务失败的警报。现在他们很喜欢"哦,我的女儿急需2000美元。她一定还在等钱!"。

您不希望让用户抱有不良期望*。相反,您希望用户自己承担全部责任,而不是点击主屏幕并等待成功/失败。因此,一旦用户点击提交转移,他就会等待它获得成功并继续前进或看到失败并等待并调查他的交易没有通过的原因。

您通常会通过微调/动画传达失败的可能性,并通过警报传达实际结果(失败或成功)。

*糟糕的期望是:每当我点击提交转移按钮时,它都会通过并且有0次失败的机会,您无需等待并看到它通过。