iOS开发小结 - 让你的APP后台运行

时间:2022-06-15 00:41:26

最近项目有个需求需要让app在后台一直运行计时着,找了一些资料,只能用比较无耻的做法了,播放一段没有声音的音频文件,这样你的APP就不会被系统杀掉~~

我们只需要用到<AVFoundation/AVFoundation.h>框架,然后播放一段没有声音的音频文件就可以实现了,贴代码:

#pragma mark - 音频播放,让后台一直运行
//播放器
- (AVAudioPlayer *)audioPlayer {
if (_audioPlayer == nil) {
dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(dispatchQueue, ^(void) {
NSError *audioSessionError = nil;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
//激活会话
[audioSession setActive:true error:nil];
if ([audioSession setCategory:AVAudioSessionCategoryPlayback error:&audioSessionError]){
NSLog(@"成功设置音频对话.");
} else {
NSLog(@"设置音频对话失败");
}

NSBundle *mainBundle = [NSBundle mainBundle];
NSString *filePath = [mainBundle pathForResource:@"timeBlankSound" ofType:@"mp3"];
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
NSError *error = nil;

_audioPlayer = [[AVAudioPlayer alloc] initWithData:fileData error:&error];

if (_audioPlayer != nil){
_audioPlayer.delegate = self;
//让它无限循环播放
[_audioPlayer setNumberOfLoops:-1];
if ([_audioPlayer prepareToPlay] && [_audioPlayer play]){
NSLog(@"成功播放");
} else {
NSLog(@"播放失败");
}
}
});
}
return _audioPlayer;
}

然后调用[self.audioPlayer play];就能播放了~

空音乐文件的下载地址

非常简单粗暴的方法,大家有好的办法可以提出来,谢谢大家阅读~