在iOS中以后台模式运行任务

在iOS中以后台模式运行任务,ios,swift,background,Ios,Swift,Background,我的应用程序应该每天(或可配置的周/月/等)从网络下载一小段数据,并将其保存到本地文件中。这在iOS中可能吗?可以在后台模式下运行应用程序、下载数据并停止它吗?虽然可以在后台模式下运行任务,但也有一些缺点: 你只能控制抓取之间的最短时间,但不能强迫它在准确的时间发生(尽管如此,你可以,但你需要推送服务),这将取决于你的用户使用应用程序的多少 如果你的应用程序被杀死,它将不会运行后台获取 运行该任务有时间限制,因为我知道最大时间是10分钟(?) 本教程有助于您入门只有当您的应用程序启用了后台模式且

我的应用程序应该每天(或可配置的周/月/等)从网络下载一小段数据,并将其保存到本地文件中。这在iOS中可能吗?可以在后台模式下运行应用程序、下载数据并停止它吗?

虽然可以在后台模式下运行任务,但也有一些缺点:

  • 你只能控制抓取之间的最短时间,但不能强迫它在准确的时间发生(尽管如此,你可以,但你需要推送服务),这将取决于你的用户使用应用程序的多少
  • 如果你的应用程序被杀死,它将不会运行后台获取
  • 运行该任务有时间限制,因为我知道最大时间是10分钟(?)

  • 本教程有助于您入门

    只有当您的应用程序启用了后台模式且处于后台状态时,才有可能入门。当用户退出您的应用程序时,直到垃圾回收器没有因为内存使用而杀死它,后台状态才会达到


    如果您的目标是每天/每周/每月在后台下载某些内容,即使用户不使用应用程序,这在iOS上也是不可能的。

    只有注册用于此URL:中记录的任务的应用程序才允许在后台运行。与支持后台服务概念的Android等其他系统相比,iOS采用了不同的方法。这个想法是后台运行的应用程序会耗尽电池电量,这就是为什么苹果不太喜欢这个想法的原因。只是一个快速的想法,既然你每天只做一个小任务,为什么不使用firebase呢?有一个主要的话题告诉每个人在一天中的某个特定时间检查一些东西吗

    不过有一件事,你需要在请求的时间上增加一些随机性——或者你的每一个用户一次点击你的服务器就会引起一场电气火灾。另一种方法是为区域或用户类型管理主题,或者以其他方式划分用户组

    我是一名Android开发者,我会使用一个同步适配器来完成这类事情,但也可以使用AlarmManager,在那里你可以安排一个重复出现的警报来执行更新


    这样,它将与用户端的更新周期(从安装点开始每X小时一次)相关,而不是与服务器相关。你甚至可以让他们自己设置这个功能——但我知道这在swift上是如何工作的,或者如果你可以的话,只需插入Android ofc,但肯定有一个swift的功能可以实现类似的功能,除非它每天都被操作系统锁定!不可能,您必须为明天提醒昨天或下载。可以在后台运行应用程序,但不是每天都可以!您可以使用NSURLSession的下载任务和后台模式/config在后台下载内容:)如果您可以查看报摊应用程序类别,您可能会发现它很有用:)我有一个问题,我的应用程序在后台状态下冻结,如果它运行超过1小时,他们有解决方案吗?我有一个标签作为NSDate,它像计时器一样持续运行,显示当前时间,任何帮助运行后台任务一小时都不是一个好的解决方案。如果此任务更新计时器标签,您可以找到其他解决方案,如删除后台任务、在UserDefaults中节省时间以及在应用程序重新打开时进行一些逻辑操作。但这与这个问题无关,你应该发布另一个问题question@lubilis即使用户不使用应用程序,也可以在iOS上每天/每周/每月在后台下载一些东西。发送静默推送并创建后台任务。iOS应用程序将在后台运行3分钟。