我正在开发一个类似于联系人、日历的企业应用程序。即使我的应用程序在后台,我也想同步我的日历和联系人。我也很喜欢使用私有 API,因为我不会提交到应用商店。请注意,我想在不越狱设备的情况下完成这项工作。
已经在这里发布了一个类似的问题,我正在创建这个新线程,因为已经发布的一个已经为越狱设备建议了一个解决方案。
我正在开发一个类似于联系人、日历的企业应用程序。即使我的应用程序在后台,我也想同步我的日历和联系人。我也很喜欢使用私有 API,因为我不会提交到应用商店。请注意,我想在不越狱设备的情况下完成这项工作。
已经在这里发布了一个类似的问题,我正在创建这个新线程,因为已经发布的一个已经为越狱设备建议了一个解决方案。
我正在分享我自己问题的答案,因为这可能对其他人有所帮助
脚步:
static int counter;
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//Minimun keepAliveTimeout is 600 seconds
[[UIApplication sharedApplication] setKeepAliveTimeout:605 handler:^{
//do your task
counter ++;
NSLog(@"Counter # %d", counter);
}];
}
例如,我在给定的时间间隔内打印计数器变量下面是输出日志消息:
2012-08-27 14:06:09.216 BackgroundApplicationForVOIP[1129:207] Counter # 1
2012-08-27 14:16:14.218 BackgroundApplicationForVOIP[1129:207] Counter # 2
2012-08-27 14:26:19.219 BackgroundApplicationForVOIP[1129:207] Counter # 3
2012-08-27 14:36:24.220 BackgroundApplicationForVOIP[1129:207] Counter # 4
2012-08-27 14:46:29.221 BackgroundApplicationForVOIP[1129:207] Counter # 5
2012-08-27 14:54:21.000 BackgroundApplicationForVOIP[1129:207] Counter # 6
2012-08-27 15:19:48.099 BackgroundApplicationForVOIP[1129:207] Counter # 7
2012-08-27 15:26:03.201 BackgroundApplicationForVOIP[1129:207] Counter # 8
2012-08-27 15:39:50.167 BackgroundApplicationForVOIP[1129:207] Counter # 9
2012-08-27 16:07:28.112 BackgroundApplicationForVOIP[1129:207] Counter # 10
2012-08-27 16:13:43.217 BackgroundApplicationForVOIP[1129:207] Counter # 11
2012-08-27 16:23:48.218 BackgroundApplicationForVOIP[1129:207] Counter # 12
2012-08-27 16:33:53.219 BackgroundApplicationForVOIP[1129:207] Counter # 13
2012-08-27 16:43:58.220 BackgroundApplicationForVOIP[1129:207] Counter # 14
2012-08-27 16:54:03.221 BackgroundApplicationForVOIP[1129:207] Counter # 15
If this is an enterprise app and you're not submitting to Apple then I would explore having your app identify itself as a VOIP app. Then you can set a keepAliveTimer and get get periodic processing time in the background to do what you need.
如果你想连续运行,另一个想法是在 Info.plist 的所需背景模式中启用“音频”,并继续循环播放无声 mp3 直到你想继续运行。