首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在特定时间点执行后台获取

如何在特定时间点执行后台获取
EN

Stack Overflow用户
提问于 2014-01-21 17:50:00
回答 4查看 2.8K关注 0票数 3

我有一个应用程序,从通讯录同步其联系人,我只需要检查新的联系人,并同步到我的应用程序数据库中的联系人每天午夜自动。

我已经通过了iOS7新功能"Background Fetch",但这与我的要求不匹配,在这种情况下,后台获取将由操作系统根据用户活动触发。

然而,我的数据在凌晨12点之前就过时了,如果在这个特定的时间没有启动这个活动,我的应用程序将变得无用。

有没有办法实现我所需要的,以便我可以同步我的数据库与地址簿每天午夜使用后台进程。

谢谢

EN

回答 4

Stack Overflow用户

发布于 2014-01-21 18:12:01

您不能配置后台抓取的时间。相反,您可能希望了解一下iOS 7的新远程通知功能。

远程通知本质上是推送通知,但它们包含content-available属性。当这些通知之一到达时,系统将唤醒您的应用程序并调用应用程序委托方法:

代码语言:javascript
运行
复制
         - (void)application:(UIApplication *)application 
didReceiveRemoteNotification:(NSDictionary *)userInfo 
      fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

在此方法中,您可以执行后台获取以检索新数据。

你必须设置你的服务器,一旦你的数据被刷新,就会向你的应用程序发送远程通知,以提示它们自动更新。

有关远程通知的详细信息,请参阅this issue of objc.io'Using Push Notifications to Initiate a Download'

票数 3
EN

Stack Overflow用户

发布于 2014-01-21 18:16:16

您可以订阅ABAddressBookRegisterExternalChangeCallback,以便在修改通讯簿数据库时接收通知。我认为这比调度同步更好,然而,只有当应用程序在前台时,这才会起作用。但当应用程序被挂起时,它不能做任何直接唤醒自己的事情。它之前不能调度NSTimer,它不能使用performSelector:afterDelay之类的东西等等。应用程序再次激活的唯一方法是如果用户做了一些事情来激活它,例如,收到本地或远程通知,并弹出一个警报。只有当应用程序有后台模式时,才允许长时间在后台模式下执行,这些模式包括:voipaudiolocationnewstand。即使应用程序具有这些类型中的一种,也无法在没有某些限制的情况下执行其代码。

因此,唯一的方法是iOS 7的特性:background task execution if content avaliable,正如James Frost所建议的那样,但是要做到这一点,你需要你的外部服务器,它将向你的应用程序发送推送通知。

你说:"...is not started at this particular time instance my app will be rendered useless.",但是在应用程序再次启动之前,谁来检查这个呢?如果时间值之间的增量大于某个值,为什么不能在每次应用程序运行期间使用地址簿进行所有关键更新?我的意思是,您可以(当应用程序返回到applicationDidFinishLaunching中的前台时)计算NSDate now和您在同步完成后存储在NSUserDefaultsplist中的最后一个同步日期值之间的增量。如果增量大于24小时,则再次调用同步方法。

票数 1
EN

Stack Overflow用户

发布于 2014-01-21 18:20:27

你真的需要在午夜准时更新你的数据吗?或者它必须在午夜之后更新?

你仍然可以使用后台抓取功能。只需让操作系统唤醒您进行检查,如果已过午夜,请执行您的更新。即使操作系统在应用程序下一次启动之前不会执行此操作,您也会在下一次启动时执行此操作。如果用户在这段时间内没有启动应用程序,是否真的需要在某个特定的时间更新数据?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21254533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档