Tips
開発に関するヒント、注意点を掲載しています。
Room ライブラリを基準に記載しておりますので、特に断りがない場合 Core ライブラリをご利用いただいている場合は Channel と読み替えてください。
また、リソースとは、SDK で生成される全てのインスタンスおよびそのメモリを指します。
CallKitとの連携
SDK 内部ではWebRTCフレームワークを利用しており、AVAudioSession
の設定を必要に応じて変更しています。
CallKit と SkyWay を共に利用する場合は、CallKit 内部でもAVAudioSession
の設定が変更されることによってバックグラウンド状態での着信時に音声が出力されない問題があるため、以下を実装してください。
1.CXProviderDelegate
を利用するクラスにWebRTCフレームワークをimportする
import WebRTC
2.CXProviderDelegate
において、応答したときのアクション(CXAnswerCallAction
)が取得できるprovider(_:action:)関数の中で以下のコードを実装します。
RTCAudioSession.sharedInstance().useManualAudio = true RTCAudioSession.sharedInstance().isAudioEnabled = false do { RTCAudioSession.sharedInstance().lockForConfiguration() try RTCAudioSession.sharedInstance().setConfiguration(RTCAudioSessionConfiguration()) RTCAudioSession.sharedInstance().unlockForConfiguration() }catch { print("Setting configuration failed: \(error.localizedDescription)") }
3.CXProviderDelegate
のprovider(_:didActivate)関数の中で以下のコードを実装します。
RTCAudioSession.sharedInstance().audioSessionDidActivate(audioSession) RTCAudioSession.sharedInstance().isAudioEnabled = true
4.CXProviderDelegate
のprovider(_:didDeactivate)関数の中で以下のコードを実装します。
RTCAudioSession.sharedInstance().audioSessionDidDeactivate(audioSession) RTCAudioSession.sharedInstance().isAudioEnabled = false RTCAudioSession.sharedInstance().useManualAudio = false
Pluginの使い方
Core ライブラリでは Plugin を使って追加の機能を利用できます。
SFU Bot ライブラリを例に Plugin の登録方法を以下に示します。
let sfuPlugin: SFUBotPlugin = .init(options: nil) Context.registerPlugin(sfuPlugin)
SDKのログレベルを変更する
Context.setup(withToken:options:completion:)
で設定できるオプションで変更できます。
設定可能なログレベルと説明については、iOS SDK リファレンスを参照してください。
let contextOpt: ContextOptions = .init() contextOpt.logLevel = .trace try? await Context.setup(withToken: token, options: nil)
デフォルトはエラーレベルです。
アプリケーション開発時は、不具合の調査やサポートとのやり取りを円滑に行うために、ログレベルを trace
に設定することをおすすめします。
SkyWayのログを取得する
Logger.delegate
にデリゲートを設定し、didReceiveLog(_:at:)
を実装することで、SkyWay内部のログを取得することができます。
出力されるログは、ContextOptions.logLevel
にセットした値以上のレベルのものとなります。
SKWプレフィックスについて
一部 API には SKW
プレフィックスがついています。
Core ライブラリや SFU Bot ライブラリは Objective-C++ 言語で実装されているためコーディング規約として SKW
プレフィックスを付与しています。
Swift アプリケーションからは NS_SWIFT_NAME
で SKW
プレフィックスなしで設定していますが、Storyboard や Interface Builder などをご利用いただく際などに SKW
プレフィックスで設定するケースがあります。