这里有很多问题要求在后台显示红色录音栏。很明显我应该使用AVAudioSession
类别AVAudioSessionCategoryPlayAndRecord
为了那个原因。我的问题是,当我的应用程序中有活动的 VOIP 通话时,如何在前台应用程序中显示绿色的通话中栏(或至少是红色栏)?所以我可以返回调用 UI 点击状态栏区域,就像Whatsapp或者 Skype 可以。
我已经尝试过的:
-
voip
and audio
模式在UIBackgroundModes
输入 Info.plist +setCategory:AVAudioSessionCategoryPlayAndRecord
+ setActive
按照建议在这个SO答案中(进入后台时给我一个红色状态栏,但在前台时没有任何内容)
- 上一页 +
AVAudioSession
+ setMode:AVAudioSessionModeVoiceChat
- 没用
- Set
kCFStreamNetworkServiceTypeVoIP
将标志标记到 pjsip 源中的套接字并重新编译它 - 没有帮助。此外,自 iOS 8 起已弃用。
- 创建一个单独的套接字,为 inputStream/outputStream 设置 voip 标志:
[self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType]
(示例代码取自here)
使用 pjsip 进行呼叫。我还能尝试什么来增加状态栏高度,将所有 UI 下移?
是否有任何标准方法可以做到这一点,或者我应该通过调整根 UIWindow 的大小并在状态栏下设置另一个绿色 UIWindow 来自己破解它?
Edit:
由于没有找到标准方法的答案,因此接受了 @roman-ermolov 的答案。对于那些想要寻找答案的人,我可能会建议您自己做几个选择:
- 将根视图控制器包装在容器内,例如Apple 的 iAdSuite 和 Storyboards 示例。看看我的示例项目例如。可能是制作该酒吧的最佳方法。
- 破解 UINavigationBar 高度(参见this方法) - 尚不适用于景观,但可能会解决
- 自己控制主 UIWindow 的框架,将另一个 UIWindow 放置在状态栏下并包含所需的内容。
我对这两个应用程序(WhatsApp 和 Skype)进行了调查,发现它们使用自己的 UIView 来实现此功能。
This is Skype:
This is WhatsApp (Reveal can't get real snapshot, but it transmits basic idea):
在这两个应用程序中,它都是一个从屏幕顶部开始的 UIView,以及几种用于格式化输出文本/处理触摸的方法。
苹果在 iOS 10 中引入了CallKit.framework,但似乎它也没有这种功能,所以唯一的方法就是 - 自己动手。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)