前言
最近在做环信视频通话时,遇到了一个客户提的需求,就是APP处于后台的时候,当有用户拨打视频通话过来时,能够循环播放一段自定义铃声,并弹出通知信息。
具体做法是在用户收到音视频通话请求时,APP发送一个本地通知,同时开启后台播放音频文件。
实现
1、开启后台模式
2、在Appdelegate.m中
- (void)applicationDidEnterBackground:(UIApplication *)application {
//开始接受远程控制
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
}
-(void)applicationWillResignActive:(UIApplication *)application
{
//结束接受远程控制
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
}
3、使用AVAudioPlayer播放音频文件
if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) {
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
}
NSString *musicPath = [[NSBundle mainBundle] pathForResource:@"20S" ofType:@"wav"];
NSURL *url = [[NSURL alloc] initFileURLWithPath:musicPath];
self.ringPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[self.ringPlayer setVolume:1];
self.ringPlayer.numberOfLoops = -1; //设置音乐播放次数 -1为一直循环
if([self.ringPlayer prepareToPlay])
{
[self.ringPlayer play]; //播放
}
4、本地推送
UILocalNotification*localnotificatio = [[UILocalNotification alloc] init];
if (nil != localnotificatio)
{
//设置提示消息
localnotificatio.alertBody = @"您有一条语音来电";
localnotificatio.repeatInterval = 2;
// 启动通知
[[UIApplication sharedApplication]scheduleLocalNotification:localnotificatio];
}