iOS-Berechtigungen und Discovery

Ab iOS 14 erzwingt das Betriebssystem neue Einschränkungen und Berechtigungen, die sich auf die Nutzung von Cast auswirken. Außerdem wirkt sich dies darauf aus, wie Sie das Cast SDK in Ihre App einbinden. Damit Ihre Cast-Funktion auch mit den neuesten iOS-Versionen erhalten bleibt, müssen Sie Aktualisierungen vornehmen, um diese Berechtigungsänderungen zu verarbeiten.

iOS 14

Entwickler sollten ihre iOS Cast Sender-Apps auf das Google Cast SDK 4.6.0 oder höher aktualisieren. Diese Versionen unterstützen iOS 14 und die entsprechenden Anforderungen.

Ab iOS 14 werden Nutzer von Anwendungen, die nach Geräten im lokalen Netzwerk suchen, nun mit einem einmaligen Berechtigungsdialogfeld aufgefordert, Geräte im lokalen Netzwerk zu finden und sich damit zu verbinden. Die Cast-Plattform verwendet das lokale Netzwerk, um Cast-Geräte zu erkennen und zu steuern. Wenn der Nutzer die Berechtigung verweigert, kann er keine Inhalte streamen.

Um die Nutzerfreundlichkeit zu verbessern, nehmen wir einige Änderungen an der UX des SDKs vor, die die Standard-Geräteauswahl verwenden. Diese UX-Änderungen machen es für Nutzer deutlicher, warum Berechtigungen für den lokalen Netzwerkzugriff erforderlich sind. Außerdem wird erläutert, wie das Streamen aktiviert werden kann, wenn der Zugriff auf lokale Netzwerkgeräte deaktiviert ist.

Apps, die mit Versionen des Cast SDKs mit Version 4.4.8 oder niedriger erstellt wurden, funktionieren weiterhin, sofern sie mit Xcode 11.7 oder niedriger erstellt wurden. Wenn du ein Build für iOS 14 mit Xcode 12 oder höher erstellst, empfehlen wir dir, ein Update auf das Cast SDK 4.6.0 oder höher durchzuführen, damit deine Cast App weiterhin ordnungsgemäß funktioniert.

Das Cast iOS SDK Version 4.6.0 oder höher kann mit CocoaPods über die CocoaPods-Einrichtung oder manuell über die manuelle Einrichtung heruntergeladen werden. In diesem Release wurden Änderungen am zugrunde liegenden Erkennungsmechanismus vorgenommen, damit Anwendungen, die mit Xcode 12 erstellt wurden, Cast-Geräte im Netzwerk finden können. Das Cast-Symbol sollte jetzt immer angezeigt werden. Wenn keine Geräte verfügbar sind, wenn der Nutzer auf das Cast-Symbol tippt, wird ein Dialogfeld angezeigt, in dem erklärt wird, warum Geräte möglicherweise nicht verfügbar sind. Es enthält auch Informationen dazu, wie Sie die Zugriffsberechtigung für das lokale Netzwerk wieder aktivieren.

Änderungen am Cast SDK

Streamen zum ersten Mal

Wenn ein Nutzer das erste Mal versucht, zu streamen, wird ein Dialogfeld für den lokalen Netzwerkzugriff (LNA) angezeigt, in dem erklärt wird, warum der Zugriff auf das lokale Netzwerk erforderlich ist. Danach wird die von Apple bereitgestellte Berechtigung zum Zugriff auf das lokale Netzwerk angezeigt. Die folgenden Beispiele veranschaulichen den Ablauf:

Ablauf für Zugriffsberechtigungen für lokales Netzwerk

Streamen nicht verfügbar

Ab iOS Sender SDK 4.6.0 wird das Cast-Symbol immer angezeigt, wenn der Nutzer mit einem WLAN verbunden ist. Wenn Cast-Geräte nicht verfügbar sind, wird beim Tippen auf das Cast-Symbol ein Dialogfeld angezeigt, in dem der Nutzer Hinweise zu möglichen nicht verfügbaren Cast-Einstellungen erhält, wie in den folgenden Beispielen gezeigt:

Ablauf mit Streaming nicht verfügbar

