iOS-Berechtigungen und Discovery

Ab iOS 14 werden im Betriebssystem neue Einschränkungen und Berechtigungen durchgesetzt, die sich auf die Cast-Funktion auswirken. Außerdem wirkt sich das auf die Art und Weise aus, wie Sie das Cast SDK in Ihre App einbinden. Damit Ihre App die Cast-Funktionalität mit den neuesten Versionen von iOS beibehält, müssen Sie Updates vornehmen, um diese Änderungen bei den Berechtigungen zu berücksichtigen.

iOS 14

Entwickler sollten ihre iOS-Absender-Apps für Google Cast auf das Google Cast SDK v4.6.0 oder höher aktualisieren. Diese Versionen unterstützen iOS 14 und die zugehörigen Anforderungen.

Ab iOS 14 werden Nutzer von Apps, die nach Geräten im lokalen Netzwerk suchen, in einem einmaligen Berechtigungsdialogfeld aufgefordert, die Berechtigung zum Suchen nach und Verbinden mit Geräten im lokalen Netzwerk zu erteilen. Die Google Cast-Plattform verwendet das lokale Netzwerk, um Google Cast-Geräte zu erkennen und zu steuern. Wenn der Nutzer die Berechtigung verweigert, kann er nicht streamen.

Wir nehmen einige Änderungen an der Benutzeroberfläche des SDK vor, um die Nutzerfreundlichkeit für Apps zu verbessern, die die Standard-Geräteauswahl verwenden. Durch diese Änderungen der Benutzeroberfläche wird Nutzern deutlicher, warum Berechtigungen für den Zugriff auf das lokale Netzwerk erforderlich sind und wie sie das Streaming aktivieren können, wenn der Zugriff auf Geräte im lokalen Netzwerk deaktiviert wurde.

Apps, die mit Versionen des Cast SDK mit v4.4.8 oder früher erstellt wurden, funktionieren weiterhin, sofern sie mit Xcode 11.7 oder früher erstellt wurden. Wenn Sie Ihre App mit Xcode 12 oder höher für iOS 14 entwickeln, empfehlen wir Ihnen, auf das Cast SDK v4.6.0 oder höher zu aktualisieren, damit Ihre Cast-App weiterhin ordnungsgemäß funktioniert.

Das Cast iOS SDK v4.6.0 oder höher kann mit CocoaPods heruntergeladen werden. Folgen Sie dazu der CocoaPods-Einrichtung oder der manuellen Einrichtung. Diese Version enthält Änderungen am zugrunde liegenden Erkennungsmechanismus, damit Apps, die mit Xcode 12 erstellt wurden, Cast-Geräte im Netzwerk finden können. Die Schaltfläche „Streamen“ sollte jetzt immer angezeigt werden. Wenn keine Geräte verfügbar sind, wenn der Nutzer auf die Schaltfläche „Streamen“ tippt, wird ein Dialogfeld mit einer Anleitung angezeigt, warum Geräte möglicherweise nicht verfügbar sind. Es enthält auch Informationen dazu, wie die Berechtigung für den Zugriff auf das lokale Netzwerk wieder aktiviert werden kann.

Änderungen am Cast SDK

Erstes Streaming

Wenn ein Nutzer zum ersten Mal versucht, Inhalte zu streamen, wird ein Interstitial-Dialogfeld für den Zugriff auf das lokale Netzwerk (Local Network Access, LNA) angezeigt, in dem erklärt wird, warum der Zugriff auf das lokale Netzwerk erforderlich ist. Danach wird die von Apple bereitgestellte Aufforderung zur Erteilung der Berechtigungen für den Zugriff auf das lokale Netzwerk unter iOS angezeigt. Die folgenden Mockups veranschaulichen den Ablauf:

Ablauf für Berechtigungen für den Zugriff auf das lokale Netzwerk

Streamen nicht möglich

Ab dem iOS Sender SDK 4.6.0 wird die Cast-Schaltfläche immer angezeigt, wenn der Nutzer mit dem WLAN verbunden ist. Wenn Cast-Geräte nicht verfügbar sind, wird durch Tippen auf die Cast-Schaltfläche ein Dialogfeld aufgerufen, in dem der Nutzer Hinweise auf mögliche Gründe für die Nichtverfügbarkeit von Cast erhält, wie in den folgenden Mockups dargestellt:

