如果我们在前台启动应用程序,一切正常。但是,当应用程序先前被杀死并通过在锁定屏幕上接收 PushKit 通知重新启动时,就会出现问题。
当应用收到 PushKit 通知时,我们会显示 CallKit UI。这可以正常工作。用户可以通过 WebRTC 接听电话并建立连接。但是根本没有音频。
奇怪的是,如果用户通过点击应用程序图标从 CallKit 屏幕打开应用程序,音频会按预期启动并正常工作。所以看起来问题出在音频会话配置上。也许出于某种原因,iOS 不允许激活我们的音频会话。
我们正在使用 Google 的 WebRTC 库:
pod 'GoogleWebRTC', '1.1.26115'
我们尝试了不同的方法:
启用/禁用音频背景模式。
didActivate
在从 CallKit 委托接收回调之前和之后配置音频会话。手动配置音频会话并使用
RTCAudioSession.sharedInstance
WebRTC 库。启用和禁用
RTCAudioSession.useManualAudio
.
这是我们遇到问题的场景:
杀死应用程序。锁定手机。
从另一部电话呼叫该用户。
PushKit 启动应用程序,应用程序显示 CallKit 屏幕,用户接听电话。
连接正确建立。通话处于活动状态,但两端没有声音。
点击 CallKit 屏幕上的应用程序图标(最右下角)并解锁手机。音频开始。
任何帮助表示赞赏。