Prosedur berikut memungkinkan Anda mengonversi aplikasi pengirim iOS dari Cast SDK v2 ke Pengirim CAF, yang didasarkan pada GCKCastContext singleton.
Pengantar
- Pengirim CAF masih didistribusikan di Situs developer Google Cast dan CocoaPods, seperti v2.
- Telah ditambahkan kelas baru yang bertanggung jawab untuk mematuhi daftar periksa desain Google Cast.
- Pengirim CAF menyediakan widget yang sesuai dengan persyaratan UX Cast; v2 tidak menyediakan komponen UI apa pun dan mengharuskan Anda menerapkan widget-widget ini.
- Desain Pengirim CAF konsisten dengan desain Cast Android SDK.
- CAF Sender mendukung Bitcode, seperti v2.
- Pemberian teks tertutup pada CAF mirip dengan v2.
Dependensi
CAF Sender mendukung iOS versi 8 dan yang lebih baru.
Inisialisasi
Dalam CAF, langkah inisialisasi eksplisit diperlukan untuk framework Cast. Ini
melibatkan inisialisasi
GCKCastContext
singleton, menggunakan model
GCKCastOptions
untuk menentukan ID aplikasi Penerima Web dan ID
lainnya. Hal ini biasanya dilakukan di AppDelegate
Metode -[application:didFinishLaunchingWithOptions:]
:
GCKCastOptions *options = [[GCKCastOptions alloc]
initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
Langkah ini tidak diperlukan di v2.
Penemuan perangkat
Dalam CAF, proses penemuan dimulai dan dihentikan secara otomatis oleh
saat aplikasi berada di latar depan dan berpindah ke latar belakang,
secara berurutan. Class GCKDeviceScanner
dan GCKFilterCriteria
dari v2 adalah
tidak digunakan lagi dan
tidak boleh digunakan.
Tombol Cast dan dialog Cast
Di CAF, dialog dan tombol Cast disediakan oleh framework. Pemeran 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.
Saat seseorang mengetuk tombol, dialog Transmisi akan otomatis ditampilkan.
Kontrol perangkat
Dalam CAF, kontrol perangkat sebagian besar ditangani oleh framework. Pengirim
aplikasi tidak perlu menangani koneksi ke perangkat dan meluncurkan
Aplikasi Penerima Web. Class v2
GCKDeviceManager
tidak digunakan lagi dan seharusnya
tidak digunakan. Interaksi antara pengirim dan Penerima Web sekarang direpresentasikan sebagai
"sesi". CAF
GCKSessionManager
menangani siklus proses sesi dan
memulai dan menghentikan sesi secara otomatis sebagai respons terhadap {i>gesture <i}pengguna:
dimulai saat pengguna memilih perangkat Transmisi dalam dialog Cast dan diakhiri
saat pengguna mengetuk tombol "Hentikan Transmisi" di dialog Cast atau saat
aplikasi pengirim itu sendiri berhenti. Aplikasi pengirim dapat diberi tahu tentang sesi
peristiwa siklus proses dengan mendaftarkan
GCKSessionManagerListener
dengan
GCKSessionManager
.
Tujuan
GCKSessionManagerListener
menetapkan metode callback untuk semua peristiwa siklus proses sesi.
Tujuan
GCKCastSession
mewakili sesi dengan perangkat Cast. Kelas
memiliki metode untuk mengendalikan volume
perangkat dan keadaan bisu, yang
sebelumnya dilakukan di v2
menggunakan metode pada
GCKDeviceManager
Pada v2, atribut
GCKDeviceManagerDelegate
protokol yang disediakan notifikasi perubahan
ke status perangkat, termasuk volume, status bisukan, status standby, dan sebagainya.
Dalam CAF, notifikasi perubahan status volume/bisukan dikirimkan melalui callback
metode dalam
GCKSessionManagerListener
protokol; pemroses ini terdaftar dengan
GCKSessionManager
.
Semua notifikasi status perangkat lainnya
dikirimkan melalui
GCKCastDeviceStatusListener
protokol; pemroses ini terdaftar dengan
GCKCastSession
.
Logika menghubungkan kembali
Seperti halnya v2, CAF mencoba menghubungkan kembali koneksi jaringan yang hilang karena kehilangan sinyal WiFi sementara atau kesalahan jaringan lainnya. Hal ini sekarang dilakukan di tingkat sesi; sesi dapat masuk ke status "suspended" menyatakan kapan koneksi terputus, dan akan beralih kembali ke "terhubung" menyatakan kapan konektivitas pulih. Kerangka kerja ini akan membantu menghubungkan kembali ke Aplikasi Penerima Web dan menghubungkan kembali saluran Cast sebagai bagian dari proses ini.
Selain itu, CAF juga menambahkan melanjutkan sesi otomatis. Jika pengirim
aplikasi dikirim ke latar belakang atau dihentikan (dengan menggeser
karena terjadi error) saat sesi Cast sedang berlangsung, framework akan
mencoba melanjutkan sesi tersebut ketika aplikasi pengirim kembali ke
di latar depan atau diluncurkan kembali; ini ditangani secara otomatis oleh
GCKSessionManager
,
yang akan mengeluarkan callback yang sesuai pada tiap
GCKSessionManagerListener
instance Compute Engine.
Pendaftaran saluran khusus
Di v2, saluran khusus (diimplementasikan menggunakan
GCKCastChannel
atau subclass
GCKGenericChannel
dan delegasi) terdaftar di
GCKDeviceManager
.
Di CAF, saluran khusus didaftarkan dengan
GCKCastSession
di instance Compute Engine. Pendaftaran dapat dilakukan di
GCKSessionManagerListener
-[sessionManager:didStartCastSession:]
. Untuk aplikasi media, tidak perlu lagi
daftarkan
GCKMediaControlChannel
;
lihat bagian berikut untuk detail selengkapnya.
Kontrol media
Class v2
GCKMediaControlChannel
tidak digunakan lagi dan
tidak boleh digunakan. Dalam CAF, model ini digantikan oleh
GCKRemoteMediaClient
, yang menyediakan fungsi setara dalam API yang lebih praktis.
Tidak perlu menginisialisasi atau mendaftarkan objek ini secara eksplisit; tindakan
akan secara otomatis membuat instance objek dan mendaftarkan
saluran media pada waktu mulai sesi jika aplikasi Penerima Web sedang tersambung
untuk mendukung namespace media.
Tujuan
GCKRemoteMediaClient
dapat diakses dengan
-[remoteMediaClient]
properti dari
GCKCastSession
.
Di v2, semua permintaan media yang dikeluarkan pada
GCKMediaControlChannel
akan mengembalikan ID permintaan numerik, dan metode pada
GCKMediaControlChannelDelegate
akan memberikan ID ini saat mengirimkan notifikasi tentang penyelesaian permintaan atau
gagal.
Di CAF, semua permintaan media yang diajukan pada
GCKRemoteMediaClient
akan mengembalikan
GCKRequest
object; objek ini memiliki elemen
GCKRequestDelegate
protokol
yang dapat digunakan untuk melacak kemajuan
dan hasil akhir permintaan.
V2
GCKMediaControlChannel
;
akan mengirim pemberitahuan tentang perubahan status pemutar media di Web Receiver
melalui
GCKMediaControlChannelDelegate
.
Pada CAF, atribut
GCKRemoteMediaClient
menyediakan callback yang setara melalui
GCKRemoteMediaClientListener
dan berperforma tinggi
karena merupakan protokol biner. Sejumlah pemroses bisa didaftarkan dengan
GCKRemoteMediaClient
, yang memungkinkan beberapa komponen pengirim berbagi
satu instance GCKRemoteMediaClient
yang terkait dengan sesi.
Pada v2, aplikasi pengirim harus memikul beban menjaga pengguna
sinkron dengan status pemutar media pada Web Receiver. Di CAF, class
GCKUIMediaController
mengambil sebagian besar
tanggung jawab ini; lihat
tutorial codelab
dokumentasi untuk 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 menyoroti tombol Cast saat pertama kali ditampilkan
kepada pengguna.
Pengontrol mini
Di v2, Anda perlu mengimplementasikan pengontrol mini dari awal di aplikasi pengirim.
Dalam CAF, kerangka kerja
menyediakan bilah kontrol,
GCKUIMiniMediaControlsViewController
,
yang dapat Anda tambahkan ke adegan di mana Anda ingin menampilkan
kontrol. Ada dua cara untuk menambahkan pengontrol mini ke aplikasi pengirim:
Biarkan framework Cast mengelola tata letak pengontrol mini dengan melakukan wrapping pengontrol tampilan yang ada dengan
GCKUICastContainerViewController
dan menambahkanGCKUIMiniMediaControlsViewController
di bagian bawah tampilannya.Tambahkan pengontrol mini langsung ke pengontrol tampilan yang ada menggunakan
-[createMiniMediaControlsViewController]
untuk membuatGCKUIMiniMediaControlsViewController
lalu menambahkannya ke pengontrol tampilan container sebagai subtampilan.
Pengontrol yang diperluas
Di v2, Anda perlu mengimplementasikan pengontrol yang diperluas dari awal di aplikasi pengirim.
CAF menambahkan
GCKUIMediaController
,
yang bisa digunakan untuk lebih
mudah mengimplementasikan pengontrol yang diperluas.
CAF menambahkan widget pengontrol bawaan yang diperluas
GCKUIExpandedMediaControlsViewController
yang bisa Anda tambahkan ke aplikasi. Anda tidak perlu lagi menerapkan perluasan
pengontrol menggunakan GCKUIMediaController
.
Logging debug
Tujuan
GCKLogger
dan
GCKLoggerDelegate
dari v2 lalu dimigrasikan ke CAF, dengan beberapa perubahan dan peningkatan.
Tujuan
GCKLoggerDelegate
Metode -[logFromFunction:message:]
memiliki
tidak digunakan lagi dan digantikan oleh
-[logMessage:fromFunction:]
.
Pesan log framework sekarang dapat difilter dengan menyusun pesan log
GCKLoggerFilter
dan menetapkannya dengan menyetel
properti -[filter]
dari
singleton GCKLogger
.
Aplikasi contoh
Sebaiknya lihat codelab dan aplikasi contoh yang ditulis untuk CAF.