【发布时间】:2014-11-14 15:54:25
【问题描述】:
我有一个在后台运行的应用程序。我想定期唤醒它:在一天中的预设时间或每 n 小时。这必须在没有用户干预的情况下完成。
我相信由于应用程序在后台运行,NSTimer 将无法工作。如何定期“唤醒”我的应用?
【问题讨论】:
标签: objective-c ios7 nstimer
我有一个在后台运行的应用程序。我想定期唤醒它:在一天中的预设时间或每 n 小时。这必须在没有用户干预的情况下完成。
我相信由于应用程序在后台运行,NSTimer 将无法工作。如何定期“唤醒”我的应用?
【问题讨论】:
标签: objective-c ios7 nstimer
当然,这是可能的,而且很容易实现。
该技术称为后台提取。
它是这样工作的 -
1) 您要求操作系统在特定时间唤醒/启动您的应用程序。
2)操作系统决定并定期启动您的应用程序和调用
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
3) 你在那里做你的工作,你也可以向用户触发本地推送通知,新数据可用。
【讨论】:
completionHandler(UIBackgroundFetchNewData);。如果您不返回任何内容,iOS 最终将停止定期唤醒您的应用。
您可以合并推送通知;但是,用户必须选择打开通知。
【讨论】: