as

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

同步源屏幕

同步源屏幕

Fire TV为客户“强制”刷新直播TV应用的权利、频道元数据和节目提供了机制,以获取最新信息,这些信息将显示在“Live TV Settings”(直播TV设置)屏幕上。

启动画面 - 同步正在进行中。

以下是同步过程中的启动画面示例。

启动画面 - 同步完成。

请按照下面的步骤在您的应用中支持此功能。

集成步骤

步骤1: 在应用中包含必要的程序包依赖项

package.json文件中添加以下依赖项。

已复制到剪贴板。

  "dependencies": {
    "@amazon-devices/kepler-epg-provider": "^1.9.0",
  }
  • kepler-epg-provider程序包提供了用于向系统中推送EPG数据(频道权利、元数据和节目)的API。

步骤2: 更新您的清单文件

更新您的manifest.toml文件以包含同步源交互组件。以下是一个示例,显示了Vega示例应用的manifest.toml文件的一部分。

已复制到剪贴板。

## 声明应用的同步源组件
[[components.interactive]]
id = "<程序包ID>.sync_source"
runtime-module = "/com.amazon.kepler.keplerscript.runtime.loader_2@IKeplerScript_2_0"
launch-type = "singleton"

## 声明应用支持同步源功能
[offers]
[[offers.message-target]]
## 使用之前定义的同一组件ID处理同步源。
uses-component = "<程序包ID>.sync_source"
## 直播TV设置使用此消息启动同步源屏幕。
uris = ["livetv://sync_source"]

步骤3: 创建您的屏幕

将以下文件添加到您的应用程序包中,并定义您的业务逻辑,以显示启动画面并向系统推送最新EPG数据。

创建应用的同步源屏幕,方法是在src文件夹中创建包含以下内容的EpgSyncSource.tsx文件:

已复制到剪贴板。

import {
  ingestChannelLineup,
  ingestProgramLineup,
} from './src/EpgSyncTask';

const EpgSyncSource = () => {

    // 将回调传递给频道和节目引入以更新进度条
    const progressCallback = React.useCallback((progress: number) => {
        // 更新进度条
    }, []);

    const ingestLineup = React.useCallback(async () => {
        try {
            // 引入频道和节目时间表
            await ingestChannelLineup(progressCallback);
            await ingestProgramLineup(progressCallback);

            // 显示同步完成消息
        } catch (error){
            // 显示同步失败消息
        }
        // 等待3秒钟然后退出
        await new Promise(r => setTimeout(r, 3000));
        BackHandler.exitApp();
    }, [progressCallback]);

    // 屏幕启动时:
    useEffect(() => {
        // 如果需要频道权利,则显示登录屏幕
        if(isCustomerLoggedin === false) {
            showLoginScreen();
         }
         // 开始同步客户的直播TV数据
        ingestLineup();
    }, [ingestLineup]);

    return (
        <View style={styles.container}>
            // 启动画面向客户显示状态消息和进度指示器
        </View>
    );
 };

export default EpgSyncSource;

最好重复使用函数以通过EpgSyncTask提供频道和节目。如果您不打算重复使用函数,请参阅Vega EPG提供方,了解有关EPG引入的详细信息。

步骤4: 将屏幕的入口点告知系统。

更新您的index.js文件,以使用在您的manifest.toml文件中定义的组件ID和SyncSource.tsx中定义的屏幕来注册同步源组件。以下是Vega示例应用的代码。

已复制到剪贴板。

import { AppRegistry } from 'react-native';
import App from './src/App';
import EpgSyncSource from './src/EpgSyncSource';

AppRegistry.registerComponent("<程序包ID>.main", () => App);
AppRegistry.registerComponent("<程序包ID>.sync_source", () => EpgSyncSource);

现在,通过同步源屏幕,您应用的结构应该正确无误。接下来,完成屏幕逻辑并进行同步。

同步源屏幕的预期行为

应用的同步源屏幕在启动时需要执行以下操作:

  1. 如果您的应用要求客户登录才能获得频道权利,而他们目前尚未登录,请将客户转到您的登录屏幕。
  2. 客户登录后,使用Vega EPG提供方同步客户的频道权利、元数据和节目,以将数据推送到系统。
    1. 此同步应立即启动,并作为后台任务执行。
    2. 最好重复使用相同代码以通过EpgSyncTask引入EPG。
  3. 为用户显示启动画面,表明同步正在进行中。
    1. 作为最佳实践,它应该有一个进度条,或者如果您无法实现进度条,则应该有一个加载动画。
    2. 此屏幕应显示一条警告消息,提示客户不应离开屏幕,否则同步将失败。
  4. 同步完成后,更新屏幕以通知用户同步已完成。
  5. 在同步完成后的几秒钟内退出屏幕。

Last updated: 2025年10月3日