6

我正在开发一个类似于联系人、日历的企业应用程序。即使我的应用程序在后台,我也想同步我的日历和联系人。我也很喜欢使用私有 API,因为我不会提交到应用商店。请注意,我想在不越狱设备的情况下完成这项工作。

已经在这里发布了一个类似的问题,我正在创建这个新线程,因为已经发布的一个已经为越狱设备建议了一个解决方案。

4

3 回答 3

9

我正在分享我自己问题的答案,因为这可能对其他人有所帮助

脚步:

1:在您的 application-info.plist 中添加“必需的后台模式”键,并将值分配为“应用程序提供 IP 语音服务”为其项目。

2:在您的 appdelegate.m 文件中,实现“applicationDidEnterBackground:”方法,如下面的代码片段。

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
于 2012-08-27T09:11:02.550 回答
5

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.

于 2012-08-17T13:50:36.737 回答
1

如果你想连续运行,另一个想法是在 Info.plist 的所需背景模式中启用“音频”,并继续循环播放无声 mp3 直到你想继续运行。

于 2012-11-25T18:55:49.813 回答