There's a lot of questions here asking for displaying a red recording bar while in background. It's totally clear I should use AVAudioSession
category AVAudioSessionCategoryPlayAndRecord
for that. My question is how can I display a green In-Call bar (or at least red bar) in a foreground app when having an active VOIP call in my app? So I could return to call UI tapping a statusbar area, just like Whatsapp or Skype does.
What I've already tried:
voip
and audio
modes in UIBackgroundModes
key in Info.plist + setCategory:AVAudioSessionCategoryPlayAndRecord
+ setActive
as suggested in this SO answer (gives me a red statusbar when going background, but nothing while in foreground)AVAudioSession
+ setMode:AVAudioSessionModeVoiceChat
- didn't workkCFStreamNetworkServiceTypeVoIP
flag to socket in pjsip sources and recompiled it - didn't help. Also, deprecated since iOS 8.[self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType]
(took the sample code from here)Using pjsip for calls. What else can I try to increase a statusbar height, moving all the UI down? Are there any standard ways to do that, or I should hack it my own by resizing a root UIWindow and setting another green UIWindow under the statusbar?
Edit: Since no answer is found for a standard way to do that, accepted @roman-ermolov answer. For those who will search for an answer I may suggest several options to do it yourself:
I have made an investigation of both apps (WhatsApp & Skype) and learned that they used their own UIView for achieving this functionality.
This is WhatsApp (Reveal can't get real snapshot, but it transmits basic idea):
In both apps it is a UIView which starts on top of the screen and several methods for format output text / handle touch on it.
In iOS 10 Apple introduced CallKit.framework, but it seems that it has not that kind of functionality too, so the only way to do it - do it yourself.