Hướng dẫn này giải thích cách di chuyển ứng dụng Cast receiver v2 sang phiên bản Web mới nhất Ứng dụng receiver.
SDK Khung ứng dụng truyền (CAF) mới, còn được gọi là Web receiver v3, được một bản nâng cấp lớn từ SDK Bộ thu v2. SDK Web receiver cung cấp SDK dễ sử dụng, được sắp xếp hợp lý để phát triển các ứng dụng trình thu nội dung đa phương tiện trên web.
Web receiver cung cấp API nhất quán hơn với trình gửi CAF mới API. Nền tảng này tích hợp đầy đủ trình phát (MPL và Shaka) và triển khai và hỗ trợ Nội dung nghe nhìn truyền và Trợ lý Google lệnh thoại. SDK CAF cũng cung cấp một giao diện người dùng mặc định có thể dễ dàng tạo kiểu sử dụng CSS và dịch vụ liên kết dữ liệu để đơn giản hoá quá trình triển khai giao diện người dùng.
Tại sao nên di chuyển?
Bằng cách di chuyển ứng dụng Bộ thu v2 sang Trình nhận web, rất nhiều mã giải quyết với trình phát có thể bị loại, nên các em có thể tập trung vào việc viết logic nghiệp vụ dành riêng cho ứng dụng.
CAF tích hợp liền mạch trình phát MPL và Shaka để hỗ trợ đa dạng các loại nội dung bao gồm—Phát trực tuyến HTTP (TS và CMAF), MPEG-DASH, êm Tính năng truyền trực tuyến và các loại được tài sản nguồn Phần tử đa phương tiện hỗ trợ (MP3, MP4, Băng tuyết, v.v. Để xem danh sách đầy đủ, hãy xem Nội dung nghe nhìn được hỗ trợ cho Google Cast. Hiện tại, CAF không hỗ trợ trình phát do người dùng cung cấp.
Khi di chuyển sang CAF, bạn sẽ thêm tính năng điều khiển bằng giọng nói thông qua Trợ lý Google. Mọi lệnh thoại mới cho Trợ lý Google sẽ tự động được hỗ trợ khi bằng CAF.
Ngoài việc hỗ trợ các lệnh đa phương tiện mới—như "thay đổi bản nhạc theo ngôn ngữ" và "thay đổi tốc độ phát"—CAF cũng cung cấp hàng đợi tốt hơn, quảng cáo tích hợp sẵn và hỗ trợ trực tiếp tốt hơn.
Điều gì đã thay đổi?
Web receiver API cố gắng tuân theo các quy ước do Người gửi CAF cho Android và iOS, và khá khác so với phiên bản 2.
Web receiver đang dùng một không gian tên mới
cast.framework
thay vì không gian tên cast.receiver
cho tất cả API hiển thị. Nhiều
các đối tượng dữ liệu mà phiên bản 2 sử dụng giống nhau trong CAF và được hiển thị theo
thời gian
cast.framework.messages
(phần lớn trong số chúng nằm trong cast.receiver.media
).
Các dịch vụ phiên bản 2 sau đây được thay thế bằng các dịch vụ CAF tương ứng:
- Lớp
CastReceiverManager
được thay thế bằngCastReceiverContext
là một singleton quản lý phiên truyền, người gửi, gửi thông tin tuỳ chỉnh tin nhắn và các sự kiện của hệ thống chung. Chiến lược phát hành đĩa đơnCastReceiverOptions
có thể được dùng để cung cấp tuỳ chọn ứng dụng chung (chẳng hạn như hàng đợi, dịch vụ nhận phiên bản, cấu hình phát, v.v.) vào ngữ cảnh. - Lớp
MediaManager
được thay thế bằngPlayerManager
Đây là một thuộc tính củaCastReceiverContext
singleton và hệ thống này quản lý phiên đa phương tiện, yêu cầu đa phương tiện, Yêu cầu bằng giọng nói của Trợ lý (CommandAndControlManager
trong phiên bản 2), và kích hoạt các sự kiện truyền thông. Cấu hình dành cho người chơi (cast.player.api.Host
trong MPL) được cung cấp bởiPlaybackConfig
, có thể được cung cấp trên toàn cầu hoặc theo từng yêu cầu tải.
PlayerManager
cũng hiển thị các lớp người quản lý phụ mới:
TextTracksManager
– quản lý các bản nhạc nội dung nghe nhìn.AudioTracksManager
– quản lý bản âm thanh.QueueManager
– quản lý hàng đợi.BreakManager
– quản lý quảng cáo.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// Set global options.
const options = new cast.framework.CastReceiverOptions();
options.versionCode = DEVELOPERS_APP_VERSION;
context.start(options);
Logic nghiệp vụ của người nhận
Trình thu nhận phiên bản 2 hiển thị các trình xử lý sự kiện (chẳng hạn như CastReceiverManager.onReady
hoặc
MediaManager.onLoad
) để thêm logic nghiệp vụ. Trong CAF, trình xử lý sự kiện
được thay thế bằng trình nghe sự kiện
(CastReceiverContext.addEventListener
)
và trình chặn tin nhắn
(PlayerManager.setMessageInterceptor
).
Web receiver có thể dùng nhiều trình nghe sự kiện cho một sự kiện (trình nghe)
không ảnh hưởng đến sự kiện) và một trình chặn cho mỗi thông báo. Thiết bị chặn
có thể cập nhật hoặc xử lý yêu cầu (trả lại yêu cầu đã sửa đổi, thành công)
hoặc thông báo lỗi) và có thể là trình xử lý không đồng bộ trả về một lời hứa.
Trình chặn yêu cầu tải là nơi phổ biến nhất để thêm logic dành riêng cho ứng dụng. Đối với yêu cầu tải từ người gửi, tải chặn có thể chuyển đổi Content ID thành URL nội dung. Thiết bị chặn tải là cũng được gọi cho các yêu cầu tải trước và bộ nhớ đệm trước nếu không có trình chặn rõ ràng đã được cung cấp để tải trước hoặc lưu trước trong bộ nhớ đệm.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
request => {
// Resolve entity to content id
if (request.media.entity && !request.media.contentId) {
return getMediaByEntity(request.media.entity).then(
media => {
request.media.contentId = media.url;
return request;
});
}
return request;
});
Trình xử lý trạng thái nội dung nghe nhìn tuỳ chỉnh v2 cũng được thay thế bằng một thông báo
trình chặn cho thông báo trạng thái nội dung nghe nhìn. Các ứng dụng Trình nhận web không muốn
hiển thị URL phương tiện ở trạng thái phương tiện có thể cung cấp trình phân giải URL
(PlayerManager.setMediaUrlResolver
),
URL này cung cấp URL phương tiện cho một yêu cầu tải. URL đó do CAF sử dụng
nội bộ và không được cung cấp trong trạng thái phương tiện.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.MEDIA_STATUS,
status => {
// Disable seek.
status.supportedMediaCommands &=
~cast.framework.messages.Command.SEEK
return status;
});
Sự kiện
Web receiver cung cấp một bộ sự kiện bao quát từ cả
CastReceiverContext
và
PlayerManager
.
Các ứng dụng Web nhận có thể có nhiều trình nghe trong bất kỳ sự kiện nào và
cũng có thể cung cấp một trình nghe cho nhiều sự kiện. (Xem
cast.framework.events.category
cho một số nhóm sự kiện).
Các sự kiện này bao gồm mọi yêu cầu của người dùng, tiến trình phát, quá trình xử lý trình phát và bất kỳ sự kiện phần tử nội dung nghe nhìn cấp thấp (CAF không hiển thị phần tử nội dung nghe nhìn).
Ứng dụng Web receiver có thể thêm trình nghe sự kiện để thực hiện hành động (ví dụ: thêm văn bản theo dõi định nghĩa khi tải hoàn tất) hoặc để phân tích.
// Log all media commands
playerManager.addEventListener(
cast.framework.events.category.REQUEST,
event => logEvent(event.type));
Bus thông báo tuỳ chỉnh
CAF không hiển thị bus thông báo trong API mà cung cấp
CastReceiverContext.addCustomMessageListener
để thêm một trình nghe thông báo cho một không gian tên cụ thể (chỉ một trình nghe cho mỗi không gian tên) và
CastReceiverContext.sendCustomMessage
để gửi thư trên không gian tên. Bạn cần khai báo tất cả không gian tên trước
khởi động Web receiver (tức là trước khi gọi
CastReceiverContext.start
).
Bạn có thể khai báo không gian tên bằng
thêm một trình nghe thông báo vào chúng hoặc có thể được cung cấp làm tuỳ chọn bắt đầu trong
CastReceiverOptions.customNamespaces
.
const options = new cast.framework.CastReceiverOptions();
options.customNamespaces = {
CUSTOM_NS: cast.framework.system.MessageType.JSON
};
context.start(options);
context.sendCustomMessage(CUSTOM_NS, {
type: 'status'
message: 'Playing'
});
Giao diện người dùng mặc định
CAF cung cấp giao diện người dùng mặc định của Web receiver, trong đó hiển thị thanh tiến trình phát và
siêu dữ liệu đa phương tiện khi cần. Giao diện người dùng mặc định được cung cấp dưới dạng phần tử tuỳ chỉnh
(<cast-media-player>
)
có thể được tạo kiểu bằng kiểu giống CSS.
<style>
cast-media-player { --splash-image: url("splash.png"); }
</style>
<cast-media-player></cast-media-player>
Để có thể tuỳ chỉnh thêm, ứng dụng Web receiver có thể triển khai giao diện người dùng của riêng ứng dụng đó. Chiến lược phát hành đĩa đơn
Web receiver cung cấp
cast.framework.ui.PlayerDataBinder
để giúp liên kết đối tượng giao diện người dùng với trạng thái phát của Trình nhận web.