iOS APP在后台情况下播放语音

前言

最近在做环信视频通话时,遇到了一个客户提的需求,就是APP处于后台的时候,当有用户拨打视频通话过来时,能够循环播放一段自定义铃声,并弹出通知信息。
具体做法是在用户收到音视频通话请求时,APP发送一个本地通知,同时开启后台播放音频文件。

实现

1、开启后台模式

enter description here

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];
       }

你可能感兴趣的:(iOS APP在后台情况下播放语音)