App auf iOS 14 aktualisieren

  1. Cast iOS-SDK 4.7.0 Ihrem Projekt hinzufügen

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

    Andernfalls können Sie das SDK manuell einfügen.

  2. NSBonjourServices zu Info.plist hinzufügen

    Geben Sie NSBonjourServices im Info.plist an, damit die lokale Netzwerkerkennung unter iOS 14 erfolgreich ausgeführt werden kann.

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

    Die appID ist deine Receiver-ID. Das ist dieselbe ID, die in deinem GCKDiscoveryCriteria definiert ist.

    Aktualisieren Sie die folgende NSBonjourServices-Beispieldefinition und ersetzen Sie "ABCD1234" durch Ihre Anwendungs-ID.

    <key>NSBonjourServices</key>
    <array>
     <string>_googlecast._tcp</string>
     <string>_ABCD1234._googlecast._tcp</string>
    </Array>
    
  3. Füge NSLocalNetworkUsageDescription deinem Info.plist hinzu

    Wir empfehlen dir dringend, die Meldung in der Anfrage für das lokale Netzwerk anzupassen. Füge dazu der Datei Info.plist deiner App einen app-spezifischen Berechtigungsstring für NSLocalNetworkUsageDescription hinzu, z. B. zur Beschreibung der Cast-Erkennung und anderer Discovery-Dienste wie DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} verwendet das lokale Netzwerk, um für Google Cast optimierte Geräte in Ihrem WLAN zu finden.</string>

    Diese Meldung wird im Dialogfeld „iOS Local Network Access“ (Lokaler Netzwerkzugriff) angezeigt, wie im Beispiel dargestellt.

    Dialogfeld „Zugriffsberechtigungen für lokalen Netzwerkzugriff streamen“
  4. App im App Store noch einmal veröffentlichen

    Wir empfehlen Ihnen, Ihre App so bald wie möglich mit Version 4.7.0 zu veröffentlichen.

Anpassungen

Starten der Cast-Geräteerkennung

Das Tippen auf das Cast-Gerät wird standardmäßig initiiert, wenn der Nutzer das Cast-Symbol (GCKUICastButton) zum ersten Mal tippt. Wenn der Nutzer zum ersten Mal versucht hat, die Cast App im lokalen Netzwerk zu verwenden, nachdem das Upgrade auf iOS 14 ausgeführt wurde, wird die neue LNA-Interstitial-Anzeige gefolgt vom Dialogfeld „Zugriffsberechtigungen für lokale Netzwerke in iOS“ angezeigt.

Mit dem neuen Flag können Sie steuern, wann die Geräteerkennung gestartet wird und wie sich bestimmte Elemente der UX verhalten:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

Wenn true festgelegt ist, beginnt die Erkennung des Cast-Geräts, wenn ein Nutzer das erste Mal auf GCKUICastButton tippt. Der Nutzer erhält eine Informationsnachricht, in der er darüber informiert wird, warum die Berechtigung für das lokale Netzwerk erforderlich ist. Nach dieser Meldung wird die LNA-Meldung von iOS 14 angezeigt. Die Erkennung von Übertragungsgeräten beginnt, nachdem die Nachricht bestätigt wurde.

Bei nachfolgenden App-Starts wird immer GCKUICastButton angezeigt.

Wenn false festgelegt ist, beginnt die Geräteerkennung anhand des Werts 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 noch einmal veröffentlichst?

Deine App erkennt Cast-Geräte im lokalen Netzwerk möglicherweise nur, wenn du eine Netzwerk-Multicast-Berechtigung von Apple erhalten hast. Beachten Sie, dass Apple Multicast-Berechtigungen nicht ausschließlich zur Unterstützung von Cast gewährt. Wenn du vorhast, Builds mit Xcode 12 zu erstellen, solltest du deine App mit Cast 4.6.0 veröffentlichen.

Was passiert, wenn Nutzer meine App mit dem neuen Cast SDK noch einmal veröffentlichen?

Nutzer sehen dieselben Funktionen wie vor der erneuten Veröffentlichung deiner App. Für Nutzer sichtbare Änderungen sind auf iOS 14-Nutzer beschränkt.

