セッションへの参加 — iOS (Swift)

を使用して セッションID そして トークン, OpenTok iOS SDK を使用して OpenTok セッションに接続できます。

このトピックには以下のセクションが含まれます:

セッション ID および認証トークンの作成方法については、以下を参照してください。 セッション作成 そして トークン作成.

OTSession オブジェクトの初期化

セッションに接続する前に、OTSessionオブジェクトをインスタンス化してください。 OTSession init(apiKey:sessionId:delegate:) OpenTok API キーと適切なセッション ID を指定して、このメソッドを呼び出してください:

// Replace kApiKey with your OpenTok API key:
// Replace kSessionId with an OpenTok session ID:
session = OTSession(apiKey: kApiKey, sessionId: kSessionId, delegate: self)

を呼び出すことに注意してください。 OTSession init(apiKey: sessionId: delegate:) メソッドは 作成する OpenTok セッション。これにより、既存の OpenTok セッションを表す Swift の OTSession オブジェクトが作成されます。OpenTok セッションは、OpenTok のサーバーサイドライブラリを使用して作成します。詳しくは、 OpenTokセッションの作成.

デリゲート・オブジェクトとして指定したオブジェクトに、OTSessionDelegateプロトコルのメソッドを実装する。これらのメソッドは、セッション関連のイベントが発生したときに呼び出されます。

セッションへの接続

に電話する。 OTSession connect(withToken:error:) メソッドにクライアントのトークンを渡す:

var error: OTError?
session.connect(withToken: token, error: &error)

if let error = error {
	print("connect failed with error: \(error)")
}

について OTSessionDelegate sessionDidConnect(_:) クライアントがOpenTokセッションに接続すると、このメッセージが送信されます。

について OTSessionDelegate session(_:didFailWithError:) は接続エラーが発生したときに送られる。詳細は OTSessionErrorCode enum の値の説明については code プロパティを使用する。

接続状況の監視

接続ステータスは sessionConnectionStatus プロパティを使用する:

session.sessionConnectionStatus

有効な値は OTSessionConnectionStatus enum.

このプロパティを監視するために、キー・バリュー・オブザーバーを使用することができます。しかし OTSessionDelegate sessionDidConnect(_:) そして OTSessionDelegate sessionDidDisconnect(_:) メッセージは、セッションが接続したり切断したりするときに、セッションのデリゲートに送られる。

セッションからの切断

セッションを切断するには OTSession disconnect(_:) メソッドを使用する。

var error: OTError?
session.disconnect(&error)

if let error = error {
	print("disconnect failed with error: \(error)")
}

切断の検出

について OTSessionDelegate sessionDidDisconnect(_:) メッセージがセッションのデリゲートに送られる。

アプリが中断されると、セッションは自動的に切断されることに注意してください。

セッションへの接続が、接続成功後に発生したエラーによって切断された場合 OTSessionDelegate session(_:didFailWithError:) メッセージは OTSessionDelegate sessionDidDisconnect(_:) メッセージで指定します。OTSessionErrorCode 列挙型は、以下のものを定義する。 code に渡されたOTErrorオブジェクトのプロパティ。 OTSessionDelegate session(_:didFailWithError:) メッセージが表示され、接続が切断された理由が説明されています。

自動再接続

クライアントは、予期せず(たとえば、ネットワーク接続が切断された場合など)セッションから切断された場合、自動的に再接続を試みます。クライアントが切断および再接続した際に送信されるメッセージに対応したい場合を除き、クライアントが自動的に再接続するようにするためのコードを追加する必要はありません。これらのイベントの使用方法を示すサンプルコードについては、 オープントック・リコネクション GitHubのレポにある。

接続が切断され、クライアントが再接続しようとすると OTSessionDelegate sessionDidBeginReconnecting(_:) メッセージがOTSessionオブジェクトのデリゲートに送られる。接続が回復すると OTSessionDelegate sessionDidReconnect(_:) メッセージが送信される。クライアントがコネクションを復元できない場合 OTSessionDelegate sessionDidDisconnect(_:) メッセージが送信される。

これらのイベントに応答して、アプリケーションは(オプションで)一時的な切断、再接続、切断の状態を示すユーザーインターフェース通知を表示することができる。

// OTSession delegate callbacks:
func sessionDidBeginReconnecting(_ session:OTSession) {
	// Display a user interface notification.
}

func sessionDidReconnect(_ session: OTSession) {
	// Adjust user interface.
}

func sessionDidDisconnect(_ session: OTSession) {
	// Adjust user interface.
}

クライアントがセッションから一時的に切断された場合、公開したストリームを購読しているクライアント内の OKSubscriberKitDelegate オブジェクトは、公開したストリームが切断されたとき、および(もしあれば)自動的に再開されたときにメッセージを送信します。詳細については、以下を参照してください。 自動再接続 を参照してください。

デフォルトでは、クライアントがセッションから一時的に切断されている間に送信したシグナルはすべてキューに入れられ、再接続に成功したときに(そして成功したときに)送信されます。このとき OTSession signal(withType: string:connection:retryAfterReconnect:error:) メソッドを使って、切断中にシグナルがキューに入るのを防いでください。詳しくは 自動再接続中に信号が送信されないようにする.

他のクライアントの接続と切断の検出

について OTSessionDelegate session(_: connectionCreated:) メッセージは、他のクライアントがセッションに接続したときに(そしてあなたが接続したときにセッションに接続したクライアントごとに)、セッションのデリゲートに送られる。

について OTSessionDelegate session(_: connectionDestroyed:) メッセージは、他のクライアントがセッションから切断したときに、セッションのデリゲートに送られる。

バックグラウンド状態で実行中

参照 背景状態の管理.