swift/ios在后台刷新应用程序数据
我正在编写一个iOS/Swift应用程序,它每X分钟从REST服务读取一次数据,并相应地更新UI 现在,我希望当应用程序放在后台时,每隔X分钟调用一个任务,从REST服务读取数据,如果刚刚读取的数据满足给定条件,则显示一个通知,提示用户将应用程序带回前台 在我的搜索中,我了解到在swift/ios在后台刷新应用程序数据,ios,swift,background,background-process,Ios,Swift,Background,Background Process,我正在编写一个iOS/Swift应用程序,它每X分钟从REST服务读取一次数据,并相应地更新UI 现在,我希望当应用程序放在后台时,每隔X分钟调用一个任务,从REST服务读取数据,如果刚刚读取的数据满足给定条件,则显示一个通知,提示用户将应用程序带回前台 在我的搜索中,我了解到在applicationidenterbackground事件期间,我应该使用beginbackgroundtaskhirationhandler启动任务 问题是,如果我理解正确,如果任务没有使用endBackground
applicationidenterbackground
事件期间,我应该使用beginbackgroundtaskhirationhandler
启动任务
问题是,如果我理解正确,如果任务没有使用endBackgroundUpdateTask
停止,那么这允许最多10/15分钟的时间,然后应用程序终止,而我希望任务无限期地轮询服务(至少直到用户从应用程序的设置中禁用它)
我的问题是:
这种功能是如何正常执行的?是否存在解决此类问题的常见解决方案或最佳实践
backgroundTimeRemaining
属性检查您的应用程序还剩多少时间,并通过调用endBackgroundTask
尽可能优雅地处理它,以便iOS不会强制终止您的应用程序作为一个解决方案,您可以考虑将远程通知与
内容一起使用:YES
,它运行查看Parse.com。它们的本地数据存储是您试图实现的内容的抽象。
顺便问一下,真的需要在后台刷新吗。如果通话速度相对较快,则在用户打开应用程序之前无需刷新。像这样的后台过程,当用户不使用Wifi时,使用网络可能会消耗大量电池。所以仔细考虑用例! 使用iOS后台提取功能,您可以指定最小后台提取间隔。但连续调用代码之间的实际间隔将由iOS框架确定。有关详细信息,请查看此链接:
我在我的应用程序中使用这种方法,我认为这是一种首选方法。谢谢您的回复。远程通知是指推送通知,对吗?问题是,如果我没有错的话,为了实现这些,我应该能够在服务器端进行更改,而我正在寻找一个更轻量级的解决方案,只允许无限期地继续分配给后台任务的时间。例如,我正在研究是否可以让任务运行1分钟,然后终止任务并立即运行一个新任务,但我不知道这是否可行/允许。非常感谢,这似乎正好解决了我遇到的问题,即使我的屏幕上显示,下一步也需要几分钟“performFetchWithCompletionHandler”(每次我都返回.newData),这太糟糕了。