Was muss ich tun, um meine App zu aktualisieren, sobald die neue Version des Cast SDKs verfügbar ist?

  • Aktualisiere die Info.plist deiner App, um eine Beschreibung der lokalen Netzwerknutzung anzugeben.
  • Füge NSBonjourServices zum Info.plist deiner App hinzu und gib die Bonjour-Dienstnamen für Cast und deine App-ID an.
  • Aktualisieren Sie die Absender-App auf das Cast SDK 4.6.0.
  • Veröffentlichen Sie Ihre App wieder im Apple App Store.

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

Dies 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 SDKs und früher erfolgten die Gerätescans automatisch. Ab Version 4.6.0 müssen Sie die Methode startDiscovery für die Klasse GCKDiscoveryManager explizit aufrufen, um die Geräteerkennung zu starten.

Der Grund für diese Änderung besteht darin, dass die Berechtigung für lokalen Netzwerkzugriff (Local Network Access, LNA) angezeigt wird, nachdem die Anwendung zum ersten Mal gescannt wurde. Dies kann dazu führen, dass Dialogfelder für Berechtigungen an zufälligen Stellen in Ihrer App angezeigt werden.

Entwickler, die eine benutzerdefinierte Geräteauswahl für ihre App erstellen, müssen eine einmalige Interstitial-Anzeige bereitstellen, bevor sie unter iOS 14 zum ersten Mal das Scannen von Geräten starten.

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 Version 4.4.3 ist ein zusätzliches SDK ohne Gastmodus-Unterstützung verfügbar, für die keine Bluetooth®-Berechtigung erforderlich ist. Sie ist sowohl auf der Entwicklerwebsite als auch auf den neuen google-cast-sdk-no-bluetooth CocoaPods verfügbar. Zur Erinnerung: Mit der Gastmodus-Funktion kann die Absender-App Übertragungsgeräte in einer bestimmten physischen Entfernung erkennen, ohne sich im selben Netzwerk zu befinden. Dazu wird eine PIN verwendet, die auf Geräten im Gastmodus angezeigt wird.

So bereiten Sie Ihre App für iOS 13 vor:

Unterstützung des Gastmodus muss fortgesetzt werden

  • Der Schlüssel Privacy - Bluetooth Always Usage Description muss hinzugefügt werden.
  • Fügen Sie Ihrem Info.plist einen String hinzu, um die Bluetooth®-Nutzung Ihrer Nutzer zu erklären.

Unterstützung für den Gastmodus muss entfernt werden

  • Verhindert, dass deine App Bluetooth Bluetooth®-Anforderungen erfüllt.
  • Sie können die neueste Version des Google Cast SDK ohne Bluetooth®-Unterstützung einbinden.
  • Sie ist sowohl auf der Entwicklerwebsite als auch auf den neuen google-cast-sdk-no-bluetooth CocoaPods verfügbar.

App-Aufschlüsselung

Je nach Version des iOS-SDKs sehen Sie hier eine Aufschlüsselung:

Apps, die mit dem SDK für iOS 12 oder niedriger entwickelt wurden

  • Empfohlene Maßnahme Die Leistung der Geräteerkennung kann bei Ausführung unter iOS 13 sinken, ist aber weiterhin funktionsfähig. Wir empfehlen Entwicklern, ein Upgrade auf das Cast SDK v4.4.4 durchzuführen, falls verfügbar.
  • Unter iOS 13 werden Nutzer aufgefordert, der App Bluetooth®-Berechtigungen zu erteilen.

Apps, die mit dem iOS 13 SDK entwickelt wurden

  • Wichtig: Wenn der Nutzer keine Berechtigung zur Standortermittlung erteilt, wird das Cast SDK 4.4.4 aktualisiert oder die Schaltfläche „Übertragen“ wird nicht angezeigt. Für ein zuverlässiges Streaming unter iOS 13 ist ein Upgrade auf das Cast SDK 4.4.4 erforderlich.
  • Weitere Informationen zum Einbinden des Gastmodus oder zum Deaktivieren des Gastmodus mit dem Google Cast SDK und ohne Bluetooth®-Unterstützung finden Sie in der Entwicklerdokumentation.