Hướng dẫn này giải thích cách di chuyển ứng dụng Cast receiver v2 sang ứng dụng Trình nhận web mới nhất.
SDK ứng dụng truyền (CAF) mới, còn được gọi là Bộ thu web v3, là bản nâng cấp lớn so với SDK Bộ thu v2. SDK Bộ thu web cung cấp một SDK dễ dàng và hợp lý để phát triển các ứng dụng Trình thu thập dữ liệu web.
Bộ thu web cung cấp một API nhất quán hơn với các API gửi CAF mới. Gói này cung cấp đầy đủ tính năng tích hợp trình phát (MPL và Shaka), cũng như hỗ trợ triển khai và hỗ trợ đầy đủ cho nội dung đa phương tiện Truyền và Trợ lý Google. SDK CAF cũng cung cấp giao diện người dùng mặc định có thể dễ dàng tạo kiểu bằng CSS và dịch vụ liên kết dữ liệu để đơn giản hoá việc 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, bạn có thể loại bỏ rất nhiều mã liên quan đến trình phát. Vì vậy, bạn có thể tập trung vào việc viết logic kinh doanh dành riêng cho ứng dụng.
CAF tích hợp liền mạch các trình phát MPL và Shaka để hỗ trợ nhiều loại nội dung hơn, bao gồm — Phát trực tiếp HTTP (TS và CMAF), Truyền phát MPEG-DASH, Phát mượt mà và các loại được hỗ trợ bởi tài sản nguồn Media Element (MP3, MP4, Icecast, v.v.). Để biết danh sách đầy đủ, hãy xem Nội dung nghe nhìn được hỗ trợ cho Google Cast. CAF hiện không hỗ trợ trình phát do người dùng cung cấp.
Việc chuyển sang CAF sẽ thêm tính năng hỗ trợ cho việc điều khiển bằng giọng nói thông qua Trợ lý Google. Mọi lệnh thoại mới có Trợ lý Google sẽ tự động được hỗ trợ khi sử dụng CAF.
Ngoài việc hỗ trợ các lệnh nội dung nghe nhìn mới, chẳng hạn như "thay đổi bản nhạc theo ngôn ngữ" và "thay đổi tốc độ phát", CAF cũng cung cấp khả năng xếp hàng đợi, hỗ trợ 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?
API Bộ thu web cố gắng tuân theo các quy ước mà người gửi CAF giới thiệu cho Android và iOS, và khá khác với phiên bản 2.
Web receiver đang sử dụng một vùng chứa tên mới
cast.framework
thay vì không gian tên cast.receiver
cho tất cả các API hiển thị. Nhiều đối tượng dữ liệu được v2 sử dụng giống nhau trong CAF và được hiển thị trong không gian tên cast.framework.messages
(thường nằm trong cast.receiver.media
).
Các dịch vụ v2 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 tin nhắn tuỳ chỉnh và các sự kiện của hệ thống toàn cầu. Bạn có thể sử dụngCastReceiverOptions
để cung cấp các tuỳ chọn chung của ứng dụng (chẳng hạn như hàng đợi, phiên bản trình nhận, cấu hình phát, v.v.) cho ngữ cảnh. - Lớp
MediaManager
được thay thế bằngPlayerManager
là thuộc tính của singletonCastReceiverContext
, đồng thời quản lý phiên phát nội dung đa phương tiện, yêu cầu nội dung nghe nhìn, yêu cầu thoại của Trợ lý Google (CommandAndControlManager
trong phiên bản 2) và kích hoạt các sự kiện nội dung nghe nhìn. Cấu hình cho trình phát (cast.player.api.Host
trong MPL) doPlaybackConfig
cung cấp. Cấu hình này có thể được cung cấp trên toàn cầu hoặc cho mỗi yêu cầu tải.
PlayerManager
cũng cho phép các lớp của người quản lý phụ mới:
TextTracksManager
– quản lý các bản nhạc văn bản đa phương tiện.AudioTracksManager
– quản lý các bản âm thanh.QueueManager
– quản lý danh sách chờ.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 kinh doanh của người nhận
Trình xử lý sự kiện v2 hiển thị bộ thu (chẳng hạn như CastReceiverManager.onReady
hoặc
MediaManager.onLoad
) để thêm logic kinh doanh. 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 thông báo (PlayerManager.setMessageInterceptor
). Bộ thu web có thể có 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. Trình chặn có thể cập nhật hoặc xử lý yêu cầu (trả về yêu cầu đã sửa đổi, thông báo thành công hoặc thông báo lỗi), và có thể là một trình xử lý không đồng bộ trả về 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 các yêu cầu tải từ người gửi, trình chặn tải có thể chuyển đổi mã nội dung thành URL nội dung. Trình chặn tải cũng sẽ được gọi để yêu cầu tải trước và lưu vào bộ nhớ đệm trước nếu không có trình chặn rõ ràng nào được cung cấp để tải trước hoặc lưu trước vào 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 đa phương tiện tuỳ chỉnh v2 cũng được thay thế bằng một trình chặn thông báo cho thông báo trạng thái nội dung phương tiện. Các ứng dụng Bộ thu web không muốn hiển thị URL nội dung đa phương tiện trong trạng thái nội dung đa phương tiện có thể cung cấp trình phân giải URL (PlayerManager.setMediaUrlResolver
), trình cung cấp này chứa URL nội dung đa phương tiện cho yêu cầu tải. URL đó được CAF sử dụng nội bộ và không được cung cấp trong trạng thái nội dung 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 loạt sự kiện từ cả
CastReceiverContext
và
PlayerManager
.
Các ứng dụng Bộ thu web có thể có nhiều trình nghe trên mọi sự kiện 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à mọi sự kiện phần tử nội dung đa phương tiện cấp thấp (CAF không hiển thị chính phần tử nội dung đa phương tiện đó).
Ứng dụng Bộ thu web có thể thêm trình nghe sự kiện để hoạt động (ví dụ: thêm định nghĩa theo dõi văn bản khi tải xong) hoặc để phân tích.
// Log all media commands
playerManager.addEventListener(
cast.framework.events.category.REQUEST,
event => logEvent(event.type));
Xe buýt thông báo tuỳ chỉnh
CAF không hiển thị bus thông báo trong API, thay vào đó, nó cung cấp CastReceiverContext.addCustomMessageListener
để thêm trình nghe thông báo cho một vùng chứa tên cụ thể (chỉ một vùng chứa cho mỗi vùng chứa tên) và CastReceiverContext.sendCustomMessage
để gửi thông báo trên vùng chứa tên. Bạn cần khai báo tất cả các vùng chứa tên trước khi khởi động Web receiver (nghĩa là trước khi gọi
CastReceiverContext.start
).
Bạn có thể khai báo vùng chứa tên bằng cách
thêm trình nghe thông báo vào vùng chứa tên đó hoặc có thể cung cấp dưới dạng 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 Web receiver mặc định, hiển thị thanh tiến trình phát và siêu dữ liệu đa phương tiện nếu cần. Giao diện người dùng mặc định được cung cấp dưới dạng một phần tử tuỳ chỉnh
(<cast-media-player>
)
có thể tạo kiểu với kiểu giống CSS.
<style>
cast-media-player { --splash-image: url("splash.png"); }
</style>
<cast-media-player></cast-media-player>
Để tuỳ chỉnh nhiều hơn, ứng dụng Bộ thu web có thể triển khai giao diện người dùng riêng. Web receiver cung cấp lớ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 Bộ thu trên web.