概要
Web Receiver SDK は、
デフォルト キューによって提供される
SDK を使用
QueueData
および
QueueManager
またはカスタムキューを使用するか、
実装
cast.framework.QueueBase
使用し、
QueueManager
をご覧ください。
Queueing API を使用すると、Chromecast をシームレスに統合できます。 次の機能があります。
- Google とパートナー様の外部向けクラウドキュー実装をサポート 保存および作成されたキューをキャスト デバイスに直接読み込むことができます。
- 読み込みではなくキュー内のアイテムのページ分割を可能にするメカニズム 一括で作成できます。
- 次の項目、前の項目、 アイテムのウィンドウをフェッチしたり、関連するメディア情報を 必要があります。
- 「
QueueManagerを使用して、キューアイテムの挿入、削除、更新を管理します。
デフォルト キュー
Web Receiver SDK では、すぐに利用できる形式の制限されたキューが 構成されます。
デフォルトのキューを使用するには、
queueData
送信側の読み込みの LoadRequestData で指定するか、ローカルの読み込みリクエストを送信します
PlayerManager#load。
メディアの読み込みもご覧ください。
受信側では、次を使用してキューを変更できます。
QueueManager
初期化します。
カスタムキュー
デフォルト キューのキューイング機能を備えていない場合、 カスタムキューを作成できるため、 柔軟性です
アプリケーション デベロッパーは、Web Receiver 側のキューを作成するには、
cast.framework.QueueBase。
次の簡単なキューの基本的な例は、
initialize
呼び出しがオーバーライドされ、キューアイテムのリストとキューの説明が返されます。
キャスト デバイスに提供されます。
メディアの読み込みもご覧ください。
// Creates a simple queue with a combination of contents.
const DemoQueue = class extends cast.framework.QueueBase {
 constructor() {
   super();
   /**
    * List of media urls.
    * @private @const {!Array<string>}
    */
   this.myMediaUrls_ = [...];
 }
 /**
  * Provide a list of items.
  * @param {!cast.framework.messages.LoadRequestData} loadRequestData
  * @return {!cast.framework.messages.QueueData}
  */
 initialize(loadRequestData) {
   const items = [];
   for (const mediaUrl of this.myMediaUrls_) {
     const item = new cast.framework.messages.QueueItem();
     item.media = new cast.framework.messages.MediaInformation();
     item.media.contentId = mediaUrl;
     items.push(item);
   }
   let queueData = loadRequestData.queueData;
   // Create a new queue with media from the load request if one doesn't exist.
   if (!queueData) {
     queueData = new cast.framework.messages.QueueData();
     queueData.name = 'Your Queue Name';
     queueData.description = 'Your Queue Description';
     queueData.items = items;
     // Start with the first item in the playlist.
     queueData.startIndex = 0;
     // Start from 10 seconds into the first item.
     queueData.currentTime = 10;
   }
   return queueData;
 }
};
この例では、
initialize
プロバイダのモジュールで
QueueBase
呼び出すことができます。ただし、クラウドキューの実装では、カスタムの Web
レシーバー ロジックはアイテムを外部で取得して、
あります。
Queueing API のより包括的な使用方法を示すデモ
キューに実装されます。
QueueBase クラス。
const DemoQueue = class extends cast.framework.QueueBase {
 constructor() {
   /** @private {} */
   super();
   YourServer.onSomeEvent = this.updateEntireQueue_;
 }
 /**
  * Initializes the queue.
  * @param {!cast.framework.messages.LoadRequestData} loadRequestData
  * @return {!cast.framework.messages.QueueData}
  */
 initialize(loadRequestData) {
   let queueData = loadRequestData.queueData;
   // Create a new queue with media from the load request if one doesn't exist.
   if (!queueData) {
     queueData = new cast.framework.messages.QueueData();
     queueData.name = 'Your Queue Name';
     queueData.description = 'Your Queue Description';
     // Put the first set of items into the queue
     const items = this.nextItems();
     queueData.items = items;
     // Start with the first item in the playlist.
     queueData.startIndex = 0;
     // Start from 10 seconds into the first item.
     queueData.currentTime = 10;
   }
   return queueData;
 }
 /**
  * Picks a set of items from remote server after the reference item id and
  * return as the next items to be inserted into the queue. When
  * referenceItemId is omitted, items are simply appended to the end of the
  * queue.
  * @param {number} referenceItemId
  * @return {!Array<cast.framework.QueueItem>}
  */
 nextItems(referenceItemId) {
   // Assume your media has a itemId and the media url
   return this.constructQueueList_(YourServer.getNextMedias(referenceItemId));
 }
 /**
  * Picks a set of items from remote server before the reference item id and
  * return as the items to be inserted into the queue. When
  * referenceItemId is omitted, items are simply appended to beginning of the
  * queue.
  * @param {number} referenceItemId
  * @return {!Array<cast.framework.QueueItem>}
  */
 prevItems(referenceItemId) {
   return this.constructQueueList_(YourServer.getPrevMedias(referenceItemId));
 }
 /**
  * Constructs a list of QueueItems based on the media information containing
  * the item id and the media url.
  * @param {number} referenceItemId
  * @return {!Array<cast.framework.QueueItem>}
  */
 constructQueueList_(medias) {
   const items = [];
   for (media of medias) {
     const item = new cast.framework.messages.QueueItem(media.itemId);
     item.media = new cast.framework.messages.MediaInformation();
     item.media.contentId = media.url;
     items.push(item);
   }
   return items;
 }
 /**
  * Logs the currently playing item.
  * @param {number} itemId The unique id for the item.
  * @export
  */
 onCurrentItemIdChanged(itemId) {
   console.log('We are now playing video ' + itemId);
   YourServer.trackUsage(itemId);
 }
};
上記の例では、YourServer が Cloud Queue サーバーであり、ロジックが含まれています。
特定のメディア アイテムを取得する方法を説明しました。
QueueBase を使用するには
キューイングを実装している場合は、
CastReceiverContext:
const context = cast.framework.CastReceiverContext.getInstance();
context.start({queue: new DemoQueue()});
キューの管理
「
QueueManager
キューイングソリューションの開発に
柔軟性をもたらします
現在保存されているキュー アイテムのリストと、
現在再生中のアイテム。また、挿入、削除、削除などの操作も行えます。
更新を自動化することもできます。次のスニペットは、
インスタンス
QueueManager:
const context = cast.framework.CastReceiverContext.getInstance();
const queueManager = context.getPlayerManager().getQueueManager();
デフォルト キューの管理
最初のキューが読み込まれると、
QueueManager
を使用すると、現在のアイテムの取得、
キュー内のすべてのアイテムを取得し、
insertItems,
removeItems,
および
updateItems。
カスタムキューの管理
カスタムキューの実装例を次に示します。
削除メソッドを使用できます。この例では、Cloud Functions を使用して
updateItems
ここでは、開発者が既存のキュー内のキュー項目を変更できます。
ミッドロール挿入点の削除
const DemoQueue = class extends cast.framework.QueueBase {
  constructor() {
    super();
    /** @private @const {!cast.framework.QueueManager} */
    this.queueManager_ = context.getPlayerManager().getQueueManager();
  }
  /**
   * Provide a list of items.
   * @param {!cast.framework.messages.LoadRequestData} loadRequestData
   * @return {!cast.framework.messages.QueueData}
   */
  initialize(loadRequestData) {
    // Your normal initialization; see examples above.
    return queueData;
  }
  /** Inserts items to the queue. */
  onSomeEventTriggeringInsertionToQueue() {
    const twoMoreUrls = ['http://url1', 'http://url2'];
    const items = [];
    for (const mediaUrl of twoMoreUrls) {
      const item = new cast.framework.QueueItem();
      item.media = new cast.framework.messages.MediaInformation();
      item.media.contentId = mediaUrl;
      items.push(item);
    }
    // Insert two more items after the current playing item.
    const allItems = this.queueManager_.getItems();
    const currentItemIndex = this.queueManager_.getCurrentItemIndex();
    const nextItemIndex = currentItemIndex + 1;
    let insertBefore = undefined;
    if (currentItemIndex >= 0 &&
        currentItemIndex < allItems.length - 1) {
      insertBefore = allItems[nextItemIndex].itemId;
    }
    this.queueManager_.insertItems(items, insertBefore);
  }
  /** Removes a particular item from the queue. */
  onSomeEventTriggeringRemovalFromQueue() {
    this.queueManager_.removeItems([2]);
  }
  /** Removes all the ads from all the items across the entire queue. */
  onUserBoughtAdFreeVersion() {
    const items = this.queueManager_.getItems();
    this.queueManager_.updateItems(items.map(item => {
      item.media.breaks = undefined;
      return item;
    }));
  }
};
受信メッセージと送信メッセージ
信頼できる情報源としての受信側のキュー取得を完全にサポートするために、 次の追加のキュー メッセージが導入され、CAF によって処理されます。 Receiver SDK:
| 着信メッセージ | パラメータ | 送信レスポンス メッセージ | 返却 | 
| 次へ | パラメータは必要ありません。 | MEDIA_STATUS | レシーバーが(必要に応じて nextItems() を介してフェッチし)、再生を開始します。 選択します。 | 
| 前へ | パラメータは必要ありません。 | MEDIA_STATUS | Web Receiver が(必要に応じて prevItems() を介してフェッチ)、 直前のアイテムを再生します。 | 
| FETCH_ITEMS | FetchItemsRequestData | QUEUE_CHANGE | cast.framework.messages.QueueChangeたとえば 挿入ケースの場合 JSON の items フィールドには、新しく取得されたアイテムのリストが含まれます。 | 
| GET_ITEMS_INFO | itemIds を含む GetItemsInfoRequestData: 配列<数値> | ITEMS_INFO | cast.framework.messages.ItemsInfo とキューアイテム情報。 | 
| GET_QUEUE_IDS | パラメータは必要ありません。 | QUEUE_IDS | cast.framework.messages.QueueIds. | 
NEXT/PREVIOUS の場合、Web Receiver の既存のキュー表現が
よりアイテムがない場合、
QueueBase.nextItems()
または
QueueBase.prevItems()
自動的に呼び出され、追加のアイテムを受け取ります。
FETCH_ITEM の場合、対応する関数
fetchItems
QueueBase の実装では、クラウド キューに対して
関連するデータを Web Receiver に返して保存します。
さらにアイテムが取得されると、新しいメッセージ タイプ QUEUE_CHANGE がトリガーされます
送信者に返送されます各種のデータソースと
変更をキューに入れることができます。
GET_ITEMS_INFO の場合、
QueueBase の
実装はトリガーされず、Web Receiver がメディア情報を返す
識別子のリストです。
キューのシャッフル
キュー内のアイテムをシャッフルするように設定するには、
shuffle
旗
QueueData
アイテムをキューに読み込むときに、true に追加します。
次の実装を使用している場合は、
QueueBase、次を使用:
shuffle
メソッドを使用して、アイテムのシャッフル リストを返します。
既存のキューをシャッフルするには、
shuffle
「QUEUE_UPDATE」の国旗
MessageType,
QUEUE_SHUFFLE コマンドではなく、詳しくは、QueueUpdateRequestData をご覧ください。
リピートモード
キュー内のアイテムを繰り返すように設定するには、
repeatMode
プロパティ
QueueData
移動します。
RepeatMode
キューに追加することをおすすめします
既存のキューの RepeatMode を変更するには、次のコマンドを使用します。
repeatMode
プロパティの
QueueUpdateRequestData,
これは QUEUE_UPDATE を使用します
MessageType を選択します。