shiguredo / sora-ios-sdk

WebRTC SFU Sora iOS SDK
https://sora-ios-sdk.shiguredo.jp/
Apache License 2.0
42 stars 8 forks source link

バックグラウンド時における挙動について #22

Closed daihase closed 6 years ago

daihase commented 6 years ago

Sora iOS SDKを用いたiOSアプリにて、以下の現象が起きております。

SPアプリ(iOS) <-> PCWeb間でSDKを使ってビデオチャット接続中に、 SPアプリをバックグラウンド状態にする(他のアプリを動作させる)と、

- 接続状態にあったWeb側はiPhone側画面の映像が停止状態となる - 音声も停止 - 再びフォアグラウンドにした場合に接続開始となる、

また、

- バックグラウンドにしてから30秒後に自動的に切断される

という報告がありました。

現在iOS側実装においてこの辺りで特別な制御はしておらず、SDKでそのような挙動が デフォルトなのか、確認させていただきたく問い合わせさせていただきました。

なお、バックグラウンド状態になった際に、

- 映像は停止状態でもOK - 音声は継続 - 自動的な切断はしない

を想定しておりました。

(リリースノート)[https://sora.shiguredo.jp/ios-sdk-doc/release.html]に[UPDATE] API: VideoView: バックグラウンド (ビューがキーウィンドウに表示されていない) では描画処理を中止するようにした とあったため、もしかすると映像の描画自体は停止状態となるが音声は切断されずに接続維持される方法があるのかと思い、もしこちら解決方法等御座いましたらご教授いただけますでしょうか。

宜しくお願い致します。

■確認環境

Xcode9.3 Swift4.1 sora-ios-sdk 2.1.2 iOS11.2.6 Carthage 0.12.0

szktty commented 6 years ago

現在の SDK の実装では、アプリケーションのバックグラウンドに関して特に処理を行っておりません。 iOS アプリケーション側でバックグラウンドの処理を実装しない場合、バックグラウンド移行時に映像と音声の再生は中止され、ネットワーク通信は OS から強制的に解除されます。(ごく短時間であれば接続は保持されるため、すぐにアプリケーションをフォアグラウンドに戻せば映像と音声の送受信を再開できる可能性はあります)

バックグラウンドでも通信を行いたい場合は、 Xcode でバックグラウンドモードに VoIP を指定してみてください。アプリケーションがバックグラウンドに移行しても、音声の通信が可能になります(映像の送信は停止します)。 https://developer.apple.com/jp/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH4-SW27

[UPDATE] API: VideoView: バックグラウンド (ビューがキーウィンドウに表示されていない) では描画処理を中止するようにした

この変更点のバックグラウンドとは VideoView が他の UIView の背後にある状態です。アプリケーションのフォアグラウンド・バックグラウンドではないので、今回は特に気にしなくても問題ないと思います。

daihase commented 6 years ago

@szktty 詳細の方有難うございます。 VoIPの部分はノーチェックだったので、こちら参考にさせていただきます。

この変更点のバックグラウンドとは VideoView が他の UIView の背後にある状態です。アプリケーションのフォアグラウンド・バックグラウンドではないので、今回は特に気にしなくても問題ないと思います。

なるほどです、こちら勘違いをしておりました。 諸々いただいた内容でちょっと持ち帰って実装・検討してみます。

有難うございました。