AOQ Client SDK の接続ステートマシンと、対応する API 呼び出しについて説明します。
接続状態図
次の図は、AOQ Client SDK の接続状態遷移を示しています。
AOQ Client SDK 接続状態図
状態の説明
状態 | 列挙値 | 説明 |
|---|---|---|
接続中 | 1 |
|
接続済み | 2 | 接続が確立されました。音声、動画、データメッセージを正常に送受信できます。 |
失敗 | 3 | 接続エラー (認証失敗、タイムアウト、サーバー拒否など) が発生しました。SDK は自動的に「切断」に遷移します。 |
切断 | 0 | 初期状態、または意図的あるいは予期しない切断後の終端状態です。 |
状態遷移ルール
- アプリケーションが
connectを呼び出す →接続中に遷移します。 - 接続に成功 →
接続中から接続済みに遷移します。 - 接続に失敗 →
接続中から失敗に遷移し、その後 SDK は自動的に切断に遷移します。 - 接続に失敗 →
接続済みから失敗に遷移し、その後 SDK は自動的に切断に遷移します。 - アプリケーションが
disconnectを呼び出す →接続済みから切断に遷移します。
注記: 失敗 は一時的な状態です。SDK が onConnectionStatusChange(failed) をトリガーした後、自動的に 切断 に遷移します。アプリケーション層で手動で disconnect を呼び出す必要はありません。
connect API
connect を呼び出して、AI サービスへの接続を開始します。AppServer の allocate エンドポイントから返された認証情報を渡します。
メソッドシグネチャ
Android:public abstract int connect(@NonNull AoqConnectConfig config);
iOS:
- (int)connect:(AoqConnectConfig * _Nonnull)config;
HarmonyOS:
connect(config: AoqConnectConfig): number;
戻り値: 0 は呼び出しに成功したことを示します (接続は非同期で確立されます)。< 0 は失敗を示します。
動作
- 呼び出し直後に
onConnectionStatusChange(connecting)コールバックをトリガーします。 - 接続に成功すると、
onConnectionStatusChange(connected)コールバックをトリガーします。 - 接続に失敗すると、
onConnectionStatusChange(failed)コールバックをトリガーします。
disconnect API
disconnect を呼び出して、AI サービスへの接続を意図的に閉じます。
メソッドシグネチャ
Android:public abstract int disconnect();
iOS:
- (int)disconnect;
HarmonyOS:
disconnect(): number;
戻り値: 0 は成功を示します。< 0 は失敗を示します。
動作
- 呼び出し後に
onConnectionStatusChange(disconnected)コールバックをトリガーします。 - エンジンは自動的に解放されません。再度
connectを呼び出して再接続できます。 - 未接続時に
disconnectを呼び出しても安全であり、0 を返します。
onConnectionStatusChange コールバック
SDK は、接続状態が変化するたびにこのコールバックをトリガーします。
Android:public void onConnectionStatusChange(
@NonNull AoqClientEngine.AoqConnectionStatus status) {}
iOS:
- (void)onConnectionStatusChange:(AoqConnectionStatus)status;
HarmonyOS:
onConnectionStatusChange?: (status: AoqConnectionStatus) => void;
例
func onConnectionStatusChange(_ status: AoqConnectionStatus) {
switch status {
case .connecting:
print("接続中...")
case .connected:
print("接続済み")
// 接続確立後に session.update を送信できます
case .failed:
print("接続失敗")
// SDK は自動的に「切断」に遷移します。手動で disconnect を呼び出す必要はありません
case .disconnected:
print("切断")
// アプリケーションロジックに基づいて再接続するかどうかを判断します
}
}