Flow mit Cast nicht verfügbar

Apps unter iOS 14 aktualisieren

  1. Cast iOS SDK 4.8.3 in Ihr Projekt einbinden

    Wenn Sie CocoaPods verwenden, fügen Sie das SDK 4.8.3 mit pod update zu Ihrem Projekt hinzu.

    Andernfalls müssen Sie das SDK manuell abrufen.

  2. NSBonjourServices zu Ihrem Info.plist hinzufügen

    Geben Sie NSBonjourServices in Ihrem Info.plist an, damit die Erkennung lokaler Netzwerke unter iOS 14 funktioniert.

    Sie müssen sowohl _googlecast._tcp als auch _<your-app-id>._googlecast._tcp als Dienste hinzufügen, damit die Geräteerkennung ordnungsgemäß funktioniert.

    Die appID ist deine receiverID, also dieselbe ID, die in deiner GCKDiscoveryCriteria definiert ist.

    Aktualisieren Sie die folgende Beispieldefinition NSBonjourServices und ersetzen Sie „ABCD1234“ durch Ihre App-ID.

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. NSLocalNetworkUsageDescription zu Ihrem Info.plist hinzufügen

    Wir empfehlen dringend, die im Dialogfeld „Lokales Netzwerk“ angezeigte Meldung anzupassen, indem Sie in der Datei Info.plist Ihrer App einen app-spezifischen Berechtigungsstring für NSLocalNetworkUsageDescription hinzufügen, um z. B. die Suche nach Cast-Geräten und anderen Suchdiensten wie DIAL zu beschreiben.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
    network.</string>

    Diese Meldung wird im Dialogfeld „Zugriff auf das lokale Netzwerk“ von iOS angezeigt, wie im Mockup zu sehen ist.

    Bild des Berechtigungsdialogs für den Zugriff auf das lokale Netzwerk beim Streamen
  4. App im Apple App Store neu veröffentlichen

    Wir empfehlen Ihnen, Ihre App so schnell wie möglich mit Version 4.8.3 neu zu veröffentlichen.

Anpassungen

Initiierung der Google Cast-Geräteerkennung

Die Suche nach Cast-Geräten wird standardmäßig gestartet, wenn der Nutzer zum ersten Mal auf das Cast-Symbol GCKUICastButton tippt. Wenn der Nutzer die Cast-App nach dem Upgrade auf iOS 14 zum ersten Mal im lokalen Netzwerk verwendet, wird zuerst das neue LNA-Interstitial und dann das iOS-Dialogfeld für die Berechtigungen für den Zugriff auf das lokale Netzwerk angezeigt.

Mit einem neuen Flag können Sie steuern, wann die Gerätesuche beginnt, und das Verhalten bestimmter Elemente der Benutzeroberfläche anpassen:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

Der Standardwert ist true. Dieses Flag gilt nur, wenn das Flag GCKCastOptions::disableDiscoveryAutostart auf false gesetzt ist.

Wenn diese Option auf true festgelegt ist, beginnt die Google Cast-Geräteerkennung, wenn ein Nutzer zum ersten Mal auf das GCKUICastButton tippt. Dem Nutzer wird eine Informationsmeldung angezeigt, in der erklärt wird, warum die Berechtigung für das lokale Netzwerk erforderlich ist. Danach wird die LNA-Mitteilung für iOS 14 angezeigt. Die Suche nach Übertragungsgeräten beginnt, nachdem die Meldung bestätigt wurde.

Bei nachfolgenden App-Starts wird immer GCKUICastButton angezeigt.

Wenn der Wert auf false gesetzt ist, beginnt die Gerätesuche basierend auf dem Wert des Flags GCKCastOptions::disableDiscoveryAutostart.

Häufig gestellte Fragen

Was passiert, wenn ich meine Cast-Absender-App mit dem Cast SDK v4.4.8 und Xcode 12 neu veröffentliche?

