as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

在Vega应用中处理精选内容深层链接

在Vega应用中处理精选内容深层链接

Fire TV包括推广展示位置,例如主屏幕上的横幅或图块,用于宣传您的应用中的特定内容。推广展示中显示的内容称为精选内容。精选内容深层链接绕过应用的主页,将用户直接带到您的推广内容。深层链接是一种特殊格式的URL,可在应用中启动特定的屏幕。

例如,Fire TV中的一个销售时段用来重点介绍ACME Media的足球季后赛比赛。点击推广内容将:

  • 启动ACME应用
  • 将用户直接导航到游戏的详情或播放屏幕

如果未安装该应用,Fire TV会将用户重定向到该应用的详情页面以进行下载。安装并启动后,深层链接会自动将用户带到其希望查看的内容处,同时保留上下文。

本文档提供有关在Vega应用中实现精选内容深层链接的指导。

Vega应用使用的精选内容深层链接与Fire OS上的精选内容深层链接相同。Fire OS应用的精选内容深层链接是按照“Fire TV用户界面精选内容的深层链接”的为内容生成经过编码的深层链接意图部分中记录的步骤生成的。

以下示例显示了Fire OS应用的经过编码的深层链接。此URI用于配置Fire TV中的精选内容。

amzns://apps/android?asin=B080PZMHSN#Intent;S.intentToFwd=https%3A%2F%2Fwww.acme.com%2Fsome%2Fshow%2Frrn%3Acontent%3Ashows%3A123456789;end

为了响应深层链接,URI由两部分组成:Home Launcher用于将深层链接路由到应用的“标头”,以及应用需要解析的深层链接。

您的Vega应用会接收S.intentToFwd之后的URI的解码版本。您可以使用任何在线工具来获取此解码版本。

https://www.acme.com/some/show/rrn:content:shows:123456789

精选内容深层链接与操作系统无关。它们在Vega OS和Fire OS上完全相同,使用的是Android意图样式的URI

当您收到深层链接时,您必须将意图片段的组件映射到相应的React Navigation组件。

有关经过编码的深层链接的信息,请参阅“Fire TV用户界面精选内容的深层链接”中的使用Android Studio对您的深层链接意图进行编码步骤。

Vega使用react-native linking来发送和接收消息。以下过程显示了在您的应用中如何接收消息并对其进行处理。

步骤1: 导入链接库

已复制到剪贴板。

import {Linking} from 'react-native';

步骤2: 应用已打开时接收消息

如果应用在收到深层链接时在前台或后台运行,则该应用会收到url事件。要侦听该事件,请通过调用Linking.addEventListener() 订阅url事件。

已复制到剪贴板。

const subscription = Linking.addEventListener('url', ({url}) => {
      console.log('运行时收到深层链接:', url);
        handleDeepLink(url); // 您的自定义函数
      }
});

步骤3: 应用未打开时接收消息

在应用启动时调用Linking.getInitialURL()(例如,在useEffect() 中),以检查深层链接是否发起了应用的启动。

已复制到剪贴板。

const handleInitialDeepLink = async () => {
  try {
        const initialUrl = await Linking.getInitialURL();
        console.log('初始深层链接URL:', initialUrl);

        if (initialUrl) {
          handleDeepLink(initialUrl); // 您的自定义函数
        }
      } catch (error) {
        console.error('处理初始深层链接时出错', error);
      }
};

以下合并代码示例显示了如何接收和处理深层链接事件。请注意,您必须实现自定义handleDeepLink() 函数来解析URL,检索数据和执行所需的操作。

已复制到剪贴板。

import {Linking} from 'react-native';

useEffect(() => {  
  const handleInitialDeepLink = async () => {
    try {
      const initialUrl = await Linking.getInitialURL();
      console.log('初始深层链接URL:', initialUrl);

      if (initialUrl) {
        handleDeepLink(initialUrl); // 您的自定义函数
      }
    } catch (error) {
      console.error('处理初始深层链接时出错', error);
    }
  };

  const handleUrlEvent = ({ url }) => {
    console.log('运行时收到深层链接:', url);
    handleDeepLink(url); // 您的自定义函数
  };

  const subscription = Linking.addEventListener('url', handleUrlEvent);

  handleInitialDeepLink();

  return () => {
    subscription.remove(); 
  };
}, []);

export const handleDeepLink = (
  url: string | null,
  navigationRef: NavigationContainerRef<RootStackParamList>,
): boolean => {
  try {
    if (!url) {
      return false;
    }

    // 实现代码来解析传入的深层链接,并使用React Navigation
    // 根据需要在您的应用中路由请求。
    console.log(`深层链接示例 - 已收到:${url}`);
    // url = https://www.acme.com/some/show/rrn:content:shows:123456789

    return true;
  } catch (error) {
    console.error('处理深层链接时出错', error);
    return false;
  }
};

当您侧载应用时,它必须与应用的ASIN关联才能测试深层链接。在Fire TV亚马逊应用商店中,ASIN代表亚马逊标准识别码。ASIN是一个由10个字符组成的字母数字字符串,看上去类似B080PZMHSN。您的亚马逊联系人可以帮助您获取应用的ASIN。

使用以下命令安装关联ASIN的应用。将“store-id=”后面的示例ASIN B080PZMHSN替换为您的应用的实际ASIN。

已复制到剪贴板。

vda push "keplerdeeplinksampleapp_armv7.vpkg" /tmp
vda shell vpm install-async tmp/"keplerdeeplinksampleapp_armv7.vpkg" —store-id="B080PZMHSN"

您可以通过向您的应用发送CLI命令来测试深层链接。在CLI命令中纳入“amzns”部分

vda shell "vmsgr send '<在此处添加amzns URL> ' "

使用以下深层链接来验证集成。请注意,深层链接在“asin=”之后具有您的应用的ASIN。

已复制到剪贴板。

vda shell "vmsgr send 'amzns://apps/android?asin=B080PZMHSN#Intent;S.intentToFwd=https%3A%2F%2Fwww.acme.com%2Fsome%2Fshow%2Frrn%3Acontent%3Ashows%3A123456789;end'"

示例代码中的handleDeepLink() 函数显示以下消息。

deeplink-sample - received: https://www.acme.com/some/show/rrn:content:shows:123456789


Last updated: 2025年9月30日