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

前端之家收集整理的这篇文章主要介绍了ios – 如何在设备上的前台app中显示双倍高度绿色状态栏(In-Call)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这里有很多问题要求在后台显示红色录音条.很明显我应该使用AVAudioSession类AVAudioSessionCategoryPlayAndRecord.我的问题是,在我的应用程序中进行有效的VOIP呼叫时,如何在前台应用中显示绿色的通话栏(或至少红色条)?所以我可以回到调用UI点击状态栏区域,就像 Whatsapp或Skype一样.

我已经尝试过的:

>在IP.plist中的UIBackgroundModes键中的voip和音频模式setCategory:建议in this SO answer的AVAudioSessionCategoryPlayAndRecord setActive(当我去背景时给我一个红色状态栏,但在前景时没有任何东西)
>上一个AVAudioSession setMode:AVAudioSessionModeVoiceChat – 没有用
>将kcfStreamNetworkServiceTypeVoIP标志设置为pjsip源中的套接字并重新编译它 – 没有帮助.此外,自iOS 8以来已弃用.
>创建一个单独的套接字,为inputStream / outputStream设置voip标志:[self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType](从here获取示例代码)

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

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

>将根视图控制器包装在容器内,如Apple’s iAdSuite with Storyboards example所示.例如,查看我的sample project.可能是制作那个酒吧的最好方法.
> Hack UINavigationBar高度(参见this方法) – 对景观不起作用,但可能会解决
>自己控制主UIWindow的框架,在状态栏下放置另一个UIWindow,其中包含所需的内容.

解决方法

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

这是Skype:

这是WhatsApp(Reveal无法获得真正的快照,但它传输的基本想法):

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

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

猜你在找的iOS相关文章