Quy trình sau đây cho phép bạn chuyển đổi ứng dụng người gửi iOS từ Cast SDK v2 sang CAF Sender, dựa trên singleton GCKCastContext.
Giới thiệu
- CAF Sender vẫn được phân phối trên trang web dành cho nhà phát triển Google Cast và CocoaPods như phiên bản 2.
- Các lớp mới đã được thêm vào chịu trách nhiệm tuân thủ danh sách kiểm tra thiết kế Google Cast.
- Người gửi CAF cung cấp các tiện ích tuân thủ các yêu cầu về Trải nghiệm người dùng truyền; phiên bản 2 không cung cấp bất kỳ thành phần giao diện người dùng nào và yêu cầu bạn triển khai các tiện ích này.
- Thiết kế người gửi CAF nhất quán với thiết kế SDK Android truyền.
- Người gửi CAF hỗ trợ Bitcode, như v2.
- Tính năng phụ đề trong CAF cũng tương tự như v2.
Phần phụ thuộc
Người gửi CAF hỗ trợ iOS phiên bản 8 trở lên.
Khởi chạy
Trong CAF, cần có một bước khởi động rõ ràng cho khung Truyền. Việc này liên quan đến việc khởi chạy singleton GCKCastContext
, sử dụng GCKCastOptions
thích hợp để chỉ định ID ứng dụng Bộ thu web và mọi tuỳ chọn chung khác. Việc này thường được thực hiện trong phương thức AppDelegate
-[application:didFinishLaunchingWithOptions:]
:
GCKCastOptions *options = [[GCKCastOptions alloc]
initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
Bước này không cần thiết trong phiên bản 2.
Khám phá thiết bị
Trong CAF, quá trình khám phá bắt đầu và dừng tự động bằng khung khi ứng dụng chạy ở nền trước và chuyển sang nền tương ứng. Các lớp GCKDeviceScanner
và GCKFilterCriteria
từ phiên bản 2 đã ngừng hoạt động và không nên dùng.
Nút Truyền và hộp thoại Truyền
Trong CAF, nút Truyền và hộp thoại do khung cung cấp. Bạn có thể khởi tạo và thêm nút Truyền vào thanh điều hướng như sau:
GCKUICastButton *castButton =
[[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
[[UIBarButtonItem alloc] initWithCustomView:castButton];
Bạn cũng có thể thêm nút Truyền vào bảng phân cảnh.
Khi người dùng nhấn vào nút, hộp thoại Truyền sẽ tự động hiện ra.
Điều khiển thiết bị
Trong CAF, việc kiểm soát thiết bị phần lớn là do khung xử lý. Ứng dụng của người gửi không cần xử lý việc kết nối với thiết bị và khởi chạy ứng dụng Bộ thu web. Lớp v2 GCKDeviceManager
không được dùng nữa và bạn không nên sử dụng. Sự tương tác giữa người gửi và Người nhận trên web hiện được biểu thị dưới dạng "phiên". Lớp CAF GCKSessionManager
sẽ xử lý vòng đời của phiên và tự động bắt đầu và dừng các phiên để phản hồi cử chỉ của người dùng: một phiên bắt đầu khi người dùng chọn một Thiết bị truyền trong hộp thoại Truyền và kết thúc khi người dùng nhấn vào nút "Dừng truyền" trong hộp thoại Truyền hoặc khi chính ứng dụng người gửi chấm dứt. Ứng dụng của người gửi có thể được thông báo về các sự kiện trong vòng đời của phiên bằng cách đăng ký GCKSessionManagerListener
với GCKSessionManager
.
Giao thức GCKSessionManagerListener
xác định các phương thức gọi lại cho tất cả sự kiện trong vòng đời của phiên hoạt động.
Lớp
GCKCastSession
biểu thị một phiên bằng Thiết bị truyền. Lớp này có các phương thức để kiểm soát âm lượng thiết bị và tắt tiếng trạng thái, điều này đã được thực hiện trước đó trong phiên bản 2 bằng các phương thức trên GCKDeviceManager
.
Trong phiên bản 2, giao thức GCKDeviceManagerDelegate
đã cung cấp thông báo về các thay đổi đối với trạng thái của thiết bị, bao gồm cả âm lượng, trạng thái tắt tiếng, trạng thái chờ, v.v.
Trong CAF, thông báo thay đổi âm lượng/tắt tiếng được phân phối qua phương thức gọi lại trong giao thức GCKSessionManagerListener
; các trình nghe này được đăng ký với GCKSessionManager
.
Tất cả các thông báo trạng thái thiết bị còn lại sẽ được gửi qua giao thức GCKCastDeviceStatusListener
; các trình nghe này được đăng ký với GCKCastSession
.
Logic kết nối lại
Giống như phiên bản 2, CAF cố gắng thiết lập lại các kết nối mạng bị mất do mất tín hiệu Wi-Fi tạm thời hoặc lỗi mạng khác. Việc này hiện được thực hiện ở cấp phiên hoạt động; một phiên hoạt động có thể chuyển sang trạng thái "bị tạm ngưng" khi mất kết nối và sẽ chuyển về trạng thái "đã kết nối" khi kết nối được khôi phục. Khung này đảm nhận việc kết nối lại với ứng dụng Bộ thu dữ liệu web và kết nối lại bất kỳ kênh Truyền nào trong quá trình này.
Ngoài ra, CAF cũng thêm tính năng tiếp tục phiên tự động. Nếu ứng dụng của người gửi được gửi ở chế độ nền hoặc bị chấm dứt (bằng cách vuốt ra hoặc do sự cố) trong khi phiên Truyền đang diễn ra, thì khung sẽ cố gắng tiếp tục phiên đó khi ứng dụng của người gửi quay lại nền trước hoặc được chạy lại; việc này sẽ được GCKSessionManager
tự động xử lý, sẽ thực hiện lệnh gọi lại thích hợp trên mọi bản sao
GCKSessionManagerListener
đã đăng ký.
Đăng ký kênh tuỳ chỉnh
Trong phiên bản 2, các kênh tuỳ chỉnh (được triển khai bằng lớp con GCKCastChannel
hoặc GCKGenericChannel
và được uỷ quyền) đã được đăng ký với GCKDeviceManager
.
Trong CAF, các kênh tuỳ chỉnh sẽ được đăng ký với phiên bản
GCKCastSession
. Bạn có thể đăng ký trong phương thức gọi lại
GCKSessionManagerListener
-[sessionManager:didStartCastSession:]
. Đối với các ứng dụng đa phương tiện, bạn không cần
đăng ký
GCKMediaControlChannel
một cách rõ ràng;
hãy xem phần sau để biết thêm thông tin chi tiết.
Điều khiển phương tiện
Lớp v2 GCKMediaControlChannel
không được dùng nữa và bạn không nên sử dụng lớp này. Trong CAF, API này được thay thế bằng lớp
GCKRemoteMediaClient
mới. Lớp này cung cấp chức năng tương đương trong một API thuận tiện hơn.
Bạn không cần phải khởi tạo hoặc đăng ký đối tượng này một cách rõ ràng; khung sẽ tự động khởi tạo đối tượng và đăng ký kênh nội dung đa phương tiện cơ bản tại thời điểm bắt đầu phiên nếu ứng dụng Bộ thu web đang được kết nối để hỗ trợ vùng chứa tên phương tiện.
Bạn có thể truy cập vào GCKRemoteMediaClient
bằng thuộc tính -[remoteMediaClient]
của đối tượng GCKCastSession
.
Trong phiên bản 2, tất cả các yêu cầu nội dung phương tiện đưa ra trên GCKMediaControlChannel
sẽ trả về mã yêu cầu dạng số, và các phương thức trên GCKMediaControlChannelDelegate
sẽ cung cấp mã nhận dạng này khi gửi thông báo về việc hoàn tất hoặc lỗi yêu cầu.
Trong CAF, tất cả yêu cầu nội dung đa phương tiện đưa ra trên GCKRemoteMediaClient
sẽ trả về đối tượng GCKRequest
; đối tượng này có một giao thức GCKRequestDelegate
liên kết có thể được dùng để theo dõi tiến trình và kết quả cuối cùng của yêu cầu.
Phiên bản 2 GCKMediaControlChannel
sẽ gửi thông báo về các thay đổi trong trạng thái trình phát nội dung đa phương tiện trên Bộ thu web thông qua GCKMediaControlChannelDelegate
.
Trong CAF, GCKRemoteMediaClient
cung cấp các lệnh gọi lại tương đương thông qua giao thức GCKRemoteMediaClientListener
. Bạn có thể đăng ký số lượng trình nghe bằng GCKRemoteMediaClient
, cho phép nhiều thành phần người gửi chia sẻ một bản sao của GCKRemoteMediaClient
được liên kết với phiên hoạt động đó.
Trong phiên bản 2, ứng dụng gửi phải chịu gánh nặng của việc giữ cho giao diện người dùng đồng bộ hoá với trạng thái trình phát nội dung đa phương tiện trên Bộ thu web. Trong CAF, lớpGCKUIMediaController
thực hiện hầu hết trách nhiệm này; hãy xem tài liệu hướng dẫn về lớp học lập trình để biết ví dụ về cách sử dụng thành phần này.
Lớp phủ giới thiệu
Phiên bản 2 không cung cấp giao diện người dùng lớp phủ giới thiệu.
CAF thêm lớp
GCKCastContext
bằng một phương thức
-[presentCastInstructionsViewControllerOnce]
mà ứng dụng của người gửi có thể sử dụng để làm nổi bật nút Truyền khi nút này hiển thị
cho người dùng lần đầu tiên.
Bộ điều khiển nhỏ
Trong phiên bản 2, bạn cần triển khai một bộ điều khiển nhỏ từ đầu trong ứng dụng của người gửi.
Trong CAF, khung này cung cấp một thanh điều khiển, GCKUIMiniMediaControlsViewController
, mà bạn có thể thêm vào các cảnh mà bạn muốn hiển thị các nút điều khiển cố định. Có hai cách để thêm bộ điều khiển nhỏ vào ứng dụng của người gửi:
Hãy để khung Truyền quản lý bố cục của bộ điều khiển nhỏ bằng cách gói bộ điều khiển chế độ xem hiện có với
GCKUICastContainerViewController
và thêmGCKUIMiniMediaControlsViewController
ở cuối chế độ xem.Thêm trực tiếp bộ điều khiển nhỏ vào bộ điều khiển chế độ xem hiện có bằng cách sử dụng
-[createMiniMediaControlsViewController]
để tạo một phiên bảnGCKUIMiniMediaControlsViewController
và sau đó thêm vào bộ điều khiển chế độ xem vùng chứa làm chế độ xem phụ.
Mở rộng bộ điều khiển
Trong phiên bản 2, bạn cần triển khai một bộ điều khiển mở rộng từ đầu trong ứng dụng của người gửi.
CAF thêm GCKUIMediaController
mà bạn có thể sử dụng để triển khai bộ điều khiển mở rộng dễ dàng hơn.
CAF thêm một tiện ích tay điều khiển mở rộng được tạo sẵn GCKUIExpandedMediaControlsViewController
mà bạn có thể chỉ cần thêm vào ứng dụng của mình. Bạn không cần triển khai tay điều khiển mở rộng tuỳ chỉnh bằng GCKUIMediaController
nữa.
Ghi nhật ký gỡ lỗi
Các lớp GCKLogger
và GCKLoggerDelegate
từ phiên bản 2 được chuyển vào CAF, với một số thay đổi và cải tiến.
Chúng tôi đã ngừng sử dụng phương thức GCKLoggerDelegate
-[logFromFunction:message:]
và thay bằng -[logMessage:fromFunction:]
.
Hiện tại, bạn có thể lọc thông điệp nhật ký theo khung bằng cách tạo một bản sao
GCKLoggerFilter
phù hợp và chỉ định bản sao đó bằng cách đặt
thuộc tính -[filter]
của singleton GCKLogger
.
Ứng dụng mẫu
Bạn nên xem các lớp học lập trình và ứng dụng mẫu đã viết cho CAF.