Jest tu wiele pytań z prośbą o wyświetlenie czerwonego paska nagrywania w tle. Jest całkowicie jasne, że powinienem użyć do tego kategorii AVAudioSession
kategorii AVAudioSessionCategoryPlayAndRecord
. Moje pytanie brzmi: jak mogę wyświetlać zielony pasek In-Call (lub przynajmniej czerwony pasek) w aplikacji na pierwszym planie, gdy ma aktywne połączenie VOIP w mojej aplikacji? Mogłem więc powrócić, aby zadzwonić do UI, dotykając paska stanu, tak jak Whatsapp lub Skype.Jak wyświetlić zielony pasek stanu podwójnej wysokości (In-Call) w aplikacji na pierwszym planie na urządzeniu?
Co ja już próbowałem:
voip
iaudio
tryby wUIBackgroundModes
kluczu Info.plist +setCategory:AVAudioSessionCategoryPlayAndRecord
+setActive
jak sugeruje in this SO answer (daje mi czerwony pasek stanu, gdy dzieje w tle, ale nic, podczas gdy w planie)- Poprzedni +
AVAudioSession
+setMode:AVAudioSessionModeVoiceChat
- nie działa - Ustaw
kCFStreamNetworkServiceTypeVoIP
flagę gniazdko w źródłach PJSIP i rekompilacji to - nie pomogło. Również przestarzałe od iOS 8. - utworzono osobną gniazdo ustaw flagę VoIP InputStream/OutputStream:
[self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType]
(wziął przykładowy kod z here)
Korzystanie PJSIP dla połączeń. Co jeszcze mogę spróbować zwiększyć wysokość paska statusu, przestawiając cały interfejs? Czy są jakieś standardowe sposoby, aby to zrobić, czy też powinienem włamać się do niego przez zmianę rozmiaru głównego UIWindow i ustawienie innego zielonego UIWindow pod paskiem stanu?
Edit: Ponieważ żadna odpowiedź znajduje się w standardowy sposób to zrobić, akceptowane @ roman-Ermolov odpowiedź. Dla tych, którzy będą szukać odpowiedzi mogę zasugerować kilka opcji, aby to zrobić samemu:
- Owiń viewcontroller korzeni wewnątrz pojemnika, jak w Apple's iAdSuite with Storyboards example. Spójrz na przykład na moją sample project. Prawdopodobnie najlepszy sposób na zrobienie tego paska.
- wysokość Hack UINavigationBar (patrz this podejście) - nie działa jeszcze na krajobraz, ale prawdopodobnie może być rozwiązany
- Kontroluj ramkę głównego UIWindow za siebie, umieścić kolejną UIWindow pod pasku stanu o żądanej treści.
Czy moja odpowiedź była pomocna, czy może szukasz szczegółów dotyczących implementacji? Jeśli tak, czy mógłbyś podać dodatkowe informacje na temat swoich wymagań? –
To było bardzo pomocne, dziękuję. Wciąż mam nadzieję, że istnieje systemowy sposób włączania się w razie potrzeby. Jeśli nikt tego nie znajdzie, przyjmuję twoją odpowiedź –