Teilnahmeabsicht

„Intent to Join“ ist eine neue Funktion des Android-Senders, mit der eine Absender-App einer Streaming-Sitzung beitreten kann, die von anderen Apps oder Sprachbefehlen gestartet wurde. Sie haben die Absender-App so eingerichtet, dass sie von einem Intent gestartet wird, der vom Cast SDK erstellt wurde.

Wenn beispielsweise eine Cast-Sitzung per Sprachbefehl gestartet wird, erstellt das Cast SDK eine Benachrichtigung, über die ein Nutzer die Wiedergabe auf allen Android-Smartphones im selben Netzwerk steuern kann. Wenn auf die Benachrichtigung getippt wird, erstellt das Cast SDK die Absicht, Ihre App zu starten, um an der Cast-Sitzung teilzunehmen.

Eine funktionierende Implementierung von Intent to Join finden Sie im CastVideos-Android-Beispiel.

Android-Sender verwenden

Führen Sie die folgenden Schritte in Ihrer App aus, um diese Funktion zu aktivieren:

Achten Sie darauf, dass Ihre App bereits die Android Sender SDK-Version 11.4.0 verwendet. In build.gradle:

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

Fügen Sie einer Aktivität, bei der Sie den Intent verarbeiten möchten, einen neuen Intent-Filter hinzu. Der Intent wird von Remote Control Notifications (RCN) verwendet, um Ihre App zu starten und an einer Streamingsitzung teilzunehmen. Wir empfehlen die Verwendung der Aktivität, bei der SessionManagerListener gehostet wird und entweder onSessionStarted() oder onSessionStartFailed() aufgerufen wird. Achten Sie darauf, dass der neue Intent-Filter im gesamten Android-System eindeutig ist. Dazu empfehlen wir die Verwendung des Tags <data>:

<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>

Beispiele für <data>-Tags:

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

Rufen Sie in der Aktivität, in der Sie den neuen Intent-Filter definieren, in onResume() SessionManager.startSession(Intent) auf:

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);
    }
    ...
}

Einrichtung der Google Cast Developer Console

Wenn Sie die Funktion „Intent to Join“ verwenden möchten, müssen der App-URI und der Paketname in der Google Cast Developer Console hinzugefügt werden.

Der Empfänger muss außerdem aufgelistet und veröffentlicht sein, damit Intent to Join ordnungsgemäß funktioniert.

Um Ihre App aufzulisten, setzen Sie die Eintragsoption auf "JA" und geben Sie einen Titel, eine Beschreibung und eine Grafik im Format 512 x 512 für Ihre App an.

Nach der Einrichtung kannst du die Implementierung mit Remote Control Notifications (RCN) so testen:

  1. Installiere die Google Home App auf einem Android-Smartphone und stelle auf dem Smartphone eine WLAN-Verbindung her.
  2. Das für Google Cast optimierte Gerät richtet das Google Home-Gerät im selben Netzwerk ein.
  3. Starten Sie mit dem Google Home-Gerät mithilfe des CaC-Tools (Command and Control), mit einem anderen Android- oder iOS-Gerät oder per Sprachbefehl eine Streamingsitzung und prüfen Sie, ob die Web Receiver App gestartet wird.
  4. Warten Sie einige Sekunden, bis RCN auf dem Smartphone aufgerufen wird, und tippen Sie auf die Benachrichtigung, um den Intent auszulösen. Der Intent sollte an jede App gesendet werden, die ihn mit den erforderlichen Daten für die Teilnahme an der Sitzung registriert.

SessionManagerListener.onSessionStarted(T, String) wird ausgelöst und nimmt an der Sitzung teil.

Überprüfung

Wenn Ihre Anwendung der Sitzung erfolgreich beitritt, wird SessionManagerListener.onSessionStarted(T, String) aufgerufen. Andernfalls wird SessionManagerListener.onSessionStartFailed(T, int) aufgerufen. Wenn deine App diese Ereignisse bereits korrekt verarbeitet (z. B. das Starten eines erweiterten Controllers oder Mini-Controllers), musst du nichts weiter tun.