개요
Web Receiver SDK는
기본 큐
SDK를 사용하는
QueueData
및
QueueManager
또는 다음과 같이 커스텀 대기열 사용
구현
cast.framework.QueueBase
사용하여
QueueManager
확인하세요.
Queueing API는 애플리케이션이 Cast와 더 잘 통합되도록 하는 데 도움이 되는 다음 기능을 사용할 수 있습니다.
- Google 및 파트너의 클라우드 대기열 구현에 대한 외부 지원 저장 및 생성된 대기열을 Cast 기기에 직접 로드할 수 있습니다.
- 대기열에서 항목을 로드하는 대신 페이지로 나누기를 허용하는 메커니즘 할 수 있습니다.
- 다음 항목으로 이동, 이전 항목으로 이동, 항목 창 가져오기, 관련 미디어 정보 가져오기 등 할 수 있습니다.
- 이
QueueManager
드림 큐 항목의 삽입, 삭제, 업데이트를 관리합니다.
기본 큐
Web Receiver SDK는 다음과 같은 형식으로 제한된 큐 지원을 즉시 제공합니다. 기본 큐의 역할을 지정합니다.
기본 대기열을 사용하려면
queueData
드림
보내는 사람 측 로드의 LoadRequestData
에서 또는 로컬 로드 요청 전송
사용
PlayerManager#load
입니다.
미디어 로드도 참고하세요.
수신자 측에서는
QueueManager
드림
미디어 파일을 생성할 수 있습니다.
커스텀 대기열
기본 대기열이 다음 작업에 필요한 대기열 기능을 제공하지 않는 경우 커스텀 대기열을 만드는 기능이 제공되므로 더 많은 리소스를 살펴봤습니다
애플리케이션 개발자는
cast.framework.QueueBase
이것은 단일 큐의 기본적인 예입니다.
initialize
드림
호출이 재정의된 후 대기열 설명과 대기열 항목 목록이
Cast 기기에 제공됩니다.
미디어 로드도 참고하세요.
// 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
생성자 호출을 사용하세요. 하지만 클라우드 대기열 구현의 경우 커스텀 웹은
수신기 로직은 항목을 외부에서 가져온 다음
초기화합니다.
Queueing API를 보다 포괄적으로 사용하는 방법을 보여주는 데모입니다.
대부분의 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
는 클라우드 큐 서버이며 로직이 있습니다.
가져오는 방법을 배웠습니다
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
.
커스텀 큐 관리
이것은 삽입과
일부 이벤트에 따른 삭제 방법을 설명합니다. 또한 이 예시에서는
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에 의해 도입 및 처리됩니다. 수신기 SDK:
수신 메시지 | 매개변수 | 발신 응답 메시지 | Return 키 |
다음 | 매개변수가 필요하지 않습니다. | MEDIA_STATUS | 수신기가 (필요한 경우 nextItems()를 통해 가져오기) 재생을 시작합니다. 이동하겠습니다. |
이전 | 매개변수가 필요하지 않습니다. | MEDIA_STATUS | 웹 수신기는 필요한 경우 prevItems()를 통해 가져와서 이전 항목이 재생됩니다. |
FETCH_ITEMS | FetchItemsRequestData | QUEUE_CHANGE | Cast.framework.messages.QueueChange입니다. 예를 들어 삽입 케이스의 경우 JSON의 항목 필드에는 가져온 새 항목의 목록이 포함됩니다. |
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
구현에서는
웹 수신기로 반환할 관련 데이터를 저장합니다.
항목을 더 가져올 때마다 새 메시지 유형 QUEUE_CHANGE
이 트리거됩니다.
보낸 사람에게 다시 보냅니다. 다양한 유형의
대기열 변경을 수행합니다.
GET_ITEMS_INFO
의 경우
QueueBase
님의
구현이 트리거되지 않고 웹 수신기가 미디어 정보를 반환함
이미 ID 목록에 알려져 있습니다.
큐 셔플
대기열의 항목을 셔플하도록 설정하려면
shuffle
드림
국기
QueueData
대기열에 항목을 로드할 때 true
로 설정합니다.
Google Cloud 콘솔의
QueueBase
의 경우
shuffle
메서드를 사용하여 셔플된 항목 목록을 반환합니다.
기존 큐를 셔플하려면
shuffle
드림
QUEUE_UPDATE
국기
MessageType
,
QUEUE_SHUFFLE
명령이 아니라 자세한 내용은 QueueUpdateRequestData
를 참고하세요.
반복 모드
대기열의 항목이 반복되도록 설정하려면
repeatMode
드림
속성
QueueData
원하는
RepeatMode
를 참조하세요.
기존 큐의 RepeatMode
를 변경하려면 다음을 사용합니다.
repeatMode
속성
QueueUpdateRequestData
,
이는 QUEUE_UPDATE
를 사용하는
MessageType
를 탭합니다.