Izin dan Penemuan iOS

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Mulai dari iOS 14, sistem operasi akan menerapkan pembatasan dan izin baru yang memengaruhi pengalaman pengguna Cast. Hal ini juga akan memengaruhi cara mem-build Cast SDK ke dalam aplikasi Anda. Agar aplikasi dapat mempertahankan fungsi Cast dengan versi iOS terbaru, Anda harus melakukan update untuk menangani perubahan izin ini.

iOS 14

Developer harus mengupdate aplikasi pengirim Cast iOS ke Google Cast SDK v4.6.0 atau yang lebih baru. Versi ini menyediakan dukungan untuk iOS 14 dan persyaratannya.

Mulai dari iOS 14, aplikasi yang memindai perangkat di jaringan lokal sekarang akan meminta pengguna dengan dialog izin satu kali untuk menemukan dan terhubung ke perangkat jaringan lokal. Platform Cast menggunakan jaringan lokal untuk menemukan dan mengontrol perangkat Cast, sehingga jika pengguna menolak izin, mereka tidak akan dapat melakukan transmisi.

Untuk meningkatkan kualitas pengalaman pengguna, kami membuat beberapa modifikasi UX pada SDK untuk aplikasi yang menggunakan alat pilih perangkat standar. Modifikasi UX ini akan memperjelas kepada pengguna mengapa izin akses jaringan lokal diperlukan, serta cara mengaktifkan transmisi jika akses perangkat jaringan lokal telah dinonaktifkan.

Aplikasi yang dibuat dengan versi SDK SDK yang menggunakan v4.4.8 atau yang lebih lama akan terus berfungsi selama aplikasi tersebut dibuat dengan Xcode 11.7 atau yang lebih lama. Jika Anda mem-build untuk iOS 14 dengan Xcode 12 atau yang lebih baru, sebaiknya update ke Cast SDK v4.6.0 atau yang lebih baru untuk memastikan aplikasi Cast akan terus berfungsi dengan baik.

Cast iOS SDK v4.6.0 atau yang lebih baru dapat didownload dengan CocoaPods dengan mengikuti penyiapan CocoaPods atau secara manual dengan mengikuti penyiapan manual. Rilis ini menyertakan perubahan pada mekanisme penemuan dasar untuk memungkinkan aplikasi yang dibuat dengan Xcode 12 untuk menemukan perangkat Cast di jaringan. Tombol Cast kini akan selalu ditampilkan. Jika tidak ada perangkat yang tersedia saat pengguna mengetuk tombol Cast, dialog akan ditampilkan yang memberikan panduan tentang alasan perangkat mungkin tidak tersedia, termasuk informasi tentang cara mengaktifkan kembali izin akses jaringan lokal.

Mentransmisikan perubahan SDK

Transmisi pertama kali

Saat pengguna pertama kali mencoba melakukan Transmisi, dialog interstisial akses jaringan lokal (LNA) akan muncul yang menjelaskan alasan diperlukannya akses jaringan lokal, diikuti dengan permintaan izin akses jaringan lokal iOS yang disediakan oleh Apple. Model di bawah ini menggambarkan alurnya:

Alur izin akses jaringan lokal

Transmisi tidak tersedia

Dimulai dengan SDK pengirim iOS 4.6.0, tombol Cast selalu muncul saat pengguna terhubung ke Wi-Fi. Saat perangkat Cast tidak tersedia, mengetuk tombol Cast akan menampilkan dialog yang memberikan petunjuk kepada pengguna tentang kemungkinan alasan Cast tidak tersedia, seperti yang ditampilkan pada tiruan di bawah:

Alur dengan Cast tidak tersedia

