おすすめの管理
このセクションでは、PMR(Partner Managed Row)用のおすすめを作成・管理する方法について説明します。
おすすめの作成
ここでは、TV用のApp Recommendation Support Libraryを使用しておすすめを作成する方法について説明します。おすすめを作成する前に、プロジェクトのbuild.gradle
ファイルの依存関係ブロックにサポートライブラリを追加する必要があります。
ContentRecommendation APIの例
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//通知のIDを設定して、更新できるようにします
int notifyID = int_value;
ContentRecommendation rec = new ContentRecommendation.Builder()
.setContentImage(myBitmap)
.setBackgroundImageUri(myBackgroundImageUri)
.setContentIntentData(ContentRecommendation.INTENT_TYPE_***, mIntent, mRequestCode, mBundle)
.setText(mText)
.setTitle(mTitle)
.setBadgeIcon(R.drawable.<app_icon>)
.setGenres(mGenres)
.setContentTypes(mTypes)
.setProgress(mMaxLength,mProgress)
.setRunningTime(contentLength)
.build();
Notification notification = rec.getNotificationObject(mContext);
//別のエクストラ値が次のように追加されました:
//UIに表示される可能性のあるパートナーの通称を指定します
notification.extras.putString("com.amazon.extra.DISPLAY_NAME", mDisplayName);
//このおすすめに成人向けコンテンツ評価を割り当てます
notification.extras.putString("com.amazon.extra.MATURITY_RATING", mMaturityRating);
//このおすすめにカテゴリーを割り当てます。
ArrayList<String> tagList = new ArrayList<String>();
tagList.add(“Home”);
tagList.add("Your Videos");
notification.extras.putStringArrayList("com.amazon.extra.TAGS", tagList);
//リスト内のおすすめを表示する場所を指定します
notification.extras.putInt("com.amazon.extra.RANK", mRank);
//このおすすめに詳しい説明を割り当てます
notification.extras.putString("com.amazon.extra.LONG_DESCRIPTION", mLongDescription);
//このおすすめにカタログ統合コンテンツIDを割り当てます
notification.extras.putString("com.amazon.extra.CONTENT_ID", mContentID);
//このおすすめに最終視聴時刻を割り当てます
notification.extras.putLong("com.amazon.extra.LAST_WATCHED_DATETIME", mLastWatchedTime);
//このおすすめにプレビュービデオ・画像のURLを割り当てます
notification.extras.putString("com.amazon.extra.PREVIEW_URL", mPreviewUrl);
//このおすすめにアクションを割り当てます。
ArrayList<Integer> actionList = new ArrayList<Integer>();
actionList.add(1);
actionList.add(3);
notification.extras.putIntegerArrayList(com.amazon.extra.ACTIONS, actionList);
//このおすすめにライブコンテンツを割り当てます。
notification.extras.putInt(com.amazon.extra.LIVE_CONTENT, 1);
//このおすすめにリリース日を割り当てます
notification.extras.putString(com.amazon.extra.CONTENT_RELEASE_DATE, "2016");
//このおすすめにクローズドキャプション対応の有無を割り当てます
notification.extras.putInt(com.amazon.extra.CONTENT_CAPTION_AVAILABILITY, 1);
//このおすすめにIMDB IDを割り当てます
notification.extras.putString(com.amazon.extra.IMDB_ID, "fc145d345xxxxxxxx");
//このおすすめにIMDBレーティングを割り当てます
notification.extras.putString(com.amazon.extra.IMDB_SCORE, "6.2");
//このおすすめにライブコンテンツの開始時刻を割り当てます
notification.extras.putLong(com.amazon.extra.CONTENT_START_TIME, System.currentTimeMillis());
//このおすすめにライブコンテンツの終了時刻を割り当てます
notification.extras.putLong(com.amazon.extra.CONTENT_END_TIME, System.currentTimeMillis() + 10000);
mNotificationManager.notify(notifyID, notification);
setContentIntentData()
の詳細については、Androidのドキュメント(英語のみ)を参照してください。
おすすめは上記のコードスニペットと似た方法で作成できますが、Fire TVのルックアンドフィールとシームレスに統合するのに役立つ属性は次のとおりです。
表に記載されている番号は、次のカードに表示されているコールアウトに対応しています。

