在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应用中处理精选内容深层链接
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;
  }
};
在Vega上测试您指向精选内容的深层链接
当您侧载应用时,它必须与应用的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日

