公開に関するよくある質問
コンテンツ公開ジョブを管理するのは誰ですか?
アプリ デベロッパーがコンテンツ公開ジョブを管理し、Engage サービスにリクエストを送信します。そうすることで、デベロッパー パートナーは、ユーザーにコンテンツを公開するタイミングや方法をより細かく制御できます。これにより、コンテンツを公開するためにパートナー アプリを頻繁に起動する必要がなくなります。
デベロッパーはすべてのクラスタタイプを公開する必要がありますか?
技術的には、クラスタを 1 つだけ公開する形でも問題ありませんが、複数追加することを強くおすすめします。複数追加しないと、コンテンツをアピールする機会を逃すことになります。各カテゴリのすべてのクラスタタイプを公開することを強くおすすめします。
デベロッパー パートナーは、アプリの実行中、ワーク マネージャーを使用してデータをどのくらいの頻度で公開する必要がありますか?
この点はデベロッパー パートナーが判断します。一般的なおすすめコンテンツについては 1 日に 1 回または 2 回公開することをおすすめします。ショッピング カート、再注文、その他の継続コンテンツについては、イベント駆動型の方法を使用することをおすすめします(たとえば、ユーザーがカートに商品を追加したときや、映画を途中で停止したときのコールバックとしてワーカーを開始します)。ソーシャル アプリでは、アプリの使用後に更新されたおすすめクラスタを公開することが重要です。ソーシャル アプリのユーザーは最新の推奨事項に関心があり、理想的には投稿を 1 回だけ見たいと考えています。
デベロッパーが削除 API を呼び出すタイミングはいつですか?
削除 API は、公開するコンテンツがない場合にのみ呼び出す必要があります。コンテンツを置き換えるために、削除 API と公開 API を後から呼び出すことはしないでください。公開 API は以前のコンテンツを自動的に削除します。
ブロードキャスト インテントに関するよくある質問
Android アプリのデベロッパーがブロードキャスト インテントに登録する必要があるのはなぜですか?
ユーザーに最新のコンテンツを提供するには、ユーザーがそのアプリを頻繁に使用していない場合でもデータ同期をトリガーできるよう、ブロードキャスト インテントを使用する必要があります。
ブロードキャスト インテントをテストできない
検証アプリは、権限付きのブロードキャスト インテントのテストをサポートしていません。テスト中は権限を削除し、ステップ 6 で SDK を製品版に切り替える前に権限を追加し直す必要があります。
バックグラウンド実行が許可されていません
ブロードキャスト インテントの登録中に、次のようなエラーが発生することがあります。
Background execution not allowed: receiving Intent
{ act=com.google.android.engage.action.PUBLISH_RECOMMENDATION .. }
ブロードキャスト レシーバを動的に登録する必要があります。
class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received
}
public static void registerBroadcastReceivers(Context context) {
context = context.getApplicationContext();
// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION,
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null));
...
}
ワークフローに関するよくある質問
SDK との統合中に、次のようなエラーが発生することがあります。
アプリ、クラスタ、エンティティ レベルでの検証エラー
アプリ、クラスタ、エンティティ レベルの概要には、検証エラーの数が表示されます。これらのエラーは、必須フィールドが欠落しているか、無効な値が指定されている場合に発生します。エラー メッセージは、関連する各フィールドの下に赤色で表示されます。APK を共有する前に、すべての検証エラーを修正し、正しさを確認します。
ディープリンクのテスト
ディープリンクはパッケージ名と関連付けられています。ディープリンクをテストするには、adb ツールの使用をおすすめします。
adb shell am start -W -a android.intent.action.VIEW -d <DEEPLINK URI> <PACKAGE NAME>
統合の影響を計算するにはどうすればよいですか?
ディープリンクは、アトリビューションをトラッキングするのに最適な方法です。ユーザーをアプリに誘導するディープリンク URL は、追加のトラッキング パラメータに配置できます(例: http://xx/deeplink?source_tag=engage)。
デベロッパーは、独自のトラッキング パラメータを追加し、影響を計算するためのアトリビューションを指定できます。
Engage for TV 2.0 に関するよくある質問
一般的な質問
Engage とは
エンゲージメントは、「前回視聴したところから再開する」というエクスペリエンスを次のレベルに引き上げます。視聴者は、より幅広いデバイスでコンテンツをシームレスに再開できるようになります。たとえば、Google TV で映画を見始めて、通勤中にスマートフォンで簡単に続きを見ることができます。これがエンゲージメントの力です。
この新しいシステムは、Google エコシステム全体でスムーズでストレスのないエクスペリエンスを提供することで、視聴者のエンゲージメントと維持率を高めるように設計されています。
Video Discovery API は Engage と同じですか?
はい、同じです。Engage SDK は、視聴を続ける行のサポートを含むライブラリです。Engage は動画よりも多くのコンテンツ エンティティ タイプをサポートしているため、統合の名前が「動画ディスカバリー」ではなくなりました。
Engage を使用するメリットは何ですか?
回答: エンゲージメント機能を使用すると、視聴者は使用しているデバイスに関係なく、コンテンツの続きを簡単に視聴できます。仕組みは次のとおりです。
- Google 全体でシームレスな体験: Google TV で視聴を開始し、Android スマートフォン、iPhone、Android タブレットでシームレスに視聴を続けることができます。アプリをまだインストールしていないデバイスでも動作します。
- エンゲージメントとユーザー維持の向上: Engage を使用すると、新しいデバイスでもユーザーをアプリに呼び戻すことができます。ユーザーがお気に入りの番組を再開できるようにすることで、視聴を継続する可能性が高まります。
- 幅広いリーチ: Google TV だけでなく、Google Play コレクションやその他の Google メディア アプリなど、他の Android メディア エクスペリエンスでも Engage を利用できます。
- 下位互換性: 以前の「次のおすすめ」機能をすでに使用している場合でも、問題ありません。Engage は下位互換性があるため、既存の統合は引き続き機能します。
重要な注意事項: 新しい「続きを見る」インテグレーションはすべて Engage を使用する必要があります。以前の「複数デバイス間の次のおすすめ」システムは段階的に廃止されます。
Engage はどのサーフェスをサポートしていますか?
- Google TV
- Android TV(デバイス上のみ、Engage SDK をサポート)
- Google TV Android モバイルアプリ
- Google TV iOS モバイルアプリ
- Google Play コレクション
- Google エンターテイメント スペース
- iOS デバイス(REST API 統合)。
Engage SDK は「続きを見る」用ですか?
はい。Engage SDK は、視聴を続ける行のコンテンツをサポートしています。Engage との統合が必要です。
Engage はすべてのユーザーが利用できますか?
Engage は段階的にリリースされます。
- 早期アクセス: 早期アクセス プログラム(EAP)を通じて、一部のパートナーにのみアクセス権を付与します。
- アクセスを拡大: Engage をすべてのデベロッパーがまもなく利用できるよう、Google は取り組んでいます。
スムーズかつ成功裏にリリースできるよう、ロールアウトを管理するための保護措置が講じられています。これには、Engage 側の許可リストと、Engage SDK 内の個別のチェックの両方が含まれます。EAP パートナーである場合、またはすぐにオンボーディングを希望する場合は、Engage SDK の統合を開始する前にアクセス権を設定できるよう、Google までご連絡ください。
推奨される画像サイズはありますか?
「エンティティを作成する」セクションで、画像要件が更新されました。
この新しい API ドキュメントでは、Google サーバーがクライアントから取得した「続きを見る」データは、すべてのデバイスに反映されますか?
新しい API では、[続きを見る] 行のコンテンツに関して次のような大幅な改善が行われています。
Google TV 間でシームレスなエクスペリエンス: ユーザーは、1 台の Google TV で視聴を開始し、同じアカウントでログインしている別の Google TV で再開できます。この機能は、古い Android TV バージョンでも動作します。
モバイルアプリの統合: Engage のコンテンツが Android と iOS 向けの Google TV モバイルアプリに表示されるため、ユーザーはテレビとモバイル デバイスをシームレスに切り替えることができます。
ユーザー維持率の向上: アプリがインストールされていないデバイスや、ユーザーがログインしていないデバイスでも、「続きを見る」行のコンテンツによってユーザーの再エンゲージメントが促され、維持率が向上します。
他のプラットフォームへの拡大: Engage は、Android、Play コレクション、タブレット、Android の他の Google メディアアプリやサーフェスなどの他の Google メディア プラットフォームにも拡大され、デバイス間のユーザー エンゲージメントを最大化します。
継続クラスタに公開できるエンティティの数に上限はありますか?
各デベロッパー パートナーは、継続クラスタ内で最大 5 個のエンティティに制限されます。この制限は、複数のメディア プロバイダが共有するスペースである Google TV の [続きを見る] 行でコンテンツを公平に配信するためのものです。
6 個以上のエンティティを公開しようとするとどうなりますか?
エンティティ数が 5 個を超えると、Engage SDK は公開リクエストを拒否します。公開を成功させるには、リクエスト内のエンティティ数を減らす必要があります。ユーザーが視聴を中断したエンティティのみを含めるようにしてください。ほとんどの場合、そのようなエンティティは少数です。そのようなエンティティが 5 個を超える場合は、最新のエンティティを選択して公開できます。
エンティティの数に上限があるのはなぜですか?
Google TV の [続きを見る] 行には、さまざまなメディア プロバイダのコンテンツが表示されます。プロバイダごとのエンティティ数を制限することで、ユーザーがすべてのお気に入りのソースから多様なコンテンツを選択できるようにし、公平でバランスの取れたユーザー エクスペリエンスを促進します。
確認アプリに関する質問
送信前に検証アプリでアプリをテストすることは必須ですか?
はい。APK を送信する前に、検証アプリでアプリをテストすることが不可欠です。
実装に自信をお持ちであることは承知しておりますが、Engage の統合には複雑なコンポーネントが多数含まれています。検証アプリはセーフティ ネットとして機能し、潜在的な問題を早期に検出して、長期的に貴重な時間と労力を節約します。
スムーズなリリースと優れたユーザー エクスペリエンスを保証するための簡単なチェックアップと考えてください。
問題を事前に特定して対処することで、不承認や再送信の煩わしさを回避できます。
APK を送信するには、アプリが検証プロセスに合格したことを示すスクリーンショットを含める必要があります。
統合時に注意すべき一般的な間違いにはどのようなものがありますか?
検証用アプリは、Engage の統合に関する潜在的な問題を検出するように設計されています。開発者がよく遭遇する一般的なミスをいくつかご紹介します。
すべてのコンテンツ タイプ(映画、テレビ番組、ライブ配信、動画クリップ)の場合:
- リンクがない: コンテンツのプラットフォーム固有の有効な URI(リンク)を指定してください。これらのリンクは、各プラットフォームでコンテンツを見つける場所をシステムに伝えます。
- タイトルがない: すべてのコンテンツにタイトルを付けることを忘れないでください。これにより、ユーザーは視聴していた内容を特定できます。
- 画像のアスペクト比: コンテンツに関連付けられているすべての画像のアスペクト比が 16:9 に近いことを確認します。これにより、画像がさまざまな画面で正しく表示されるようになります。
テレビ番組のエピソードの場合:
- エピソード情報を入力する: 番組タイトル、エピソード番号、シーズン番号を必ず入力してください。これにより、エピソードを整理し、ユーザーがシリーズ内を移動できるようになります。
- 正確な再生位置: 最後の再生位置がエピソードの合計時間以下であることを再確認します。これにより、ユーザーが正しい位置から再開できるようになります。
映画の場合:
- 正確な再生位置: テレビ番組と同様に、前回の再生位置が正確であることを確認します。
ライブ ストリーミング動画の場合:
- 配信者情報: ライブ配信の場合は、配信者の名前を含めます。
動画クリップの場合:
- [Creator Information]: 動画クリップの作成者を指定します。
注: 検証アプリはこれらの問題を検出し、アプリを送信する前に修正できるようにします。これにより、時間を節約し、ユーザーにスムーズなエクスペリエンスを提供できます。
アカウントとプロフィールに関する質問
アプリで匿名ユーザーのログインを使用しています。Engage で AccountProfile は必要ですか?
AccountProfile は、個々のユーザー アカウントを使用するアプリ向けに設計されています。ただし、お客様のアプリのように匿名ログインに依存するアプリもあることを理解しています。このシナリオでの Engage の動作は次のとおりです。
AccountProfileは技術的には必須ですが、アプリにユーザー アカウント システムがない場合でも Engage を統合できます。- デバイス内での使用に限定: Engage のクロスデバイス機能は、複数のデバイスにわたるユーザーの識別に依存しています。匿名ログインではこれが提供されないため、この機能はユーザーの現在のデバイスに限定されます。
- 設定方法: この設定を行うには、クロスデバイス同期を無効にする必要があります。これにより、コンテンツが開始された特定のデバイスにのみ継続エントリが表示されるようになります。
まとめ: Engage を匿名ログインと統合することはできますが、ユーザーは同じデバイスでしかコンテンツを再開できません。
アプリが accountId と profileId の両方をサポートしている場合でも、accountId のみで profileId なしで AccountProfile を使用できますか?
AccountProfile が正しく機能するには、accountId と profileId の両方が必要です。その理由は次のとおりです。
- 一貫した識別:
accountIdはユーザーを識別し、profileIdはそのユーザーのアカウント内の異なるプロフィールを区別します(該当する場合)。両方を提供することで、Engage が各個人のプロフィールのコンテンツを正確に追跡して表示します。 - エラーの防止: 異なる API 呼び出しで
accountIdとprofileIdを一貫して使用しないと、予期しない動作やエラーが発生する可能性があります。たとえば、Engage にコンテンツを追加するときに両方を含めても、コンテンツを削除するときにaccountIdのみを使用すると、システムが目的のアイテムを正しく識別して削除できないことがあります。
Engage で profileId は必要ですか?
accountIdは必須です。これにより、デバイス間でユーザーが識別されます。profileIdは、優れたユーザー エクスペリエンスを実現するために不可欠です。技術的には省略可能ですが、サービスが複数のプロフィールをサポートしている場合(多くのストリーミング サービスがサポートしているように)、profileIdを強く推奨します。なぜこれほど重要なのでしょうか?profileIdがないと、[続きを見る] 行に同じアカウントの他のプロフィールのコンテンツが表示される可能性があります。これにより、ユーザーは混乱し、不満を感じる可能性があります。- つまり、
profileIdを提供することで、[続きを見る] 行に表示されるコンテンツが、個々のユーザーの視聴履歴を正確に反映するようになります。アプリがアカウント内のプロファイルの概念をサポートしていない場合を除き、提供する必要があります。
Google は profileId をどのように使用しますか?
サービスでコンテンツを視聴するためのさまざまなプロフィールが提供されている場合、accountId と profileId は、デバイスで視聴したコンテンツをデバイスにログインしている Google アカウントに関連付けるために使用されます。Google は、accountId と profileId の組み合わせに対して視聴継続データを記録します。同じ Google アカウントでログインしている Google デバイスでは、同じ関連付けられた accountId と profileId から最新の更新データが取得され、[続きを見る] 行に表示されます。
Engage を実装するにはアカウントのリンクが必要ですか?
アカウントのリンクは不要です。優先度が下げられ、関連するユースケースはすべて新しい Device Entitlements API でカバーされます。
デバイス間の同期に関する質問
ユーザーが同意した場合の「デバイス間で同期」とはどういう意味ですか?
ユーザーが「デバイス間で同期」に同意すると、視聴中のコンテンツが Google TV サーバーに保存され、ログインしているデバイスで中断したところからシームレスに再開できるようになります。同意しない場合、再生履歴は現在のデバイスにローカルに保存されたままになります。
「デバイス間で同期」を false に設定できますか?
setUserConsentToSyncAcrossDevices フラグは、ユーザーの ContinuationCluster データがデバイス(テレビ、スマートフォン、タブレットなど)間で同期されるかどうかを制御します。このフラグが false に設定されている場合、コンテンツの続きは同じデバイスでのみ表示されます。
クロスデバイス機能を最大限に活用するには、アプリでユーザーの同意を取得し、SyncAcrossDevices を true に設定することを強くおすすめします。
Android 以外のデバイスで視聴履歴の共有に関するユーザーの同意を得る方法
デバイスをAndroid 以外のデバイスからサードパーティ サーバーに共有されるデータポイントは何ですか?
同意はユーザー単位(プロフィールまたはアカウント単位)で収集されます。同意が得られると、エンゲージメントに基づく「続きを見る」ペイロードをどこにでも送信できるようになり、Google は、ユーザーが一部または次のエンゲージメントを行ったすべてのエンティティで、あらゆるデバイスで(デバイスやプラットフォームごとに同意を再度求める必要なく)ユーザーのユビキタスな再開状態を反映できます。パートナーは、プロフィール ID(Android に保存されている)に関連付けられたユーザーの最新の視聴継続状態(仕様に準拠)を送信します。
REST API に関する質問
REST API のドキュメントはありますか?
REST API の ETA は 2025 年 3 月です。これは Engage デベロッパー ドキュメントに記載されています。
以前の「次のおすすめ」に関する質問
Engage は Watch Next API に代わるものですか?
Engage は、Watch Next API をサポートするすべての Android TV デバイスで下位互換性があります。Google TV や Engage をサポートする他のサーフェスに統合するには、デベロッパーは Engage SDK を使用する必要があります。
テストと統合に関する質問
LastPlayBackPositionTimeMillis と duration の違いは何ですか?
LastPlayBackPositionTimeMillis は、ユーザーが視聴を停止した時点の再生時間(ミリ秒単位)を反映する必要があります(例: 10 分 5 秒の場合は 605000 ミリ秒)。エンティティの合計時間より大きくなることはありません。
一方、LastEngagementTime は、ユーザーがコンテンツを最後に使用したときのタイムスタンプです。
実施すべきテストケースは何ですか?
以下は、Google の QA が実施する Google TV のテストケースです。同様のテストケースは他のサーフェスでも実行できます。
- 20 分を超える動画を約 5 分間視聴します。アプリを終了します。動画カードが [続きを見る] 行に表示されます。注: CW では、サードパーティ製アプリごとに 5 枚のカードのみが表示されます。
- [続きを見る] 行に新しく表示されたカードを選択すると、動画の適切な位置から再生が再開されます。注: 新しいコンテンツでも古いコンテンツでも、最後に中断した位置から再生が再開されます。
- GTV デバイスでアカウントを変更すると、[続きを見る] 行のカードも変更される必要があります。現在のユーザー アカウントの動画のみが表示され、最近視聴した順に並べ替えられます。サードパーティ製アプリのプロフィールで [続きを見る] に表示されるコンテンツは混在します。注: GoogleAccount2 の [続きを見る] には、GoogleAccount2 が視聴したサードパーティ製コンテンツが表示されます。
- [戻る] ボタンでアプリを終了 > [続きを見る] 行にカードが表示されていることを確認
- [続きを見る] 行の動画を非表示にする。非表示にした動画が再度表示されないことを確認する。非表示にしたコンテンツが 24 時間以上非表示のままであること、24 時間後にアプリを開いても非表示のままであることをテストする。1 つのアイテムを非表示にしても、複数のアイテムが非表示にならないことを確認します。
- [続きを見る] 行のコンテンツの利用可能性と完全なメタデータ: カード画像、アプリ名、タイトル、テレビ コンテンツのシーズンとエピソードの番号
- 進行状況バーに [Check Progress] が表示される
- ユーザーがコンテンツを最後まで視聴したが、[続きを見る] 行にコンテンツが表示されない
- 未視聴のアイテムが [続きを視聴] 行に表示されないことを確認します
- CW アイテムが、アプリが最後に開かれた日時や最終日ではなく、スマートウォッチのアクティビティが発生した日時に基づいて時系列で並べられていることを確認します
- CW カードのエピソードとシーズンの詳細が、エピソード コンテンツで視聴した内容と一致していることを確認する
- 完了した(クレジット以降の)アイテムが [続きを見る] 行に表示されないことを確認する
- エピソード、映画、番組の視聴中にデバイスの電源をオフにする。「エピソード/映画/番組の視聴中にデバイスの電源を切ります。デバイスの電源をオンにしたときや、別のテレビで、CW が正しいカードを正しい位置に表示し、プログレス バーも表示することを確認する」
- エピソード 1 を最後まで視聴したら、デバイスの電源をオフにして、
- エピソード 1 がドロップし、[続きを視聴] 行に再表示されない [2 台目のデバイスとテストデバイスの電源を入れた場合]
- エピソード 2(利用可能な場合)が [続きを見る] 行に表示される [2 台目のデバイスとテストデバイスの電源を入れたとき]
- 最初のシナリオ: TV1: GoogleAccount: mom、サードパーティ アカウント / プロフィール: account 1 / profile_1。コンテンツを視聴し、CW データにサードパーティ account_1/profile_1 が視聴したコンテンツが表示されることを確認します。
TV2: GoogleAccount: mom。最初のシナリオの CW データを検証します。別のアカウントでサードパーティ製アプリにログインします。サードパーティ製アカウント / プロフィール: account_2 / profile_2。コンテンツを視聴し、CW データにサードパーティ製アカウント account_2/profile_2 で視聴したコンテンツが表示されることを確認します。
GoogleAccount: mom。新しいデバイスケース /サードパーティ製アプリがインストールされていない。新しいデバイス(デバイスを FDR)で、Google アカウントで使用された最後に使用されたサードパーティ製アプリのデータが CW に表示されることを確認します。注: GAIA が他のデバイスのサードパーティ プロファイルに関連付けられていない場合、CW 行にサードパーティ コンテンツが表示されないようにする必要があります
- GoogleAccount: mom。新しいデバイスケース /サードパーティ製アプリがインストールされているが、ログインしていない。 新しいデバイス(デバイスを FDR)で、CW に GoogleAccount で使用された最後に使用されたサードパーティ製アプリのデータが表示されることを確認します。
-
- 注: Google アカウントがサードパーティのプロフィールに関連付けられていない場合、[続きを見る] 行にサードパーティのコンテンツが表示されないようにする必要があります。
Google TV iOS アプリに継続コンテンツが表示されません。どうしたのですか?
iOS デバイスの [続きを見る] 行にコンテンツを表示するには、コンテンツの iOS ディープリンクを送信する必要があります。
「続きを見る」行のコンテンツ情報はどのくらいの頻度で更新する必要がありますか?15 秒ごとなど、頻繁に更新する必要がありますか?
いいえ。頻繁な更新はおすすめしません。その理由は次のとおりです。
- パフォーマンスへの影響: アップデートを継続的に送信すると、サーバーに不必要な負荷がかかり、システム全体の速度が低下する可能性があります。
- 不要なデータ: ユーザーが視聴している間、再生位置は常に変化します。数秒ごとに更新を送信すると、再生の再開に役立たない冗長なデータが大量に作成されます。
[続きを見る] 行のコンテンツ情報を更新するタイミング:
ユーザーの視聴進捗状況の有意義な変化をキャプチャすることに重点を置きます。主なシナリオは次のとおりです。
- 再生の一時停止または停止: ユーザーが視聴を一時停止または停止した場合は、現在の位置を保存する更新を送信します。
- アプリが閉じられた場合またはバックグラウンドに移行した場合: 動画の視聴中にユーザーがアプリを終了した場合や別のアプリに切り替えた場合は、進行状況を保存するための更新を送信します。
- アプリ内の [続きを見る] 行からアイテムを削除した場合
効率的に更新する方法:
時間指定の更新ではなく、動画プレーヤーまたはアプリのライフサイクル内のイベントを利用して更新をトリガーします。次に例を示します。
onPause、onStop: 動画の再生が一時停止または停止したとき。onAppClose、onAppBackgrounded: アプリが閉じられたとき、またはバックグラウンドに移動したとき。
これらのガイドラインに沿って実装することで、リソースを効率的に使用しながら、ユーザーに「続きを見る」行でシームレスなエクスペリエンスを提供できます。