繁体   English   中英

swift / ios在后台刷新应用数据

[英]swift/ios refreshing app data when in background

我正在编写一个iOS / Swift应用程序,它每隔X分钟从REST服务中读取数据并相应地更新UI。

现在我希望当应用程序放在后台时,从REST服务读取一个任务,每隔X分钟读取一次,如果刚读取的数据满足给定条件,则会显示一条通知,提示用户带来应用程序回到前台。

在我的搜索中,我读过在applicationDidEnterBackground事件期间,我应该用beginBackgroundTaskWithExpirationHandler开始一个任务。

问题是,如果我已经正确理解,如果任务没有通过endBackgroundUpdateTask停止,这允许最多10/15分钟,之后应用程序终止,同时我希望任务继续无限期地轮询服务(至少直到用户从应用程序的设置中禁用它

我的问题是:

这种功能如何正常执行? 是否存在一些解决此类问题的常见解决方案或最佳实践?

使用iOS背景提取功能,您可以在其中指定最小背景提取间隔。 但是,连续调用代码之间的实际间隔将由iOS框架决定。 详情请访问此链接: http//code.tutsplus.com/tutorials/ios-7-sdk-working-with-background-fetch--mobile-20520

我在我的应用程序中使用这种方法,我认为这是一种首选方式。

  1. 您可以使用本地通知,以便在满足您的条件时从后台显示。

  2. 正确,iOS最终将关闭后台进程,无法强制执行连续的后台活动。 使用backgroundTimeRemaining属性来检查应用程序剩余的时间并尝试通过调用endBackgroundTask尽可能优雅地处理它,以便iOS不会强制endBackgroundTask您的应用程序。

作为一种解决方案,您可以考虑使用带有content-available : YES远程通知content-available : YES ,它运行didReceiveRemoteNotification

看看Parse.com他们的本地数据存储区是您想要实现的目标的抽象。 顺便说一句,是否真的有必要在后台刷新。 如果呼叫相对较快,则在用户打开应用程序之前无需刷新。 像这样的后台进程,当用户不在Wifi上时,使用网络可能非常耗电。 所以仔细考虑用例!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM