学oc的人都知道,苹果公司不允许App在后台运行,当程序进入后台将进入挂起状态,而我今天使用的是借助音频可以后台播放的效果,实现了 定时器的后台运行:
首先需要在info.plist文件添加 Required background modes 值为:App plays audio;截图如下
然后在AppDelegate.h里面的方法 添加如下代码就OK;
- (void)applicationWillResignActive:(UIApplication *)application
{
NSLog(@"applicationWillResignActive");
// 借用 音频可以后台的 方式 让定时器 也可以后台 运行,iOS8之后不用这么麻烦就可以了
UIApplication* app = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier bgTask;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid)
{
bgTask = UIBackgroundTaskInvalid;
}
});
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid)
{
bgTask = UIBackgroundTaskInvalid;
}
});
});
}