【问题标题】:Continue uploading process in background IOS后台IOS继续上传过程
【发布时间】:2023-03-23 13:50:02
【问题描述】:

我想知道是否可以在后台继续上传文件。例如,当用户让 iPad 进入睡眠状态时,上传会继续......

我也在 Dropbox 论坛中问过这个问题,因为我正在使用核心 API 上传到 Dropbox。这就是答案:

“使用核心 API,上传完全由您的应用控制。您可以请求操作系统在后台保持您的应用处于活动状态,在暂停您的应用之前最多允许 10 分钟。您可以在此处查看更多信息: https://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html 如果您使用新的 Sync API,这一切都将由 API 自动完成。”

我在这里发帖是因为我不明白他们所说的“请求操作系统让您的应用在后台保持活跃”是什么意思。这是否意味着我必须向ios wi请求一个特定的代码,它与dropbox无关,或者它是一个特定的dropbox功能?

【问题讨论】:

  • 您可以在 Dropbox 论坛中链接到您的问题吗?

标签: ios dropbox


【解决方案1】:

您需要要求操作系统保持应用程序运行,这与 Dropbox 无关...当您开始上传时,请执行以下操作:

UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
    [[UIApplication sharedApplication] endBackgroundTask:bgTask];
}];

... 并将bgTask 存储在某处。然后,当您的上传完成或失败时,请执行以下操作:

[[UIApplication sharedApplication] endBackgroundTask:bgTask];

这将告诉操作系统保持您的应用运行,因为有一个后台任务正在运行...

【讨论】:

  • 重要的是要提到:“您标记的每个任务将有大约 10 分钟(总计)来完成其操作,有足够的时间用于最常见的用途。时间完成后,应用程序将暂停并且像任何其他暂停的应用程序一样对待。” (引用自此链接:codeproject.com/Articles/124159/…
  • 谢谢,非常简洁的答案,但我有一个疑问:如果我不在应用程序本身中,如何确定上传是否完成?我的应用程序的其他功能不会被阻止吗?我可以在普通的 void 方法中插入 endBackgroundTask 调用吗?
  • 是的,如果您在应用程序处于前台时调用了第一个函数,那么当它进入后台时,它将继续正常运行,直到您调用第二个函数让系统知道您'完成了......
  • 你能同时启动多个后台任务吗?假设您要上传五个不同的文件,如果您为每个文件创建一个 UIBackgroundTaskIdentifier 的新实例,当第一个调用 endBackgroundTask 时,其他 4 个会继续吗?
  • @Jules 是的,记得给每个人打电话给endBackgroundTask
【解决方案2】:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

通过请求,这意味着当您的 App Delegate 方法 applicationDidEnterBackground 被调用时,您有大约 5 秒的时间来完成。当您进行长时间上传时,您可以通过 beginBackgroundTaskWithExpirationHandler 请求额外的时间

【讨论】:

    【解决方案3】:

    新的 Dropbox SDK 提供后台上传/下载文件的功能。请尝试使用新的 SDK。祝您编码愉快。

    【讨论】:

    • 您说的是 Dropbox iOS SDK 吗?因为我在最新的1.3.5版本中找不到后台上传/下载文件的支持。
    • 然后尝试使用 beginBackgroundTaskWithExpirationHandler 进行上传/下载。这可能会对您有所帮助。
    【解决方案4】:

    我想这对我有用。

    1. 禁用自动锁定
    2. 禁用屏幕超时
    3. 接通电源
    4. 在 iphone 上为 Dropbox 和后台运行选项启用定位服务
    5. 让 Dropbox 应用保持打开状态
    6. 2000多张照片和视频上传成功

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多