Di chuyển ứng dụng người gửi iOS từ SDK truyền phiên bản 2 sang Khung ứng dụng truyền (CAF)

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 CastCocoaPods, 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 GCKDeviceScannerGCKFilterCriteria 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:

Đã 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 GCKLoggerGCKLoggerDelegate 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ứng dụng mẫu được viết cho CAF.