在 iOS 中显示自定义 VoIP 应用程序的通话状态栏(双高)

Showing in-call status bar (double height) for a custom VoIP app in iOS

我在 iOS 中使用 Sinch 库创建了一个 VoIP 应用程序。我能够成功拨打电话,但在创建双倍高度的通话状态栏时遇到问题。我的意思是,我的电话 window 出现了,在那个 window 上我有一个按钮可以离开视图并转到其他地方(无需挂断电话),我想要一个绿色的双倍高度-显示呼叫状态栏,以便我可以点击它和 return 我呼叫视图。

当我将应用程序发送到后台时,我在 springboard 上看到 return 到我的应用程序的双高红色条,因此后台模式和 voip 模式似乎设置正确。我确定 WhatsApp 设法获得了绿色条(如图 here 所示)。

我已经搜索了一段时间,我能找到的最好的方法是使用 AVAudioSession 作为对 问题的回答。

然而,即使按照那里的说明并尝试添加一些其他想法,我也无法弹出绿色的通话状态栏。感觉我必须告诉 iOS 我的呼叫正在处理哪个视图?以便它知道何时显示绿色条?

我试过的代码:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionModeVoiceChat error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];

这显然已经由 Sinch 处理,但是,正如他们 documentation 中提到的,所以我真的很茫然。

The Sinch SDK applies the audio session category mode AVAudioSessionModeVoiceChat for improved voice quality.

所以IOS当您在后台录制时,会自动按照您的描述显示红色条。要显示您自己的自定义,您走在正确的轨道上,您需要在每个视图上都有自己的通知,我会实现一个基本控制器并确保它在需要时可见。检查此 SO 以了解执行此操作的一种方法

感谢来自 Sinch 的@cjensen 的帮助,很有用。发布我自己的答案,因为我觉得他的回答没有完全回答我的问题。

基本上iOS没有显示应用内状态栏的内置功能,您需要创建自己的。 @cjensen 的回复让我看到了 this 解释这一点的文章。

如果您需要应用内通话状态栏,您需要自己创建或使用像 KrauseFx TSMessages 这样的库来为您创建。按照@cjensen 的建议使用 UILocalNotification 只是提供入口点以决定 何时 创建此横幅的一种方法。