as

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

步骤7: 为权利计划EPG任务

步骤7: 为权利计划EPG任务

您的应用可能有多个触发器,这些触发器会更改客户有权获得的直播内容。其中一些示例包括登录、注销或订阅更改。在这些触发点,您可以调用EpgSyncTaskScheduler方法来计划EPG同步任务。

如果客户不再有权获得任何内容,例如取消订阅时,请执行以下操作。

  1. 调用ChannelLineupProvider.add([]) + ChannelLineupProvider.commit() 以及LiveEventProvider.add([]) + LiveEventProvider.commit(),从系统中清除客户的直播内容。
  2. 调用cancelScheduledTasks() 方法取消任何计划的EPG同步任务,因为无需刷新任何授权内容。

以下是示例代码片段,演示了在onLogin()onLogout回调中如何使用EpgSyncTaskScheduler

已复制到剪贴板。

import { EpgSyncTaskScheduler } from '@amazon-devices/kepler-epg-sync-scheduler';
import {
  ChannelLineupProvider,
  LiveEventProvider,
} from '@amazon-devices/kepler-epg-provider';

const onLogin = async (): Promise<void> => {
  try {
    // 以给定的间隔计划EPG同步任务
    await EpgSyncTaskScheduler.scheduleTask(
      '<程序包ID>.epgSyncTask', // 同步任务的组件ID
      60 * 24, // 24小时(以分钟为单位)
    );
    console.info('EpgSync - 已成功计划EPG同步任务!')
  } catch (error) {
    console.error(`EpgSync - EPG同步任务计划失败,原因为${error}`);
    throw error;
  }
};

const onLogout = async (): Promise<void> => {
  try {
    // 清除客户现有的频道时间表和直播活动
    await ChannelLineupProvider.add([]);
    await ChannelLineupProvider.commit("NO_VERSION");

    await LiveEventProvider.add([]);
    await LiveEventProvider.commit("NO_VERSION");

    // 取消已计划任务
    EpgSyncTaskScheduler.cancelScheduledTasks();
    console.info('EpgSync - 已成功删除EPG同步任务!')
  } catch (error) {
    console.error(`EpgSync - EPG同步清除失败,原因为${error}`);
    throw error;
  }
};

当您的onLogin() 回调运行时,您应该会看到和如下所示类似的日志行:

已复制到剪贴板。

INFO ktf.tm.nests:Successfully scheduled EPG Sync task

Last updated: 2025年9月30日