如何在设备上的前台app中显示双倍高度绿色状态栏(In-Call)?

Seg*_*ero 8 voip pjsip ios uistatusbar in-call

这里有很多问题要求在后台显示红色记录条.很明显我应该使用AVAudioSession类别AVAudioSessionCategoryPlayAndRecord.我的问题是,在我的应用程序中进行有效的VOIP呼叫时,如何在前台应用程序中显示绿色的通话栏(或至少红色条)?所以我可以回到调用UI点击状态栏区域,就像Whatsapp或Skype一样.

我已经尝试过的:

  • voip在这个SO答案中建议的Info.plist + + audio中的UIBackgroundModes键和模式(在进行背景时给我一个红色状态栏,但在前景时没有任何内容)setCategory:AVAudioSessionCategoryPlayAndRecordsetActive
  • 以前的+ AVAudioSession+ setMode:AVAudioSessionModeVoiceChat- 没有用
  • kCFStreamNetworkServiceTypeVoIP在pjsip源中将标志设置为套接字并重新编译它 - 没有帮助.此外,自iOS 8以来已弃用.
  • 创建一个单独的套接字,为inputStream/outputStream设置voip标志:( [self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType]这里获取示例代码)

使用pjsip进行通话.还有什么可以尝试增加状态栏高度,将所有UI移动?有没有任何标准方法可以做到这一点,或者我应该通过调整根UIWindow并在状态栏下设置另一个绿色UIWindow来自行破解它?


编辑:由于没有找到标准方法的答案,接受@ roman-ermolov答案.对于那些会寻找答案的人,我可以建议您自己做几个选择:

  1. 将根视图控制器包装在容器中,就像Apple的iAdSuite with Storyboards示例一样.以我的示例项目为例.可能是制作那个酒吧的最佳方式.
  2. Hack UINavigationBar height(参见方法) - 尚未用于横向,但可能已经解决
  3. 自己控制主UIWindow的框架,在状态栏下放置另一个UIWindow,其中包含所需的内容.

Rom*_*lov 6

我已经对这两个应用程序(WhatsApp和Skype)进行了调查,并了解到他们使用自己的UIView来实现这一功能.

这是Skype: Skype状态栏

这是WhatsApp(Reveal无法获得真正的快照,但它传输基本的想法): 在此输入图像描述

在这两个应用程序中,它是一个UIView,它从屏幕顶部开始,有几种格式输出文本/处理触摸的方法.

在iOS 10中,Apple推出了CallKit.framework,但似乎它没有那种功能,所以唯一的方法就是这样做 - 自己动手做.