Ihre App kann möglicherweise keine für Google Cast optimierten Geräte im lokalen Netzwerk finden, es sei denn, Sie haben von Apple eine Berechtigung für Netzwerk-Multicast erhalten. Hinweis: Apple gewährt keine Multicast-Berechtigungen ausschließlich zur Unterstützung von Google Cast. Wenn Sie Xcode 12 verwenden möchten, sollten Sie Ihre App mit Cast 4.6.0 veröffentlichen.

Was passiert, wenn ich meine App mit dem neuen Cast SDK neu veröffentliche und meine Nutzer iOS 13 oder früher verwenden?

Sie sehen weiterhin dieselbe Benutzeroberfläche wie vor der Neuveröffentlichung Ihrer App. Für Nutzer mit iOS 14 sind nur die Änderungen sichtbar.

Was muss ich tun, um meine App zu aktualisieren, wenn die neue Version des Cast SDK veröffentlicht wird?

  • Aktualisieren Sie die Info.plist Ihrer App, um eine Beschreibung der Nutzung des lokalen Netzwerks hinzuzufügen.
  • Fügen Sie NSBonjourServices zur Info.plist Ihrer App hinzu und geben Sie die Bonjour-Dienstnamen für Cast und Ihre App-ID an.
  • Führen Sie ein Upgrade Ihrer Sender-App auf Cast SDK 4.6.0 durch.
  • Veröffentlichen Sie Ihre App noch einmal im App Store.

Warum werden Geräte nach dem Upgrade auf Version 4.6.0 nicht mehr in meiner benutzerdefinierten Geräteauswahl angezeigt?

Das ist ein bekanntes Problem, das auftreten kann, wenn Sie eine benutzerdefinierte Geräteauswahl anstelle der Standardgeräteauswahl verwenden. In Version 4.4.8 des Cast SDK und früher wurde die Gerätesuche automatisch durchgeführt. Ab Version 4.6.0 müssen Sie die Methode startDiscovery der Klasse GCKDiscoveryManager explizit aufrufen, um die Gerätesuche zu starten.

Der Grund für diese Änderung ist, dass die Aufforderung für die Berechtigungen für den Zugriff über das lokale Netzwerk (Local Network Access, LNA) erst angezeigt wird, nachdem die App zum ersten Mal gescannt hat. Dies kann dazu führen, dass Berechtigungsdialogfelder an zufälligen Stellen in Ihrer App angezeigt werden.

Entwickler, die eine benutzerdefinierte Geräteauswahl für ihre App erstellen, müssen vor dem ersten Start des Gerätescans in iOS 14 ein einmaliges Interstitial bereitstellen.

iOS 13

Mit iOS 13 wurden neue Berechtigungsanforderungen eingeführt, die sich auf Apps auswirken, die das Google Cast SDK verwenden.

Ab Google Cast SDK v4.4.3 ist ein zusätzliches SDK verfügbar, für das keine Bluetooth®-Berechtigung erforderlich ist. Sie ist sowohl auf der Entwicklerwebsite als auch in den neuen google-cast-sdk-no-bluetooth Cocoapods verfügbar.

Aufschlüsselung nach Apps

Hier finden Sie eine Aufschlüsselung je nach der Version des iOS SDK, die Sie derzeit verwenden:

Apps, die mit dem iOS 12 SDK oder einer früheren Version erstellt wurden

  • Maßnahme empfohlen Die Leistung der Geräteerkennung kann bei iOS 13 abnehmen, funktioniert aber weiterhin. Wir empfehlen Entwicklern dringend, ein Upgrade auf Cast SDK v4.4.4 durchzuführen, sobald es verfügbar ist.
  • Unter iOS 13 werden Nutzer aufgefordert, der App Bluetooth®-Berechtigungen zu erteilen.

Mit dem iOS 13 SDK erstellte Apps

  • Maßnahme erforderlich: Aktualisieren Sie auf Cast SDK 4.4.4. Andernfalls wird die Cast-Schaltfläche möglicherweise nicht angezeigt, wenn der Nutzer keine Standortberechtigung erteilt. Ein Upgrade auf das Cast SDK 4.4.4 ist erforderlich, um ein zuverlässiges Streaming unter iOS 13 zu gewährleisten.