Quy trình sau đây cho phép bạn chuyển đổi ứng dụng dành cho người gửi iOS từ Cast SDK v2 sang CAF Sender, được dựa trên GCKCastContext singleton.
Giới thiệu
- Trình gửi CAF vẫn được phân phối trên Trang web dành cho nhà phát triển Google Cast và CocoaPods, chẳng hạn như phiên bản 2.
- Các lớp học 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.
- CAF Sender cung cấp các tiện ích tuân thủ các yêu cầu về Cast UX; v2 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ế CAF Sender nhất quán với thiết kế của SDK Truyền cho Android.
- CAF Sender hỗ trợ Bitcode, chẳng hạn như v2.
- Phụ đề chi tiết trong CAF tương tự như phiên bản 2.
Phần phụ thuộc
CAF Sender hỗ trợ iOS phiên bản 8 trở lên.
Khởi chạy
Trong CAF, bạn cần có bước khởi chạy rõ ràng cho khung Truyền. Chiến dịch này
bao gồm việc khởi chạy
GCKCastContext
singleton, sử dụng
GCKCastOptions
để chỉ định ID ứng dụng Trình nhận web và bất kỳ
. Việc này thường được thực hiện trong AppDelegate
Phương thức -[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á được bắt đầu và dừng tự động bằng
khi ứng dụng chạy trên nền trước và chuyển sang chạy ở chế độ nền,
. Các lớp GCKDeviceScanner
và GCKFilterCriteria
trong phiên bản 2 là
không được dùng nữa và không nên sử dụng.
Nút Truyền và hộp thoại Truyền
Trong CAF, khung và nút Truyền do khung cung cấp. Diễn viên nút có thể được tạo thực thể và thêm 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 ai đó nhấn vào nút này, hộp thoại Truyền sẽ tự động hiển thị.
Điều khiển thiết bị
Trong CAF, việc kiểm soát thiết bị phần lớn do khung xử lý. Người gửi
ứng dụng 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 Web receiver. Lớp v2
GCKDeviceManager
không được dùng nữa và nên
không được sử dụng. Tương tác giữa người gửi và Web receiver hiện được biểu thị dưới dạng
"phiên". CAF
GCKSessionManager
lớp này xử lý vòng đời phiên và
tự động bắt đầu và dừng phiên theo cử chỉ của người dùng: một phiên
được bắt đầu khi người dùng chọn 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 "Stop Casting" (Dừng truyền) trong hộp thoại Truyền hoặc khi
ứng dụng của người gửi sẽ tự chấm dứt. Có thể thông báo cho ứng dụng của người gửi về phiên
các sự kiện trong vòng đời bằng cách đăng ký
GCKSessionManagerListener
với
GCKSessionManager
.
Chiến lược phát hành đĩa đơn
GCKSessionManagerListener
giao thức xác định phương thức gọi lại cho tất cả các sự kiện trong vòng đời phiên.
Chiến lược phát hành đĩa đơn
GCKCastSession
lớp biểu thị một phiên có Thiết bị truyền. Lớp
có các phương thức để kiểm soát âm lượng của thiết bị và trạng thái tắt tiếng, đó là
trước đó được thực hiện trong phiên bản 2 bằng cách sử dụng các phương thức trên
GCKDeviceManager
.
Trong v2,
GCKDeviceManagerDelegate
thông báo về thay đổi do giao thức cung cấp
sang trạng thái thiết bị, bao gồm âm lượng, trạng thái tắt tiếng, trạng thái chờ, v.v.
Trong CAF, thông báo về việc thay đổi trạng thái âm lượng/tắt tiếng được gửi qua lệnh gọi lại
trong phần
GCKSessionManagerListener
giao thức; Những trình nghe này được đăng ký bằng
GCKSessionManager
.
Tất cả thông báo về trạng thái thiết bị còn lại
được phân phối qua
GCKCastDeviceStatusListener
giao thức; Những trình nghe này được đăng ký bằng
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 đều bị mất do mất tín hiệu Wi-Fi tạm thời hoặc các lỗi mạng khác. Lúc này là được thực hiện ở cấp phiên hoạt động; một phiên có thể chuyển sang trạng thái "bị tạm ngưng" cho biết khi mất kết nối và sẽ chuyển về trạng thái "đã kết nối" nêu rõ khi nào 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 Web receiver và kết nối lại mọi kênh truyền trong quá trình này.
Ngoài ra, CAF cũng thêm tính năng tự động tiếp tục phiên. Nếu người gửi
ứng dụng được gửi đ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 một phiên Truyền đang diễn ra, khung này 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 được xử lý tự động bằng
GCKSessionManager
!
Thao tác này sẽ phát hành lệnh gọi lại thích hợp trên bất kỳ lệnh gọi lại nào đã đăng ký
GCKSessionManagerListener
thực thể.
Đăng ký kênh tuỳ chỉnh
Trong phiên bản 2, kênh tuỳ chỉnh (được triển khai bằng cách
GCKCastChannel
lớp con hoặc một
GCKGenericChannel
và người được uỷ quyền) đã được đăng ký với
GCKDeviceManager
.
Trong CAF, kênh tuỳ chỉnh được đăng ký bằng
GCKCastSession
thực thể. Bạn có thể đăng ký trong
GCKSessionManagerListener
-[sessionManager:didStartCastSession:]
phương thức gọi lại. Đối với các ứng dụng đa phương tiện, bạn không cần phải thể hiện rõ ràng
đăng ký
GCKMediaControlChannel
;
hãy xem phần sau để biết thêm chi tiết.
Điều khiển phương tiện
Lớp v2
GCKMediaControlChannel
không được dùng nữa và không nên sử dụng. Trong CAF, nó được thay thế bằng
GCKRemoteMediaClient
, 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; thời gian
khung này sẽ tự động tạo thực thể cho đối tượng và đăng ký cơ sở
kênh đa phương tiện tại thời điểm bắt đầu phiên nếu ứng dụng Trình nhận web đang được kết nối
để hỗ trợ không gian tên đa phương tiện.
Chiến lược phát hành đĩa đơn
GCKRemoteMediaClient
có thể truy cập được bằng
-[remoteMediaClient]
thuộc tính của
GCKCastSession
.
Trong phiên bản 2, tất cả các yêu cầu đa phương tiện được đưa ra trên
GCKMediaControlChannel
sẽ trả về mã yêu cầu dạng số và các phương thức
GCKMediaControlChannelDelegate
sẽ cung cấp mã này khi gửi thông báo về việc hoàn thành yêu cầu hoặc
lỗi.
Trong CAF, tất cả yêu cầu đa phương tiện được đưa ra trên
GCKRemoteMediaClient
sẽ trả về a
GCKRequest
object; đối tượng này có liên kết
GCKRequestDelegate
giao thức
để 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ề những thay đổi về trạng thái trình phát nội dung đa phương tiện trên Bộ thu trên web
qua
GCKMediaControlChannelDelegate
.
Trong CAF,
GCKRemoteMediaClient
cung cấp lệnh gọi lại tương đương thông qua
GCKRemoteMediaClientListener
giao thức. Bạn có thể đăng ký số lượng trình nghe bất kỳ bằng
GCKRemoteMediaClient
, cho phép nhiều thành phần người gửi chia sẻ
một thực thể duy nhất của GCKRemoteMediaClient
được liên kết với phiên hoạt động đó.
Trong phiên bản 2, ứng dụng của người gửi phải đảm nhận gánh nặng trong việc giữ chân người dùng
giao diện đồng bộ hoá với trạng thái trình phát nội dung đa phương tiện trên Web receiver. Trong CAF, lớp
GCKUIMediaController
đảm nhận phần lớn trách nhiệm này; xem
hướng dẫn của lớp học lập trình
để biết các ví dụ về cách sử dụng thành phần này.
Lớp phủ giới thiệu
V2 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
có phương thức
-[presentCastInstructionsViewControllerOnce]
mà ứng dụng 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ị lần đầu tiên
cho người dùng.
Tay điều khiển mini
Trong phiên bản 2, bạn cần triển khai một bộ điều khiển mini 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
!
bạn có thể thêm vào các cảnh mà bạn muốn hiển thị
. Có hai cách để thêm bộ điều khiển mini vào ứng dụng của người gửi:
Cho phép khung Truyền quản lý bố cục của trình điều khiển nhỏ bằng cách gói bộ điều khiển chế độ xem hiện tại của bạn bằng
GCKUICastContainerViewController
và thêm mộtGCKUIMiniMediaControlsViewController
ở 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ộtGCKUIMiniMediaControlsViewController
rồi thêm thực thể đó vào trình kiểm soát chế độ xem vùng chứa dưới dạng 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.
Số lượt thêm CAF
GCKUIMediaController
!
mà bạn có thể 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 bộ điều khiển mở rộng được tạo sẵn
GCKUIExpandedMediaControlsViewController
mà bạn chỉ cần thêm vào ứng dụng của mình. Bạn không cần phải triển khai thẻ mở rộng tuỳ chỉnh
bộ điều khiển bằng GCKUIMediaController
.
Ghi nhật ký gỡ lỗi
Chiến lược phát hành đĩa đơn
GCKLogger
và
GCKLoggerDelegate
các lớp từ phiên bản 2 được chuyển sang CAF, với một số thay đổi và tính năng nâng cao.
Chiến lược phát hành đĩa đơn
GCKLoggerDelegate
Phương thức -[logFromFunction:message:]
có
không được dùng nữa mà thay vào đó là
-[logMessage:fromFunction:]
.
Giờ đây, bạn có thể lọc thông điệp nhật ký khung bằng cách tạo một thông điệp nhật ký thích hợp
GCKLoggerFilter
và chỉ định thực thể đó bằng cách đặt
thuộc tính -[filter]
của
GCKLogger
singleton.
Ứng dụng mẫu
Bạn nên tham khảo lớp học lập trình và ứng dụng mẫu được viết cho CAF.