1.info.plist 添加1行,选择 required background modes , item0 写 audio (ios8会变成默认的字符串)
2. 添加avfoundation库
3. appdelegate里面添加头文件 #import <AVFoundation/AVFoundation.h>
4 @implementation AppDelegate
{
NSTimer * backGroudTimer;
NSInteger backGroudNum;
}
5. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSError * categoryErr = nil;
NSError * activationErr = nil;
[[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback error:&categoryErr];
[[AVAudioSession sharedInstance]setActive:YES error:&activationErr];
backGroudTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(startBackgroud) userInfo:nil repeats:YES];
[backGroudTimer setFireDate:[NSDate distantFuture]];
}
-(void)startBackgroud{
NSLog(@"正在后台运行");
backGroudNum ++;
}
6.
-(void) applicationDidEnterBackground:(UIApplication *)application
{
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;
}
});
});
[backGroudTimer setFireDate:[NSDate distantPast]];
backGroudNum = 0;
}
7.- (void)applicationDidBecomeActive:(UIApplication *)application
{
[backGroudTimer setFireDate:[NSDate distantFuture]];
NSLog(@"后台计数的值是: %ld",backGroudNum);
}