Mengupdate aplikasi di iOS 14

  1. Menambahkan Cast iOS SDK 4.7.0 ke project

    Jika menggunakan CocoaPods, gunakan pod update untuk menambahkan SDK 4.7.0 ke project Anda.

    Jika tidak, tarik SDK secara manual.

  2. Menambahkan NSBonjourServices ke Info.plist

    Tentukan NSBonjourServices di Info.plist Anda agar penemuan jaringan lokal berhasil di iOS 14.

    Anda harus menambahkan _googlecast._tcp dan _<your-app-id>._googlecast._tcp sebagai layanan agar penemuan perangkat dapat berfungsi dengan baik.

    ID aplikasi adalah ID penerima Anda, yang merupakan ID yang sama yang ditentukan di GCKDiscoveryCriteria.

    Perbarui contoh definisi NSBonjourServices berikut dan ganti "ABCD1234" dengan appID Anda.

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. Menambahkan NSLocalNetworkUsageDescription ke Info.plist

    Sebaiknya Anda menyesuaikan pesan yang ditampilkan di permintaan Jaringan Lokal dengan menambahkan string izin khusus aplikasi di file Info.plist aplikasi Anda untuk NSLocalNetworkUsageDescription, seperti untuk menjelaskan penemuan Cast dan layanan penemuan lainnya, seperti DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} menggunakan jaringan lokal untuk menemukan perangkat yang kompatibel untuk Cast di jaringan
    Wi-Fi Anda.</string>

    Pesan ini akan muncul sebagai bagian dari dialog Akses Jaringan Lokal iOS seperti yang ditampilkan di tiruan.

    Gambar dialog izin Akses Jaringan Lokal Cast
  4. Merilis ulang aplikasi Anda ke Apple App Store

    Sebaiknya Anda juga merilis ulang aplikasi menggunakan 4.7.0 sesegera mungkin.

Penyesuaian

Memulai penemuan perangkat transmisi

Secara default, penemuan perangkat Cast dimulai saat pengguna pertama kali mengetuk tombol Cast (GCKUICastButton). Jika ini adalah pertama kalinya pengguna mencoba menggunakan aplikasi Cast di jaringan lokal setelah mengupgrade ke iOS 14, interstisial LNA baru akan muncul, diikuti dengan dialog izin Akses Jaringan Lokal iOS.

Flag baru tersedia untuk memungkinkan Anda mengontrol kapan penemuan perangkat dimulai dan perilaku elemen tertentu dari UX:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

Nilai default-nya adalah true. Flag ini hanya berlaku jika flag GCKCastOptions::disableDiscoveryAutostart ditetapkan ke false.

Jika ditetapkan ke true, penemuan perangkat Cast akan dimulai saat pengguna mengetuk GCKUICastButton untuk pertama kalinya. Pesan informasi akan ditampilkan kepada pengguna yang memberi tahu mereka alasan diperlukannya izin jaringan lokal. Setelah pesan tersebut, pesan LNA iOS 14 akan ditampilkan. Penemuan perangkat transmisi dimulai setelah pesan dikonfirmasi.

Pada peluncuran Aplikasi berikutnya, GCKUICastButton selalu ditampilkan.

Jika ditetapkan ke false, penemuan perangkat akan dimulai berdasarkan nilai flag GCKCastOptions::disableDiscoveryAutostart.

Pertanyaan umum (FAQ)

Apa yang terjadi jika saya merilis ulang aplikasi pengirim Cast dengan Cast SDK v4.4.8 dan Xcode 12?

Aplikasi Anda mungkin tidak dapat menemukan perangkat Cast di jaringan lokal kecuali Anda telah memperoleh hak multicast jaringan dari Apple. Perlu diketahui bahwa Apple tidak akan memberikan hak multicast hanya untuk tujuan mendukung Cast. Jika berencana untuk mem-build dengan Xcode 12, Anda harus merilis aplikasi dengan Cast 4.6.0.

Jika saya merilis ulang aplikasi dengan Cast SDK baru, apa yang akan digunakan pengguna saya yang menjalankan iOS 13 atau yang lebih lama?

Mereka akan terus melihat pengalaman pengguna yang sama seperti sebelum aplikasi Anda dirilis ulang. Perubahan yang terlihat oleh pengguna dibatasi pada pengguna yang berjalan di iOS 14.

