【发布时间】:2012-03-02 11:48:47
【问题描述】:
我正在制作一个仅用于测试目的的基准应用程序。我不打算将它放到 App Store。
我需要的是我的 NSTimer 继续使用 UIBackgroundTaskIdentifier 在后台运行,将数据保存到 Core Data db,最后将数据推送到服务器(我正在使用 Parse),当然,在一定的时间间隔之后.
所以基本上,我没有发现任何适用于我的具体案例的问题。我这样设置我的 NSTimer:
UIBackgroundTaskIdentifier bgTask;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
}];
self.timer = [NSTimer scheduledTimerWithTimeInterval:self.localInterval target:self selector:@selector(updateCoreData:) userInfo:nil repeats:YES];
方法 updateCoreData 只是调用 Core Data 类并进行必要的插入。
我已阅读有关 VoIP 和音乐播放部分的信息,但不知道哪一个最适合我的情况,也不知道如何实施。
【问题讨论】:
-
在您的计时器处理函数中,您可以使用 Great Central Dispatch 来完成冗长的任务。这样你就不会阻止你的事件处理程序被调用。
-
你成功了吗?我有同样的任务,我很努力但没有成功........你能帮帮我吗?
-
@Xyz 是的,我成功了。为了让 NSTimers 在后台工作,我提供的代码可以工作。发生的情况是在 10 分钟左右处于非活动状态后,应用程序会关闭。为了防止这种情况,我使用了定位服务而不是 VoIP,因为它更容易实现。我在 Info.plist 文件上打开了标志,然后我做了一个计时器来启动定位服务,并每 9 分钟立即停止它。它就像一个魅力;)如果您需要示例代码,请告诉我。
-
是的,请给我代码....我真的需要它....我正在研究这个一个多月...
-
@Xyz,看看我对这个问题的回答;)
标签: objective-c nstimer voip background-music