如何使用 Dropbox 下载超过三分钟?

Posted

技术标签:

【中文标题】如何使用 Dropbox 下载超过三分钟?【英文标题】:How can I download for longer than three minutes with Dropbox? 【发布时间】:2015-02-12 12:46:52 【问题描述】:

我的应用程序可以下载文件,但存在一个问题,如果下载时间超过 4 分钟,则会超时。我设法将其归结为 iPad 自动锁定 1 分钟,后台任务 3 分钟。

我用的是方法:

[restClient loadFile:filePath intoPath:localPath];

我不确定这是 Dropbox SDK 问题还是 ios 问题。我的印象是你可以在后台下载很长时间,不管后台任务是什么,但由于某种原因,Dropbox SDK 停止了。

我的本​​能会告诉我问有没有办法扩展后台任务?我在网上读过很多东西,说如果它满足这些要求中的任何一个,你就可以用 plist 做一些事情: https://***.com/a/9738707/4056064 但我的应用不属于其中任何一个类别。

我还读到你可以在 BG 任务中使用计时器,但遗憾的是它不再起作用了。

原因是我试图将相当大的文件下载到应用程序(有时 300mb),而人们往往会离开他们的 iPad。

edit- 当我提到后台任务时,我的意思是 beginBackgroundTaskWithExpirationHandler

谢谢

【问题讨论】:

【参考方案1】:

你能在这里参考我的答案吗:AVAudioPlayer is not playing in Background when iPhone is locked。实际上,我的问题是在从沙箱下载或收听媒体时无法写入/读取。这就是我使用数据保护 API 的原因。我认为这是基于安全问题。应用这些属性后,我解决了这个问题。我也可以下载大尺寸的视频。对我来说没问题。

【讨论】:

【参考方案2】:

如您所见,后台任务受到严格限制。解决此问题的另一种方法是在下载开始时禁用 ipad 的自动锁定:

  [UIApplication sharedApplication].idleTimerDisabled = YES;

下载完成后不要忘记重新启用计时器以避免过度耗电。

【讨论】:

谢谢,这是一个非常简单的解决方案。希望保管箱的人可以回复一些实际上解决用户锁定它的问题,但如果不是,我明天会接受这个:) 我不想发现我个人设置的电话设置已被更改,只是为了让下载服务可以完成它的工作。您是否查看过developer.apple.com/library/ios/documentation/UIKit/Reference/…,特别是beginBackgroundTaskWithName:expirationHandler: 这也是一个糟糕的解决方案,因为它不能修复与用户相关的任务。当用户接到电话、短信或 FaceTime 或在多任务处理中退出活动时会发生什么?你不能强迫用户留在应用程序@Ben 嗨,灵魂光辉。是的,如果您阅读了这个问题,我会多次提到后台任务。也许我应该包含代码,但遗憾的是它有 180 秒的限制。您也无法从其自身内部重新初始化它。就目前而言,他的解决方案是我遇到的最好的解决方案。还有其他想法吗?

以上是关于如何使用 Dropbox 下载超过三分钟?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Delphi 中使用 DropBox REST API 复制文件

如何使用 Swift 删除 Firebase 上超过 30 分钟的数据? [复制]

如何结束用户会话令牌并刷新令牌,时间超过 25 分钟

三分钟解决centos8停止维护,我们如何下载软件这个问题

使用适用于 iOS 的 Dropbox API 计算文件大小

如何将 Dropbox 中的视频播放到我的 win phone 8 应用程序的 mediaelement 中?