Prosedur berikut memungkinkan Anda mengonversi aplikasi pengirim iOS dari Cast SDK v2 menjadi Pengirim CAF, yang didasarkan pada singleton tunggal GCKCastContext.
Pengantar
- Pengirim CAF masih didistribusikan di situs developer Google Cast dan CocoaPods, seperti v2.
- Kami telah menambahkan class baru yang bertanggung jawab untuk mematuhi checklist desain Google Cast.
- Pengirim CAF menyediakan widget yang mematuhi persyaratan UX Cast; v2 tidak menyediakan komponen UI dan mengharuskan Anda menerapkan widget ini.
- Desain Pengirim CAF konsisten dengan desain Cast Android SDK.
- Pengirim CAF mendukung Bitcode, seperti v2.
- Pemberian teks tertutup di CAF mirip dengan v2.
Dependensi
Pengirim CAF mendukung iOS versi 8 dan yang lebih baru.
Inisialisasi
Di CAF, langkah inisialisasi eksplisit diperlukan untuk framework Cast. Hal ini
memerlukan inisialisasi
GCKCastContext
singleton, menggunakan
GCKCastOptions
yang sesuai untuk menentukan ID aplikasi Web Receiver dan opsi global
lainnya. Hal ini biasanya dilakukan dalam metode AppDelegate
-[application:didFinishLaunchingWithOptions:]
:
GCKCastOptions *options = [[GCKCastOptions alloc]
initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
Langkah ini tidak diperlukan di v2.
Penemuan perangkat
Di CAF, proses penemuan dimulai dan dihentikan secara otomatis oleh
framework saat aplikasi hadir di latar depan dan
berpindah ke latar belakang. Class GCKDeviceScanner
dan GCKFilterCriteria
dari v2
tidak digunakan lagi dan tidak boleh digunakan.
Tombol Cast dan dialog Cast
Di CAF, tombol dan dialog Cast disediakan oleh framework. Tombol Cast dapat dibuat instance-nya dan ditambahkan ke menu navigasi sebagai berikut:
GCKUICastButton *castButton =
[[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
[[UIBarButtonItem alloc] initWithCustomView:castButton];
Tombol Cast juga dapat ditambahkan ke storyboard.
Ketika seseorang mengetuk tombol tersebut, dialog Cast akan muncul secara otomatis.
Kontrol perangkat
Di CAF, kontrol perangkat sebagian besar ditangani oleh framework. Aplikasi
pengirim tidak perlu menangani koneksi ke perangkat dan meluncurkan
aplikasi Penerima Web. Class v2
GCKDeviceManager
tidak digunakan lagi dan tidak
boleh digunakan. Interaksi antara pengirim dan Penerima Web kini direpresentasikan sebagai
"sesi". Class
GCKSessionManager
CAF menangani siklus proses sesi serta
otomatis memulai dan menghentikan sesi sebagai respons terhadap gestur pengguna: sesi
dimulai saat pengguna memilih perangkat Cast dalam dialog Cast dan diakhiri
saat pengguna mengetuk tombol "Berhenti Mentransmisi" di dialog Cast atau saat
aplikasi pengirim berhenti. Aplikasi pengirim dapat diberi tahu tentang peristiwa siklus proses sesi dengan mendaftarkan GCKSessionManagerListener
menggunakan GCKSessionManager
.
Protokol GCKSessionManagerListener
menentukan metode callback untuk semua peristiwa siklus proses sesi.
Class
GCKCastSession
mewakili sesi dengan perangkat Cast. Class ini
memiliki metode untuk mengontrol volume perangkat dan status bisukan, yang
sebelumnya dilakukan di v2 menggunakan metode di
GCKDeviceManager
.
Dalam v2, protokol
GCKDeviceManagerDelegate
menyediakan notifikasi perubahan
pada status perangkat, termasuk volume, status nonaktif, status standby, dan sebagainya.
Di CAF, notifikasi perubahan status volume/bisukan dikirimkan melalui metode
callback dalam
protokol
GCKSessionManagerListener
; pemroses ini terdaftar di
GCKSessionManager
.
Semua notifikasi status perangkat yang tersisa
dikirim melalui protokol
GCKCastDeviceStatusListener
; pemroses ini terdaftar di
GCKCastSession
.
Logika penghubung ulang
Seperti pada v2, CAF mencoba menghubungkan kembali koneksi jaringan yang hilang karena kehilangan sinyal Wi-Fi sementara atau error jaringan lainnya. Tindakan ini kini dilakukan pada tingkat sesi. Sesi dapat memasuki status "ditangguhkan" saat koneksi terputus, dan akan bertransisi kembali ke status "terhubung" saat konektivitas dipulihkan. Framework ini akan menghubungkan kembali ke aplikasi Penerima Web dan menghubungkan kembali saluran Cast sebagai bagian dari proses ini.
Selain itu, CAF juga menambahkan pelanjutan sesi otomatis. Jika aplikasi pengirim
dikirim ke latar belakang atau dihentikan (dengan menggeser atau
karena error) saat sesi Cast sedang berlangsung, framework akan
mencoba untuk melanjutkan sesi tersebut saat aplikasi pengirim kembali ke
latar depan atau diluncurkan kembali; hal ini akan ditangani secara otomatis oleh
GCKSessionManager
,
yang akan mengeluarkan callback yang sesuai pada
instance
GCKSessionManagerListener
yang terdaftar.
Pendaftaran saluran khusus
Di v2, saluran kustom (diterapkan menggunakan
subclass GCKCastChannel
atau
GCKGenericChannel
dan delegasi) didaftarkan dengan
GCKDeviceManager
.
Di CAF, saluran kustom terdaftar dengan instance GCKCastSession
. Pendaftaran dapat dilakukan dalam metode callback
GCKSessionManagerListener
-[sessionManager:didStartCastSession:]
. Untuk aplikasi media, Anda tidak perlu lagi mendaftarkan
GCKMediaControlChannel
secara eksplisit;
lihat bagian berikut untuk mengetahui detail selengkapnya.
Kontrol media
Class v2
GCKMediaControlChannel
tidak digunakan lagi dan tidak boleh digunakan. Di CAF, class ini digantikan oleh class
GCKRemoteMediaClient
baru, yang menyediakan fungsi yang setara dalam API yang lebih nyaman.
Tidak perlu melakukan inisialisasi atau mendaftarkan objek ini secara eksplisit; framework akan otomatis membuat instance objek dan mendaftarkan saluran media yang mendasarinya pada waktu mulai sesi jika aplikasi Web Receiver terhubung untuk mendukung namespace media.
GCKRemoteMediaClient
dapat diakses dengan
properti -[remoteMediaClient]
objek
GCKCastSession
.
Di v2, semua permintaan media yang dikeluarkan di
GCKMediaControlChannel
akan menampilkan ID permintaan numerik, dan metode di
GCKMediaControlChannelDelegate
akan memberikan ID ini saat mengirim notifikasi tentang penyelesaian atau
kegagalan permintaan.
Di CAF, semua permintaan media yang dikeluarkan di
GCKRemoteMediaClient
akan menampilkan objek
GCKRequest
; objek ini memiliki protokol
GCKRequestDelegate
terkait
yang dapat digunakan untuk melacak progres dan hasil permintaan.
GCKMediaControlChannel
v2;
akan mengirimkan notifikasi tentang perubahan status pemutar media di Penerima Web
melalui
GCKMediaControlChannelDelegate
.
Di CAF, GCKRemoteMediaClient
menyediakan callback yang setara melalui
protokol
GCKRemoteMediaClientListener
. Jumlah pemroses apa pun dapat didaftarkan dengan
GCKRemoteMediaClient
, yang memungkinkan beberapa komponen pengirim berbagi
satu instance GCKRemoteMediaClient
yang terkait dengan sesi tersebut.
Di v2, aplikasi pengirim harus menanggung beban menjaga antarmuka
pengguna tetap sinkron dengan status pemutar media di Web Receiver. Di CAF, class
GCKUIMediaController
mengambil sebagian besar tanggung jawab ini; lihat
dokumentasi tutorial codelab
untuk mengetahui contoh cara menggunakan komponen ini.
Overlay perkenalan
V2 tidak menyediakan UI overlay pengantar.
CAF menambahkan class
GCKCastContext
dengan metode
-[presentCastInstructionsViewControllerOnce]
yang dapat digunakan aplikasi pengirim untuk menandai tombol Cast saat pertama kali ditampilkan
kepada pengguna.
Pengontrol mini
Pada v2, Anda perlu menerapkan pengontrol mini dari awal di aplikasi pengirim.
Di CAF, framework menyediakan panel kontrol,
GCKUIMiniMediaControlsViewController
,
yang dapat ditambahkan ke scene tempat Anda ingin menampilkan kontrol
persisten. Ada dua cara untuk menambahkan pengontrol mini ke aplikasi pengirim:
Biarkan framework Cast mengelola tata letak pengontrol mini dengan menggabungkan pengontrol tampilan yang ada dengan
GCKUICastContainerViewController
dan menambahkanGCKUIMiniMediaControlsViewController
di bagian bawah tampilannya.Tambahkan pengontrol mini langsung ke pengontrol tampilan yang ada dengan menggunakan
-[createMiniMediaControlsViewController]
untuk membuat instanceGCKUIMiniMediaControlsViewController
, lalu menambahkannya ke pengontrol tampilan container sebagai subview.
Pengontrol yang diperluas
Pada v2, Anda perlu menerapkan pengontrol yang diperluas dari awal di aplikasi pengirim.
CAF menambahkan
GCKUIMediaController
,
yang dapat Anda gunakan untuk menerapkan pengontrol yang diperluas dengan lebih mudah.
CAF menambahkan widget pengontrol diperluas bawaan
GCKUIExpandedMediaControlsViewController
yang dapat Anda tambahkan ke aplikasi. Anda tidak perlu lagi mengimplementasikan pengontrol kustom
diperluas menggunakan GCKUIMediaController
.
Logging debug
Class
GCKLogger
dan
GCKLoggerDelegate
dari v2 disertakan dalam CAF, dengan beberapa perubahan dan peningkatan.
Metode
GCKLoggerDelegate
-[logFromFunction:message:]
tidak
digunakan lagi dan digantikan dengan
-[logMessage:fromFunction:]
.
Pesan log framework kini dapat difilter dengan membuat instance
GCKLoggerFilter
yang sesuai dan menetapkannya dengan menetapkan
properti -[filter]
dari
singleton GCKLogger
.
Aplikasi contoh
Sebaiknya lihat codelab dan aplikasi contoh yang ditulis untuk CAF.