如何修改 CallKit 音视频通话呼出的等待音触发时机

描述

如何更改通话的流程,不等待接收通知,直接在呼出界面就振铃?

分析(根因分析、需求分析)

默认情况下,CallKit 呼出方呼出电话后,呼出方触发等待音的时机:

  • 如果接收方在线,收到通话邀请的同时自动回复接收通知(此时还没有接听)。呼出方收到接收方的接收通知后,开始等待音。
  • 如果接收方暂时不在线,会收到音视频的推送,把 App 唤醒,然后自动发送接收通知,呼出方收到了就会开始振铃。
  • 在接收方手机没有联网的时候,或者接收方的 App根本没有集成音视频通话的情况下,呼出方是收不到接收通知的,也就不会振铃。

解决方案

需要修改CallKit 源码。

  1. RCCallBaseViewControllerViewWillAppear 中 添加下面代码:

    NSString *ringPath =
    
     [[[NSBundle mainBundle\] pathForResource:@"RongCloud" ofType:@"bundle"]
    
     stringByAppendingPathComponent:@"voip/voip_calling_ring.mp3"];
    
    [self startPlayRing:ringPath];
    
  2. 请把 shouldAlertForWaitingRemoteResponse 方法中的代码全部删掉。

更多支持

如有疑问,欢迎提交工单