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
andaudio
modes inUIBackgroundModes
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)- Previous +
AVAudioSession
+setMode:AVAudioSessionModeVoiceChat
- didn't work - Set
kCFStreamNetworkServiceTypeVoIP
flag to socket in pjsip sources and recompiled it - didn't help. Also, deprecated since iOS 8. - Created a separate socket, set the voip flag for inputStream/outputStream:
[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:
- Wrap your root viewcontroller inside container, like in Apple's iAdSuite with Storyboards example. Take a look at my sample project for example. Probably the best way to make that bar.
- Hack UINavigationBar height (see this approach) - doesn't work for landscape yet, but may probably be solved
- Control your main UIWindow's frame yourself, place another UIWindow under the statusbar with the desired content.