管理推荐(Fire TV)
本节介绍如何创建和管理合作伙伴托管行(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("我的视频");
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(位图图像) |
我们建议对大图标图像使用以下规格:
应显示在上面的(3)中。 为了将来进行校对,应在服务器上配置资产宽高比,从而使客户端不依赖于图像分辨率。未来版本可能需要16:9宽高比。 |
是 |
setContentIntentData(int intentType、Intent意图、int requestCode、Bundle选项) |
设置用户单击推荐时将发布的意图数据。在创建新的PendingIntent 时,提供的意图 数据字段对应于传递到PendingIntent工厂方法的字段。实际的PengindIntent 对象仅在推荐发布到主屏幕时才会创建。
|
是 |
setBadgeIcon(int iconResourceId) |
设置推荐落款图标的资源ID。 资源ID表示源应用程序包中的图标资源。如果未设置,或者指定了无效的资源ID,则默认情况下将使用从其程序包中检索的应用图标。 |
是 |
setGenres(String[] genres) | 设置推荐的内容类型。这些类型可用于内容排名。类型是开放式字符串标签。我们建议使用Android定义的标准类型。 | 否 |
setContentTypes(String[] types) | 设置与内容推荐关联的内容类型。第一个标签条目将被视为内容的优先级类型,并将用于排名目的。如果适用,可以提供其他辅助类型标签,并将其用于筛选目的。仅允许使用标准Android内容推荐类别。 | 否 |
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清单属性链接。
此外,您还必须针对以下事件发送建议:
- 应用已安装,用户已进行身份验证。不要等待设备重新启动。
- 设备重新启动后。
删除推荐
您可以为特定通知ID调用cancel()来删除推荐:
NotificationManager notificationManager = (NotificationManager) sContext.getSystemService(NOTIFICATION_SERVICE);
//使用您在创建此通知时使用的相同通知ID
notificationManager.cancel(notifyID);