iOS后台运行播放无声音频 测试可行

如果打回来了,就自认倒霉吧

制作无声音频。


@interface AppDelegate ()

{

NSInteger count;

}

@property(strong, nonatomic)NSTimer *mTimer;

@property(assign, nonatomic)UIBackgroundTaskIdentifier backIden;

- (void)applicationDidEnterBackground:(UIApplication *)application {

_mTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countAction) userInfo:nil repeats:YES];

[[NSRunLoop currentRunLoop] addTimer:_mTimer forMode:NSRunLoopCommonModes];

[self beginTask];

}

//计时

-(void)countAction{

NSLog(@"%li",count++);

}

//申请后台

-(void)beginTask

{

NSLog(@"begin=============");

_backIden = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

NSLog(@"将要挂起=============");

[self endBack];

}];

}

//注销后台

-(void)endBack

{

NSLog(@"end=============");

[[UIApplication sharedApplication] endBackgroundTask:_backIden];

_backIden = UIBackgroundTaskInvalid;

}

- (void)applicationWillEnterForeground:(UIApplication *)application {

[self endBack];

}


#import <AVFoundation/AVFoundation.h>

@property(strong, nonatomic)AVAudioPlayer *mPlayer;

@property(assign, nonatomic)CGFloat mCount;

- (void)viewDidLoad {

[super viewDidLoad];

_mCount = 0;

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(countTime) userInfo:nil repeats:YES];

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

}

-(void)countTime{

_mCount+=10;

NSLog(@"%f",_mCount);

if ([[UIApplication sharedApplication] backgroundTimeRemaining] < 60.) {//当剩余时间小于60时,开如播放音乐,并用这个假前台状态再次申请后台

NSLog(@"播放%@",[NSThread currentThread]);

[self playMusic];

//申请后台

[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

NSLog(@"我要挂起了");

}];

}

}

-(void)playMusic{

//1.音频文件的url路径,实际开发中,用无声音乐

NSURL *url=[[NSBundle mainBundle]URLForResource:@"wusheng.mp3" withExtension:Nil];

//2.创建播放器(注意:一个AVAudioPlayer只能播放一个url)

_mPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];

//3.缓冲

[_mPlayer prepareToPlay];

_mPlayer.numberOfLoops = -1;

//4.播放

[_mPlayer play];

}

原文地址:https://www.cnblogs.com/xujiahui/p/9019173.html