API | 動作の変更 | 必須 |
---|---|---|
setTitle(java.lang.String) | 上記の(1)に表示されます。長さの制限は125です。それ以上の場合は切り捨てられます。 | 必須 |
setText(java.lang.String) | 上記の(2)に表示されます。長さの制限は125です。それ以上の場合は切り捨てられます。 | 必須 |
setContentImage(Bitmap画像) |
大きなアイコン画像を使用する場合は、次の仕様を適用することをお勧めします。
上記の(3)に表示されます。 今後の修正に備えて、アセットの縦横比をサーバー上で設定可能にし、クライアントが画像解像度に依存しないようにする必要があります。今後のリリースでは16:9とすることが必要になる場合があります。 |
必須 |
setContentIntentData(int intentType, Intent intent, int requestCode, Bundle options) |
ユーザーがおすすめをクリックしたときに発行されるインテントのデータを設定します。新しいPendingIntentを作成する際に提供されるIntent データのフィールドがPendingIntent ファクトリメソッドに渡されるフィールドに対応します。実際のPengindIntent オブジェクトは、おすすめがホーム画面に送信されるときにのみ作成されます。
|
必須 |
setBadgeIcon(int iconResourceId) |
おすすめのバッジアイコンのリソースIDを設定します。 リソースIDは、ソースとなるアプリパッケージのアイコンリソースを表します。この設定を行わない場合、またはリソースIDが無効な場合、パッケージから取得されるアプリアイコンがデフォルトとして使用されます。 |
必須 |
setGenres(String[] genres) | おすすめのコンテンツジャンルを設定します。ジャンルは、コンテンツランキングに使用される場合があります。ジャンルは、制約のない文字列のタグです。Androidで定義された標準のジャンルを使用することをお勧めします。 | 任意 |
setContentTypes(String[] types) | おすすめに関連するコンテンツタイプを設定します。最初に入力されるタグが、コンテンツの優先タイプとみなされ、ランキングに使用されます。必要に応じて、そのほかの二次的タイプも入力できます。このタグはフィルタリングに使用される場合があります。Androidの標準的なコンテンツおすすめカテゴリーのみ使用できます。 | 任意 |
setProgress(int max, int progress) | おすすめで参照されるコンテンツの進行状況情報を設定します。コンテンツの進行状況を指定の範囲(0~最大値)の秒数で表示する必要があります。 | 任意 |
setBackgroundImageUri(String imageUri) |
おすすめの背景画像を取得するために使用するコンテンツURIを設定します。 背景画像のアスペクト比は16:9である必要があります。高さは1080px、幅は1920pxを超えないようにします。背景画像の最適なサイズは、幅960px × 高さ540pxです。 |
必須 |
setRunningTime(long length) | 通知に関連付けられたコンテンツの実行時間(該当する場合)を設定します。 | 任意 |
カタログとランチャーの統合要件
カタログ統合されている場合は、PMRにより統合を強化することができます。一部のコンテンツ(ライブストリームなど)はカタログ統合されていないことに注意してください。
ディープリンクについては、手順1:アプリにFire TVランチャーを統合するを参照してください。これにより、パートナー(アプリ)の定期購入ステータスにアクセスできます。このステータスは、Fire TVランチャーでおすすめを有効にするのに必要です。
ログイン/定期購入を要件とするFire TVパートナーは、ランチャーがアプリコンテンツの正しいヒントを表示できるように、定期購入ステータスをブロードキャストする必要があります。これにより、ユーザーの混乱を避けることができます。また、ログインページを表示することなく、PMRコンテンツがアプリとディープリンクされます。このため、ユーザーがそのアプリを定期購入している場合にのみ、アプリのPMRが表示されます。
起動時のおすすめの送信
デバイスの起動時におすすめを送信する場合は、デバイスが起動したことをアプリに通知するブロードキャストを、アプリが受信して処理できるようにする必要があります。この機能を有効にするには、次のパーミッションを
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
次に、おすすめをサポートするためにまず取りかかることは、BroadcastReceiver
のサブクラスの作成です。マニフェストでは、次にACTION_BOOT_COMPLETED
インテントを処理するレシーバーを登録します。これにより、システムの初回起動時に、関連のあるすべてのアプリが、おすすめを生成するための最初の「ping」を取得できます。確実に動作させるには、アプリが外部ストレージにインストールされていないことを確認する必要があります。詳細については、外部ストレージにインストールすべきでないアプリとandroid:installLocationマニフェスト属性のリンクを参照してください。
また、次のイベントに対応しておすすめを送信することも重要です。
- アプリがインストールされ、ユーザーが認証されたとき。デバイスの再起動を待たないでください。
- デバイスの再起動後。
おすすめの削除
特定の通知IDに対応するcancel()を呼び出すことで、該当のおすすめを削除できます。
NotificationManager notificationManager = (NotificationManager) sContext.getSystemService(NOTIFICATION_SERVICE);
//この通知を作成したときと同じ通知IDを使用
notificationManager.cancel(notifyID);