Ambient API を使ってみる

Ambient API を使用すると、アプリケーションでアンビエント デバイスをユーザーの Google フォト アカウントに接続し、選択した写真を表示できます。

Ambient API のフロー

Ambient API がデバイスを接続し、メディア アイテムを取得して表示する仕組みは次のとおりです。

  1. 既存のデバイスを確認する(推奨): 新しいデバイスを作成する前に、現在のユーザーのデバイスがすでに存在するかどうかを確認することをおすすめします。アプリは、内部ユーザーと、アプリを介して作成されたデバイス用に Google が提供する deviceId とのマッピングを維持する必要があります。ユーザーの deviceId が見つかった場合は、必要に応じて認証トークンの更新に進むことができます。

  2. OAuth 2.0 認証を開始する: 認証コードをリクエストして、TV と入力機能が限られたデバイス用の OAuth 2.0 フローを開始します。

  3. 新しいデバイスを作成する: アプリは、CreateDevice を呼び出し、有効な v4 UUID を提供することで、ユーザーの Google フォト アカウントにデバイスを作成します。

    デバイスの作成に成功すると、API は Google が割り当てた deviceId を含む AmbientDevice オブジェクトを返します。アプリでこの deviceId を保存し、ユーザーに関連付けることが重要です。

  4. settingsUri を表示する: AmbientDevice オブジェクトには settingsUri が含まれます。この URI をユーザーに提示します(通常は QR コードとして提示します)。ユーザーはモバイル デバイスを使用してこの QR コードをスキャンできます。この URI は、ユーザーを Google フォト アプリに誘導します。ユーザーは、アンビエント デバイスに表示するメディアソース(アルバムなど)を構成できます。

  5. mediaSourcesSet をポーリングする: アプリケーションは、deviceId を指定して GetDevice メソッドを定期的に呼び出し、周囲のデバイスのステータスを確認する必要があります。AmbientDevice レスポンスの mediaSourcesSet フィールドをモニタリングします。最初は false になります。

    ユーザーが Google フォト アプリでメディアソースを正常に選択すると、このフィールドは true に変わります。

    AmbientDevice レスポンスには、ポーリング頻度のガイドラインとして使用する必要がある pollInterval を含む pollingConfig が含まれています。

  6. メディア アイテムを取得する: mediaSourcesSet が true を返すと、アプリケーションはユーザーが選択したメディア アイテムの取得を開始できます。

    ListMediaItems メソッドを呼び出し、deviceId を指定します。API は、AmbientMediaItem オブジェクトのリストを含む ListMediaItemsResponse を返します。各 AmbientMediaItem には、id、createTime、追加のメタデータを含む MediaFile オブジェクトなどの詳細が含まれます。MediaFile には、メディア アイテムの実際のバイトを取得するために使用できる baseUrl が含まれています。その他の baseUrl パラメータの詳細については、メディア アイテムの一覧表示と取得のガイドをご覧ください。

  7. メディア アイテムを表示する: MediaFile の baseUrl を使用して、アンビエント デバイスにメディア コンテンツをダウンロードして表示します。

重要な考慮事項

デバイスの制限と管理:

  • デバイスの上限: アプリケーションのユーザーあたりのデバイスの上限は 100 台です。
  • デバイスのアクティビティとトークン: デバイスとユーザー認証トークンのライフサイクルを管理する必要があります。デバイスがアクティブな状態を維持する期間と、デバイスが非アクティブになった場合やトークンの有効期限が切れた場合にトークンの更新や再認証をどのように処理するかを検討します。

詳しくは、デバイスの作成と管理をご覧ください。

メディア アイテムの操作:

  • メディア アイテムの使用: baseUrl を使用してメディア アイテムのコンテンツを適切に取得して処理する方法(必要な認証やパラメータなど)を理解します。
  • エラー処理: デバイスの NOT_FOUND、メディアソースが設定されていない場合の FAILED_PRECONDITION、デバイスの制限に達した場合の RESOURCE_EXHAUSTED などのシナリオを含め、API 呼び出しの堅牢なエラー処理を実装します。

メディア アイテムの一覧表示と取得のガイドには、コンテンツ ポリシーとフィルタリングに関する情報など、詳細が記載されています。

次のステップ