Es gibt viele Fragen, die sich hier stellen, um im Hintergrund einen roten Aufnahmebalken anzuzeigen. Es ist völlig klar, dass ich AVAudioSession
Kategorie AVAudioSessionCategoryPlayAndRecord
dafür verwenden sollte. Meine Frage ist, wie kann ich eine grüne In-Call-Leiste (oder zumindest einen roten Balken) in einer Vordergrund-App anzeigen, wenn ich einen aktiven VOIP-Anruf in meiner App habe? So könnte ich zurückrufen, um die Benutzeroberfläche aufzurufen, die auf einen Statusleistenbereich klopft, genau wie Whatsapp oder Skype tut.Wie wird eine grüne Statusleiste mit doppelter Höhe (In-Call) in der App im Vordergrund auf dem Gerät angezeigt?
Was ich schon versucht habe:
voip
undaudio
Modi inUIBackgroundModes
Schlüssel in Info.plist +setCategory:AVAudioSessionCategoryPlayAndRecord
+setActive
als in this SO answer vorgeschlagen (gibt mir einen roten statusbar wenn Hintergrund gehen, aber nichts, während im Vordergrund )
- Zurück +
AVAudioSession
+setMode:AVAudioSessionModeVoiceChat
- funktionierte nicht - Set
kCFStreamNetworkServiceTypeVoIP
Flagge in pjsip Quellen an Buchse und neu kompiliert es - nicht helfen. Auch als veraltet, da iOS 8. - eine separate Buchse Erstellt, stellen Sie die voip-Flag für input/output:
[self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType]
(nahm den Beispielcode aus here)
Mit pjsip für Anrufe. Was kann ich sonst noch versuchen, um eine Höhe der Statusleiste zu erhöhen und die gesamte Benutzeroberfläche zu verkleinern? Gibt es irgendwelche Standardmethoden, um dies zu tun, oder sollte ich es mir selbst hacken, indem ich die Größe eines Root-UIWindows ändere und ein anderes grünes UIWindow unter der Statusleiste einstelle?
bearbeiten: Da keine Antwort für eine Standardmethode gefunden zu tun, akzeptiert @ römisch-Ermolov Antwort. Für diejenigen, die nach einer Antwort suchen kann ich mehrere Optionen vorschlagen, es selbst zu tun:
- Wickeln Sie Ihre Wurzel Viewcontroller innerhalb des Behälters, wie in Apple's iAdSuite with Storyboards example. Schauen Sie sich zum Beispiel meine sample project an. Wahrscheinlich der beste Weg, diese Bar zu machen.
- Hack UINavigationBar Höhe (siehe this Ansatz) - funktioniert nicht für die Landschaft noch, kann aber wahrscheinlich
- Kontrollieren Sie Ihre Haupt UIWindow des Rahmens selbst, legen Sie eine weitere UIWindow unter der Statusbar mit dem gewünschten Inhalt gelöst werden.
War meine Antwort hilfreich oder sind Sie auf der Suche nach Implementierungsdetails? Wenn ja, könnten Sie bitte zusätzliche Informationen zu Ihren Anforderungen bereitstellen? –
Es war sehr hilfreich, danke. Ich hoffe immer noch, dass es ein System gibt, um die In-Call-Leiste einzuschalten. Wenn niemand das findet, nehme ich deine Antwort an –