バックグラウンドで赤い録音バーを表示するよう求める質問がたくさんあります。AVAudioSession
そのためにカテゴリを使用する必要があることは完全に明らかAVAudioSessionCategoryPlayAndRecord
です。私の質問は、アプリでアクティブな VOIP 通話をしているときに、フォアグラウンド アプリに緑色の通話中バー (または少なくとも赤いバー) を表示するにはどうすればよいですか? そのため、 Whatsappや Skypeと同じように、ステータスバー領域をタップして UI を呼び出すことができました。
私がすでに試したこと:
voip
このSOの回答で示唆されているように、Info.plist + +の主要なaudio
モード(バックグラウンドに移動すると赤いステータスバーが表示されますが、フォアグラウンドでは何も表示されません)UIBackgroundModes
setCategory:AVAudioSessionCategoryPlayAndRecord
setActive
- 前 +
AVAudioSession
+setMode:AVAudioSessionModeVoiceChat
- 機能しなかった - pjsip ソースでフラグをソケットに設定
kCFStreamNetworkServiceTypeVoIP
し、再コンパイルしましたが、役に立ちませんでした。また、iOS 8 以降では非推奨です。 - 別のソケットを作成し、inputStream/outputStream の voip フラグを設定します: (ここ
[self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType]
からサンプル コードを取得)
通話に pjsip を使用します。すべての UI を下に移動して、ステータスバーの高さを増やすには他に何ができますか? それを行うための標準的な方法はありますか、またはルート UIWindow のサイズを変更し、ステータスバーの下に別の緑色の UIWindow を設定して、自分でハックする必要がありますか?
編集:それを行う標準的な方法に対する回答が見つからないため、@roman-ermolovの回答を受け入れました。答えを探す人のために、自分でそれを行うためのいくつかのオプションを提案するかもしれません:
- Apple の iAdSuite with Storyboards example のように、ルート ビューコントローラーをコンテナー内にラップします。たとえば、私のサンプル プロジェクトを見てください。おそらくそのバーを作るための最良の方法.
- UINavigationBar の高さをハックする (このアプローチを参照) - ランドスケープではまだ機能しませんが、おそらく解決される可能性があります
- メイン UIWindow のフレームを自分で制御し、別の UIWindow をステータスバーの下に目的のコンテンツとともに配置します。