メインコンテンツまでスキップ

オンデバイス音声アシスタント認証

オプションの AIBudsVoiceAssistant モジュールは、対応デバイスのオンデバイス音声アシスタントを認証します。この認証ブリッジは、音声アシスタントで disabled、basic、advanced の動作モードを選択する処理とは別です。

Animated workflow

オンデバイス音声アシスタント認証

接続済みの対応デバイスで認証が必要な場合に限り、Core が登録済みプラグインを呼び出します。

デバイス + Core

デバイスを接続

対応デバイスの通常の接続フローを完了します。

AIBuds Core

認証要否を判定

Core が音声アシスタント認証の要否を判定します。

音声アシスタント

プラグインを開始

デバイス識別情報を登録済み音声アシスタントブリッジへ渡します。

プラグイン ↔ デバイス

不透明データを交換

ホスト側で解析せず、暗号化された認証データを中継します。

ブリッジ通信
ホストアプリ

最終結果を受信

SDK/デバイスデリゲートから成功またはエラーを通知します。

ブリッジ転送の成功は途中経過です。デリゲートの認証結果がホストアプリに通知される最終結果です。

認証フロー

認証が必要となるタイミングは Core のデバイス実装が判断します。登録済みの OnDeviceVoiceAssistantBridgePlugin は、OnDeviceVoiceAssistantDevice を通じて不透明なブリッジデータを交換します。ホストアプリは最終結果だけを監視し、ブリッジのペイロードを解析、保存、変更してはいけません。

AI を活用して実装

AI で実装

AI でこのワークフローを実装

公式の「AIBuds オンデバイス音声アシスタントの管理」スキルを使い、アプリに合わせて実装します。

https://docs-aibuds.github.io/ja/skills/manage-aibuds-on-device-voice-assistant を読み、その指示に従ってください。このスキルで「AIBuds オンデバイス音声アシスタントの管理」をこの iOS プロジェクトに実装し、検証してください。
公式スキルを見る

登録の管理責任

AIBudsAllInOneSDK.initializeOnDeviceVoiceAssistantPlugin.shared を登録します。モジュール方式では AIBudsVoiceAssistant を組み込み、デバイス接続前にブリッジを登録してください。登録処理は Core の初期化と同じアプリケーションレベルの所有者で管理します。

アプリから手動で「今すぐ認証」を開始する機能 API はありません。SDK が必要と判断したときに、対応デバイスの接続フローから認証が開始されます。

最終結果を監視する

SDK またはデバイスデリゲートのコールバックを実装します。

Swift
func device(
    _ device: DeviceConvertible,
    didReceiveOnDeviceVoiceAssistantAuthResult isSuccess: Bool,
    error: NSError?
) {
    // Update product state on the main queue.
}

このコールバックがホストアプリに通知される最終結果です。ブリッジデータの送信成功は転送の進捗にすぎず、認証成功を意味しません。

実行順序と再試行

別の AI 認証ブリッジも必要なデバイスでは、その結果を受けてからオンデバイス音声アシスタント認証を実行する場合があります。UI コードから競合する認証処理を開始しないでください。

現在の公開契約では、手動再試行 API、タイムアウト、認証状態の保持期間、完全なエラーコード別復旧表は定義されていません。失敗時は診断用にエラーを保持し、製品ポリシーで認証が必要な場合はアシスタントモードを利用不可のままにします。次の試行は、文書化された再接続手順または今後の SDK 再試行契約に従ってください。

セキュリティ上の境界

  • ブリッジデータを不透明な認証情報として扱います。
  • 本番環境では、ペイロードのバイト列、デバイス識別情報、派生シークレットをログへ出力しないでください。
  • ブリッジパケットをキャッシュしたり再送したりしないでください。
  • プラグインと暗号化依存関係の SDK バージョンを一致させます。
  • UI にはユーザーが対処できる失敗状態だけを表示し、詳細エラーは保護された診断情報へ保存します。

検証チェックリスト

  • デバイス接続前にブリッジプラグインが登録されている。
  • All-in-One とモジュール方式の登録を混在させていない。
  • UI が最終デリゲートコールバックを待っている。
  • ホストアプリがブリッジパケットを解析・保存していない。
  • 認証失敗時に、認証必須のアシスタントモードが暗黙に有効にならない。
  • 対応する各デバイスファミリーで切断・再接続動作をテストしている。