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

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

我用的是方法:

[restClient loadFile:filePath intoPath:localPath];

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

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

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

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

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

谢谢

【问题讨论】:

    标签: ios ios7 ios8 dropbox-api background-task


    【解决方案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 秒的限制。您也无法从其自身内部重新初始化它。就目前而言,他的解决方案是我遇到的最好的解决方案。还有其他想法吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 2020-10-25
      • 1970-01-01
      相关资源
      最近更新 更多