公開に関するよくある質問
コンテンツ公開ジョブを管理するのは誰ですか?
アプリ デベロッパーがコンテンツ公開ジョブを管理し、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 で映画を見始め、通勤中にスマートフォンで簡単に続きを見る。これが Engage の力です。
この新しいシステムは、Google エコシステム全体でスムーズで摩擦のないエクスペリエンスを提供することで、視聴者のエンゲージメントと維持率を高めるように設計されています。
Video Discovery API は Engage と同じですか?
はい、同じです。Engage SDK は、続きを見る行のサポートを含むライブラリです。Engage は動画以外のコンテンツ エンティティ タイプもサポートしているため、統合の名前が「動画検索」ではなくなりました。
Engage を使用するメリットは何ですか?
回答: Engage を使用すると、視聴者は使用しているデバイスに関係なく、コンテンツの続きを簡単に視聴できるようになります。仕組みは次のとおりです。
- Google サービス全体でシームレスなエクスペリエンス: Google TV で視聴を開始し、Android スマートフォン、iPhone、Android タブレットでシームレスに視聴を続けることができます。アプリがまだインストールされていないデバイスでも機能します。
- エンゲージメントと維持率の向上: Engage を使用すると、新しいデバイスでもユーザーをアプリに呼び戻すことができます。ユーザーがお気に入りの番組を再開できるようにすることで、視聴を継続する可能性が高まります。
- リーチの拡大: Engage は、Google TV だけでなく、Play コレクションやその他の Google メディア アプリなど、他の Android メディア エクスペリエンスでも機能します。
- 下位互換性: 以前の「次のおすすめ」機能をすでに使用している場合でも、問題ありません。Engage には下位互換性があるため、既存の統合は引き続き機能します。
重要な注意事項: 新しい「続きを見る」の統合はすべて、Engage を使用する必要があります。以前の「複数デバイス間での次のおすすめ」システムは段階的に廃止されます。
Engage をサポートしているサーフェス
- Google TV
- Android TV(デバイス上のみ。ただし Engage SDK をサポート)
- Google TV Android モバイルアプリ
- Google TV iOS モバイルアプリ
- Play コレクション
- Google エンターテイメント スペース
- iOS デバイス(REST API 統合を使用)。
Engage SDK は「続きを見る」機能のためのものですか?
はい。Engage SDK は、[続きを見る] 行のコンテンツをサポートしています。Engage と統合するために必要です。
Engage はすべてのユーザーが利用できますか?
Engage は段階的にリリースされます。
- 早期アクセス: まず、早期アクセス プログラム(EAP)を通じて、一部のパートナーにアクセス権を付与します。
- アクセスの拡大: Engage をすべてのデベロッパーに近日中に提供できるよう、現在取り組んでいます。
スムーズかつ確実にリリースできるよう、ロールアウトを管理するための安全対策が用意されています。これには、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 メディア プラットフォームに拡張され、デバイスをまたいでユーザー エンゲージメントを最大化します。
Continuation クラスタに公開できるエンティティの数に上限はありますか?
各デベロッパー パートナーは、継続クラスタ内で最大 5 個のエンティティをブロードキャストできます。この制限は、複数のメディア プロバイダの共有スペースである Google TV の「続きを見る」行で、コンテンツを公平に配信するためのものです。
5 つを超えるエンティティを公開しようとするとどうなりますか?
5 つのエンティティの上限を超えると、Engage SDK は公開リクエストを拒否します。正常に公開するには、リクエスト内のエンティティの数を減らす必要があります。ユーザーが視聴を中断したエンティティのみを含める必要があります。そのため、ほとんどの場合、そのようなエンティティはごくわずかです。このようなエンティティが 5 つ以上ある場合は、より新しいものを選択して公開できます。
エンティティの数に上限があるのはなぜですか?
Google TV の [続きを見る] 行には、さまざまなメディア プロバイダのコンテンツが表示されます。プロバイダあたりのエンティティ数を制限することで、ユーザーがお気に入りのすべてのソースから多様なコンテンツを選択できるようにし、公平でバランスの取れたユーザー エクスペリエンスを促進します。
確認アプリに関する質問
提出前に検証アプリでアプリをテストすることは必須ですか?
はい。APK を送信する前に、検証アプリでアプリをテストすることが不可欠です。
実装に自信がある場合でも、Engage の統合には複雑なコンポーネントが多数あります。検証アプリはセーフティ ネットとして機能し、潜在的な問題を早期に発見して、長期的には貴重な時間と労力を節約できます。
これは、スムーズなリリースと優れたユーザー エクスペリエンスを保証するための簡単なチェックと考えてください。
事前に問題を特定して対処することで、不承認や再送信の煩わしさを回避できます。
APK を送信するには、アプリが検証プロセスに合格したことを示すスクリーンショットを含める必要があります。
統合時に注意すべき一般的なミスにはどのようなものがありますか?
検証アプリは、Engage 統合に関する潜在的な問題を検出するように設計されています。デベロッパーがよく遭遇する一般的なミスをいくつか紹介します。
すべてのコンテンツ タイプ(映画、テレビ番組のエピソード、ライブ配信、動画クリップ):
- リンクがない: コンテンツに有効なプラットフォーム固有の URI(リンク)を指定していることを確認してください。これらのリンクは、各プラットフォームでコンテンツがどこにあるかをシステムに伝えるものです。
- タイトルがない: すべてのコンテンツにタイトルを付ける必要があります。これにより、ユーザーは視聴していたコンテンツを識別できます。
- 画像のアスペクト比: コンテンツに関連付けられているすべての画像のアスペクト比が 16:9 に近いことを確認します。これにより、さまざまな画面で画像が正しく表示されるようになります。
テレビ番組のエピソードの場合:
- エピソード情報をすべて入力する: 番組のタイトル、エピソード番号、シーズン番号を必ず入力してください。これにより、エピソードを整理し、ユーザーがシリーズ内を移動できるようになります。
- 正確な再生位置: 最後の再生位置がエピソードの合計再生時間以下であることを再確認します。これにより、ユーザーは正しい場所から再開できます。
映画の場合:
- 正確な再生位置: テレビ番組のエピソードと同様に、最後の再生位置が正確であることを確認します。
ライブ ストリーミング動画の場合:
- 放送局情報: ライブ配信の場合は、放送局の名前を含めます。
動画クリップの場合:
- クリエイター情報: 動画クリップのクリエイターを指定します。
検証アプリはこれらの問題にフラグを付けるため、アプリを送信する前に修正できます。これにより、時間を節約し、ユーザーにスムーズなエクスペリエンスを提供できます。
アカウントとプロフィールに関する質問
アプリで匿名ユーザー ログインを使用しています。Engage に AccountProfile は引き続き必要ですか?
AccountProfile は、個々のユーザー アカウントを使用するアプリ向けに設計されています。ただし、お客様のアプリのように、匿名ログインに依存しているアプリもあることは承知しております。
このシナリオでの Engage の仕組みは次のとおりです。
AccountProfileは技術的に必要ですが、アプリにユーザー アカウント システムがない場合でも Engage を統合できます。- デバイス上の使用に限定: Engage のクロスデバイス機能は、異なるデバイス間でユーザーを識別することに依存しています。匿名ログインではこの情報が提供されないため、この機能はユーザーの現在のデバイスに限定されます。
- 設定方法: この設定を行うには、クロスデバイス同期を無効にする必要があります。これにより、コンテンツが開始された特定のデバイスにのみ、続きのエントリが表示されるようになります。
まとめ: Engage を匿名ログインと統合することはできますが、ユーザーがコンテンツを再開できるのは同じデバイス上のみです。
アプリが accountId と profileId の両方をサポートしている場合でも、profileId なしで accountId のみを使用して 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 の組み合わせに対して ContinueWatching データを記録します。同じ Google アカウントにログインしている Google デバイスは、同じ関連付けられた accountId と profileId から、[続きを見る] 行に最新の更新データを取得します。
Engage を実装するにはアカウントのリンクが必要ですか?
アカウントのリンクは必要ありません。この API の優先度は下げられ、関連するすべてのユースケースは新しい Device Entitlements API でカバーされます。
デバイス間の同期に関する質問
ユーザーが同意した場合、「デバイス間で同期する」とはどういう意味ですか?
ユーザーが「デバイス間の同期」に同意すると、視聴中のコンテンツが Google TV サーバーに保存され、ログインしているデバイスで中断したところからシームレスに再開できるようになります。同意しない場合、再生履歴は現在のデバイスにローカルに保存されたままになります。
「デバイス間で同期」を false に設定できますか?
setUserConsentToSyncAcrossDevices フラグは、ユーザーの ContinuationCluster データをデバイス(テレビ、スマートフォン、タブレットなど)間で同期するかどうかを制御します。このフラグが false に設定されている場合、コンテンツの視聴を続ける機能は同じデバイスでのみ表示されます。
クロスデバイス機能を最大限に活用するには、アプリでユーザーの同意を得て、SyncAcrossDevices を true に設定することを強くおすすめします。
Android 以外のデバイスで再生履歴の共有に対するユーザーの同意を得るにはどうすればよいですか?
デバイスはどれですか?Android デバイス以外のデバイスからサードパーティのサーバーに共有されるデータポイントは何ですか?
同意はユーザーレベル(プロフィールまたはアカウント レベル)で収集されます。同意が得られると、エンゲージメントに基づく「続きを見る」ペイロードをどこにでも送信できるようになります。これにより、Google は、ユーザーが部分的にエンゲージメントしている、または次にエンゲージメントするすべてのエンティティにわたって、ユーザーのユビキタスな再開状態をどのデバイスでも反映できるようになります(デバイスやプラットフォームごとに同意を再確認する必要はありません)。パートナーは、プロフィール ID(Android に保存されているもの)に関連付けられた最新の「続きを見る」状態(仕様に準拠)をユーザーに送信します。
REST API に関する質問
REST API に関するドキュメントはありますか?
REST API のリリース予定は 2025 年 3 月です。これは Engage デベロッパー ドキュメントに記載されています。
「次のおすすめ」に関する従来の質問
Engage は次のおすすめ API に代わるものですか?
Engage は、次のおすすめ API をサポートするすべての Android TV デバイスで下位互換性があります。Google TV や Engage をサポートするその他のサーフェスに統合するには、Engage SDK を使用する必要があります。
テストと統合に関する質問
LastPlayBackPositionTimeMillis と duration の違いは何ですか?
LastPlayBackPositionTimeMillis には、ユーザーが視聴を停止した時点の再生時間をミリ秒単位で反映する必要があります(例: 10 分 5 秒の場合は 605000 ミリ秒)。エンティティの合計再生時間を超えることはできません。
一方、LastEngagementTime は、ユーザーが最後にコンテンツを操作したときのタイムスタンプです。
実施すべきテストケースは何か。
以下は、Google の QA が実施する Google TV のテストケースです。同様のテストケースを他のサーフェスでも実行できます。
- 20 分を超える動画を 5 分ほど視聴します。アプリを終了します。動画カードが [続きを見る] 行に表示されます。注: CW では、サードパーティ製アプリごとに 5 枚のカードのみが表示されます。
- [続きを見る] 行に新しく表示されたカードを選択すると、動画の適切な位置から再生が再開されます。注: 新しいコンテンツでも古いコンテンツでも、最後に中断した位置から再生が再開されます。
- GTV デバイスでアカウントを変更すると、[続きを見る] 行のカードが変更されます。現在のアカウントの動画のみが表示されます。新しい順に並べ替えられています。サードパーティ製アプリのプロファイルの CW が混在します。注: GoogleAccount2 の CW には、GoogleAccount2 が視聴したサードパーティのコンテンツが表示されます。
- 戻るボタンでアプリを終了 > [続きを見る] 行にカードが表示されていることを確認する
- [続きを見る] 行で動画を非表示にします。動画は再び表示されないようにする必要があります。非表示にしたコンテンツが 24 時間以上経過しても、また 24 時間後にアプリを開いても、非表示のままになっているかどうかをテストします。1 つのアイテムを非表示にしても、複数のアイテムが非表示にならないことを確認します。
- [続きを見る] 行に表示されるコンテンツの可用性と、完全なメタデータ(カード画像、アプリ名、タイトル、テレビ コンテンツのシーズン エピソード番号)
- 進行状況バーに [進行状況を確認] が表示される
- ユーザーがエンドロールまでコンテンツを視聴した - コンテンツは [続きを見る] 行に表示されない
- [続きを見る] 行に未視聴のアイテムが表示されないことを確認します。
- CW アイテムが、アプリが最後に開かれた日時や最終日ではなく、視聴アクティビティが発生した日時に基づいて時系列で並べられていることを確認します。
- CW カードのエピソードとシーズンの詳細が、エピソード コンテンツで視聴されたものと一致していることを確認します。
- 完了したアイテム(クレジット以降のアイテム)が [続きを見る] 行に表示されないことを確認します。
- エピソード、映画、番組の視聴中にデバイスの電源をオフにします。「エピソード、映画、番組の視聴中にデバイスの電源を切ります。デバイスの電源を入れたときと、他のテレビで、CW に正しいカードが正しい位置に表示され、進行状況バーが表示されることを確認します。
- エピソード 1 を最後まで視聴した後、デバイスの電源をオフにして確認する
- エピソード 1 がドロップされ、[続きを見る] 行に再表示されない(2 台目のデバイスとテストデバイスの電源を入れたとき)
- エピソード 2(利用可能な場合)が、[2 台目のデバイスとテストデバイスの電源を入れたときに] [続きを見る] 行に表示される必要があります。
- 1 つ目のシナリオ: TV1: Google アカウント: mom、サードパーティのアカウント / プロフィール: account 1 / profile_1。コンテンツを視聴し、サードパーティの account_1/profile_1 で視聴したコンテンツが CW データに表示されることを確認します。
TV2: GoogleAccount: mom. 最初のシナリオの CW データを確認します。次に、別のアカウントでサードパーティ製アプリにログインします。サードパーティのアカウント / プロフィール: account_2 / profile_2。コンテンツを視聴し、CW データにサードパーティのアカウント 2 / プロフィール 2 で視聴したコンテンツが表示されることを確認します。
GoogleAccount: mom. 新しいデバイスのケース / サードパーティ製アプリがインストールされていない。新しいデバイス(デバイスを FDR)で、Google アカウントで使用された、最後に使用したサードパーティ製アプリのデータが CW に表示されることを確認します。注: GAIA が他のデバイスのサードパーティ プロファイルにまだ関連付けられていない場合、CW 行にサードパーティのコンテンツは表示されません。
- GoogleAccount: mom. 新しいデバイスのケース / サードパーティ製アプリがインストールされているが、ログインしていない。 新しいデバイス(デバイスを FDR)で、CW に Google アカウントで使用された最後のサードパーティ製アプリのデータが表示されることを確認します。
-
- 注: Google アカウントがサードパーティのプロフィールにまだ関連付けられていない場合、[続きを見る] 行にサードパーティのコンテンツは表示されません。
iOS 版 Google TV アプリに続きのコンテンツが表示されません。どうしてですか?
iOS デバイスの「続きを見る」行にコンテンツを表示するには、iOS ディープリンクを送信する必要があります。
「続きを見る」行のコンテンツ情報はどのくらいの頻度で更新する必要がありますか?15 秒ごとなど、頻繁に更新する必要がありますか?
いいえ。頻繁な更新はおすすめしません。その理由は次のとおりです。
- パフォーマンスへの影響: 更新を継続的に送信すると、サーバーに不必要な負荷がかかり、すべてのユーザーのシステムが遅くなる可能性があります。
- 不要なデータ: ユーザーが動画を視聴している間、再生位置は常に変化します。数秒ごとに更新を送信すると、再生の再開に役立たない冗長なデータが大量に作成されます。
「続きを見る」行のコンテンツ情報を更新するタイミング:
ユーザーの視聴の進行状況における意味のある変化を捉えることに重点を置きます。主なシナリオは次のとおりです。
- 再生の一時停止または停止: ユーザーが視聴を一時停止または停止したときに、現在の位置を保存するための更新を送信します。
- アプリが閉じられた、またはバックグラウンドに移動した: ユーザーが動画の視聴中にアプリを終了したり、別のアプリに切り替えたりした場合は、進行状況を保存するための更新を送信します。
- ユーザーがアプリ内の [続きを見る] 行からアイテムを削除した場合
効率的に更新する方法:
時間指定の更新ではなく、動画プレーヤーまたはアプリのライフサイクル内のイベントを使用して更新をトリガーします。次に例を示します。
onPause、onStop: 動画の再生が一時停止または停止したとき。onAppClose、onAppBackgrounded: アプリが終了するか、バックグラウンドに移動したとき。
これらのガイドラインに沿って、リソースを効率的に使用しながら、[続きを見る] 行でシームレスなエクスペリエンスをユーザーに提供できます。