Niat untuk Bergabung

"Intent untuk Bergabung" adalah fitur baru Pengirim Android yang memungkinkan aplikasi pengirim "bergabung" ke sesi Transmisi yang telah dimulai oleh aplikasi atau suara lain. Anda menyiapkan aplikasi pengirim untuk diluncurkan oleh intent yang dibuat oleh Cast SDK.

Misalnya, saat menggunakan suara untuk memulai sesi Cast, SDK Cast membuat notifikasi yang memungkinkan pengguna mengontrol pemutaran di semua ponsel Android pada jaringan yang sama. Saat notifikasi diketuk, SDK Cast akan membuat intent untuk meluncurkan aplikasi Anda untuk bergabung dengan sesi Cast.

Lihat contoh CastVideos-Android untuk mengetahui implementasi Intent to Join.

Menggunakan Pengirim Android

Untuk mengaktifkan fitur ini, lakukan langkah-langkah berikut di aplikasi Anda:

Pastikan aplikasi Anda sudah menggunakan Android Sender SDK versi yang lebih tinggi dari 11.4.0. Di build.gradle:

dependencies {
    api 'com.google.android.gms:play-services-cast-framework:11.4.0'
}

Tambahkan filter intent baru ke aktivitas tempat Anda ingin menangani intent tersebut. Intent akan digunakan oleh Notifikasi Remote Control (RCN) untuk meluncurkan aplikasi dan bergabung dengan sesi Transmisi. Sebaiknya gunakan aktivitas tempat SessionManagerListener dihosting, dan onSessionStarted() atau onSessionStartFailed() akan dipanggil. Pastikan filter intent baru bersifat unik di seluruh sistem Android. Sebaiknya gunakan tag <data> untuk melakukannya, seperti berikut:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="your_app_scheme" android:host="your_app_host"
        android:path="your_app_path"/>
</intent-filter>

Contoh tag <data>:

<data android:scheme="https" android:host="example.com"
      android:path="/cast/join"/>

Pada aktivitas tempat Anda menetapkan filter intent baru, panggil SessionManager.startSession(Intent) di onResume():

Kotlin
override fun onResume() {
    ...
    val intent = intent
    // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
    val intentToJoinUri = Uri.parse("https://example.com/cast/join")
    if (intent.data != null && intent.data == intentToJoinUri) {
        mCastContext.sessionManager.startSession(intent)
    }
    ...
}
Java
@Override
protected void onResume() {
    ...
    Intent intent = getIntent();
    // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
    Uri intentToJoinUri = Uri.parse("https://example.com/cast/join");
    if (intent.getData() != null && intent.getData().equals(intentToJoinUri)) {
        mCastContext.getSessionManager().startSession(intent);
    }
    ...
}

Penyiapan Konsol Developer Google Cast

Untuk menggunakan fitur Intent untuk Bergabung, URI aplikasi dan nama paket harus ditambahkan di Konsol Google Cast.

Penerima juga harus tercantum dan dipublikasikan agar Intent to Join dapat berfungsi dengan benar.

Untuk mencantumkan aplikasi, alihkan opsi listingan ke "YA" dan berikan judul, deskripsi, serta grafis 512x512 untuk aplikasi.

Setelah penyiapan, Anda dapat menguji implementasinya dengan Notifikasi Remote Control (RCN) seperti di bawah:

  1. Instal Aplikasi Google Home di ponsel Android, dan hubungkan ke Wi-Fi di ponsel.
  2. Perangkat yang kompatibel untuk Cast menyiapkan perangkat Google Home dengan jaringan yang sama.
  3. Mulai sesi Transmisi dengan perangkat Google Home menggunakan Alat Command and Control (CaC), perangkat Android atau iOS lainnya, atau melalui suara dan periksa apakah aplikasi Penerima Web diluncurkan.
  4. Tunggu beberapa detik untuk mendapatkan RCN di ponsel, lalu ketuk notifikasi untuk memicu intent. Intent harus disiarkan ke aplikasi apa pun yang mendaftarkan intent dengan data yang diperlukan untuk bergabung ke sesi.

SessionManagerListener.onSessionStarted(T, String) akan dipicu dan bergabung ke sesi.

Verifikasi

Jika aplikasi Anda berhasil bergabung ke sesi, SessionManagerListener.onSessionStarted(T, String) akan dipanggil. Jika tidak, SessionManagerListener.onSessionStartFailed(T, int) akan dipanggil. Dengan asumsi aplikasi Anda sudah menangani peristiwa tersebut dengan benar (misalnya, meluncurkan pengontrol yang diperluas atau pengontrol mini), Anda tidak perlu melakukan apa pun.