ios - 如何在特定时间点进行后台获取,比如午夜

标签 ios objective-c ios7 background fetch

我有一个从地址簿同步联系人的应用程序,我只需要检查新联系人并在每个午夜自动将此联系人同步到我的应用程序数据库中。

我已经了解了 iOS7 新功能 "Background Fetch" , 但这不符合我的要求,在这种情况下,操作系统将根据用户事件触发后台提取。

但是我的数据在上午 12 点之前就过时了,如果这个事件没有在这个特定的时间实例开始,我的应用程序将变得无用。

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

谢谢

最佳答案

您无法配置后台获取发生的时间。相反,您可能想看看 iOS 7 的新远程通知功能。

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

         - (void)application:(UIApplication *)application 
didReceiveRemoteNotification:(NSDictionary *)userInfo 
      fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

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

您必须将服务器设置为在数据刷新后向您的应用发送远程通知,以提示它们自行更新。

参见 this issue of objc.io'Using Push Notifications to Initiate a Download'有关远程通知的更多信息。

关于ios - 如何在特定时间点进行后台获取,比如午夜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254533/

相关文章:

ios - XCAssets 未复制到应用程序包

ios - UIButton 按下时改变状态

ios - 如何从 Flex 移动应用程序 (AIR) 中确定 IOS 版本

iOS UILocalNotification 是操作按钮崩溃并损坏应用程序数据

iOS 6-导航栏下的 UI TableView Controller 表,如 iOS 7

sql - 使用 iOS 应用程序更新保存 SQLite 数据

ios - 我如何使用 Paypal 进行拆分付款

ios - for循环后,未知引号添加到NSMutableArray中的字符串对象

search - iOS 7 上的 iTunes 搜索 URL 显示 "Cannot connect to iTunes Store"

ios - 将导航栏设置为与 iOS 7 上的深色键盘相同的颜色