Apa yang perlu saya lakukan untuk mengupdate aplikasi setelah versi baru SDK SDK dirilis?

  • Perbarui Info.plist aplikasi Anda untuk menyertakan deskripsi penggunaan jaringan lokal.
  • Tambahkan NSBonjourServices ke Info.plist aplikasi Anda dan berikan nama layanan Bonjour untuk Cast dan ID aplikasi Anda.
  • Upgrade aplikasi pengirim Anda untuk menggunakan Cast SDK 4.6.0.
  • Rilis ulang aplikasi Anda ke Apple App Store.

Mengapa perangkat berhenti muncul di alat pilih perangkat kustom saya setelah saya mengupgrade ke 4.6.0?

Ini adalah masalah umum yang dapat terjadi jika Anda menggunakan alat pilih perangkat kustom, bukan alat pilih perangkat standar. Pada Cast versi 4.4.8 dan yang lebih lama, pemindaian perangkat dilakukan secara otomatis. Mulai versi 4.6.0, Anda perlu memanggil metode startDiscovery secara eksplisit pada class GCKDiscoveryManager untuk memulai penemuan perangkat.

Alasan perubahan ini adalah karena permintaan izin Akses Jaringan Lokal (LNA) akan muncul setelah aplikasi melakukan pemindaian untuk pertama kalinya. Hal ini dapat menyebabkan dialog izin muncul di tempat acak di aplikasi Anda.

Developer yang membuat alat pilih perangkat kustom untuk aplikasi mereka diharapkan untuk menyediakan interstisial satu kali sebelum memulai pemindaian perangkat untuk pertama kalinya di iOS 14.

iOS 13

Dengan iOS 13, persyaratan izin baru diperkenalkan yang memengaruhi aplikasi menggunakan Google Cast SDK.

Mulai dari Google Cast SDK v4.4.3, SDK tambahan tersedia tanpa dukungan mode tamu yang tidak memerlukan izin Bluetooth®. Fitur ini tersedia di situs developer dan di Cocoapods google-cast-sdk-no-bluetooth yang baru. Sebagai pengingat, fitur mode tamu adalah kemampuan aplikasi pengirim untuk dapat mendeteksi perangkat transmisi dalam jarak fisik tertentu tanpa berada di jaringan yang sama, menggunakan PIN yang ditampilkan pada perangkat yang mengaktifkan mode tamu.

Untuk mempersiapkan aplikasi Anda untuk iOS 13, Anda harus memutuskan apakah Anda:

Perlu mempertahankan dukungan mode tamu

  • Harus menambahkan kunci Privacy - Bluetooth Always Usage Description.
  • Tambahkan string untuk menjelaskan penggunaan Bluetooth® bagi pengguna ke Info.plist.

Perlu menghapus dukungan mode tamu

  • Mencegah aplikasi Anda memerlukan persyaratan Cast Bluetooth®.
  • Integrasikan Google Cast SDK versi terbaru tanpa dukungan Bluetooth®.
  • Fitur ini tersedia di situs developer dan di Cocoapods google-cast-sdk-no-bluetooth yang baru.

Perincian aplikasi

Berikut rinciannya, bergantung pada versi SDK iOS yang Anda gunakan saat ini:

Aplikasi yang dibuat dengan iOS 12 SDK atau versi yang lebih lama

  • Tindakan yang Direkomendasikan. Performa penemuan perangkat mungkin menurun saat berjalan di iOS 13, tetapi akan tetap berfungsi. Sebaiknya developer melakukan upgrade ke Cast SDK v4.4.4 jika tersedia.
  • iOS 13 akan meminta pengguna untuk memberikan izin Bluetooth® ke aplikasi.

Aplikasi yang dibuat dengan iOS 13 SDK

  • Tindakan Diperlukan: Perbarui ke Cast SDK 4.4.4 atau tombol transmisi tidak dapat muncul jika pengguna tidak memberikan izin akses lokasi. Upgrade ke Cast SDK 4.4.4 diperlukan untuk memastikan pengalaman transmisi yang andal di iOS 13.
  • Lihat dokumentasi developer untuk mengetahui informasi selengkapnya tentang cara mengintegrasikan mode tamu, atau memilih untuk tidak menggunakan mode tamu dengan Google Cast SDK dan tanpa dukungan Bluetooth®.