管理推荐


管理推荐

本节介绍如何创建和管理合作伙伴托管行 (PMR) 的推荐。

创建推荐

本节介绍如何使用适用于电视的应用推荐支持库创建推荐。在创建推荐之前,您必须将支持库添加到项目 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() 的详细信息,请参阅安卓文档

虽然您可以以类似于上面代码段的方式创建推荐,但以下属性将有助于与 Fire TV 的外观和风格无缝集成。

表格中提到的数字是指以下卡片上显示的标注。

API 行为更改 必需
setTitle(java.lang.String) 应显示在上面的 (1) 中。长度限制为 125 个字符,否则将被截断。
setText(java.lang.String) 应显示在上面的 (2) 中。长度限制为 125 个字符,否则将被截断。
setContentImage位图图像) 我们建议对大图标图像使用以下规格:
  • 高度: 252 像素或更高
  • 我们建议将整体宽高比保持在 16:9
  • 将文本(标题)嵌入到图像中可获得更好的用户参与度
  • 不得透明
如果大图标不存在,我们可能会放置一个默认占位符。

应显示在上面的 (3) 中。

为了将来进行校对,应在服务器上配置资产宽高比,从而使客户端不依赖于图像分辨率。未来版本可能需要 16:9 宽高比。
setContentIntentData(int intentType、Intent 意图、int requestCode、Bundle 选项) 设置用户单击推荐时将发布的意图数据。在创建新的 PendingIntent 时,提供的意图数据字段对应于传递到 PendingIntent 工厂方法的字段。实际的 PengindIntent 对象仅在推荐发布到主屏幕时才会创建。
setBadgeIcon(int iconResourceId) 设置推荐标记图标的资源 ID。

资源 ID 表示源应用程序包中的图标资源。如果未设置,或者指定了无效的资源 ID,则默认情况下将使用从其程序包中检索的应用图标。
setGenres(String[] genres) 设置推荐的内容类型。这些类型可用于内容排名。类型是开放式字符串标签。我们建议使用安卓定义的标准类型
setContentTypes(String[] types) 设置与内容推荐关联的内容类型。第一个标签条目将被视为内容的优先级类型,并将用于排名目的。如果适用,可以提供其他辅助类型标签,并将其用于筛选目的。仅允许使用标准安卓内容推荐类别
setProgress(int max, int progress) 设置推荐指向的内容的进度信息。内容的进度量必须在范围 (0 - max) 秒内。
setBackgroundImageUri(String imageUri) 设置将用于检索推荐的背景图像的内容 URI。

背景图片应采用 16:9 格式。它的高度不应超过 1080 像素,宽度不应超过 1920 像素。为获得最佳性能,背景图像应为 960 像素宽 x 540 像素高。
setRunningTime(long length) 设置与通知关联的内容的运行时间(如果适用)。

目录和启动器集成要求

如果您拥有集成目录,则 PMR 可以提供更深层次的集成。请注意,某些内容(如直播流)未与目录集成。

请检查与 Fire TV 启动器的集成指南以了解深层链接。这提供了对合作伙伴(应用)订阅状态的访问权限,Fire TV 启动器需要此权限才能启用推荐。

具有登录/订阅要求的 Fire TV 合作伙伴需要广播其订阅状态,以便启动器显示应用内容的正确提示。这有助于避免任何用户混淆,并使 PMR 内容能够在不显示登录页面的情况下与应用进行深层链接。出于这个原因,系统仅在用户拥有该应用的订阅时才会显示该应用的 PMR。

启动时发送推荐

如果您计划在设备启动时发送推荐,则需要确保您的应用被允许接收和处理通知应用设备已启动的广播。要启用此功能,请将此权限作为元素的子项添加到安卓清单中:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

一旦您拥有了该权限,支持性推荐的初始启动点是创建 BroadcastReceiver 的一个子类。在清单中,您随后将接收器注册为处理 ACTION_BOOT_COMPLETED 的意图。这可以确保系统首次启动时,所有相关应用都会获得一个初始的“ping”来生成推荐。要让此操作可靠地发挥作用,请确保您的应用未安装在外部存储器上。有关更多详细信息,请参阅应用安装位置android:installLocation 清单属性链接。

此外,您还必须针对以下事件发送建议:

  1. 应用已安装,用户已进行身份验证。不要等待设备重新启动。
  2. 设备重新启动后。

删除推荐

您可以为特定通知 ID 调用 cancel() 来删除推荐:

NotificationManager notificationManager = (NotificationManager) sContext.getSystemService(NOTIFICATION_SERVICE);

// 使用您在创建此通知时使用的相同通知 ID
notificationManager.cancel(notifyID);