iOS-Berechtigungen und Discovery

Ab iOS 14 erzwingt das Betriebssystem neue Einschränkungen und Berechtigungen, die die Nutzung von Cast beeinträchtigen. Das hat auch Auswirkungen darauf, wie du das Cast SDK in deine App integrierst. Damit deine Cast-Funktion mit den neuesten iOS-Versionen erhalten bleibt, musst du Änderungen vornehmen, um diese Berechtigungsänderungen zu verarbeiten.

iOS 14

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

Ab iOS 14 werden Nutzer, die nach Geräten im lokalen Netzwerk suchen, nun mit einem einmaligen Berechtigungsdialog aufgefordert, lokale Geräte zu finden und eine Verbindung zu ihnen herzustellen. Die Übertragungsplattform verwendet das lokale Netzwerk, um Übertragungsgeräte zu erkennen und zu steuern. Wenn der Nutzer also die Berechtigung verweigert, kann er nicht streamen.

Zur Verbesserung der Nutzererfahrung nehmen wir einige UX-Änderungen am SDK für die Apps vor, die die standardmäßige Geräteauswahl verwenden. Diese UX-Änderungen machen Nutzern deutlicher, warum Berechtigungen für den lokalen Netzwerkzugriff erforderlich sind und wie das Streaming aktiviert wird, wenn der Zugriff auf lokale Netzwerkgeräte deaktiviert wurde.

Apps, die mit Versionen des Cast SDK Version 4.4.8 oder niedriger erstellt wurden, funktionieren weiterhin, sofern sie mit Xcode 11.7 oder niedriger erstellt werden. Wenn Sie Builds für iOS 14 mit Xcode 12 oder höher erstellen, empfehlen wir, ein Update auf das Cast SDK auf Version 4.6.0 oder höher vorzunehmen, damit Ihre Cast-App weiterhin richtig 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. Dieser Release enthält Änderungen am zugrunde liegenden Erkennungsmechanismus, damit Apps, die mit Xcode 12 erstellt wurden, Übertragungsgeräte im Netzwerk finden können. Das Cast-Symbol sollte jetzt immer zu sehen sein. Wenn keine Geräte verfügbar sind, wenn der Nutzer auf das Cast-Symbol tippt, erscheint ein Dialogfeld, in dem die Gründe für die Nichtverfügbarkeit von Geräten angezeigt werden. Außerdem wird erklärt, wie die Berechtigung für den Zugriff auf das lokale Netzwerk wieder aktiviert werden kann.

Cast SDK-Änderungen

Erstmaliges Streamen

Wenn ein Nutzer zum ersten Mal versucht zu streamen, wird ein Dialogfeld mit lokalem Netzwerkzugriff (LNA) angezeigt, in dem erläutert wird, warum der Zugriff auf ein lokales Netzwerk erforderlich ist. Anschließend wird die von Apple bereitgestellte Berechtigungsanfrage zum lokalen Netzwerkzugriff von iOS angezeigt. Die Beispiele unten veranschaulichen den Ablauf:

Ablauf für Zugriffsberechtigungen für lokales Netzwerk

Streaming nicht verfügbar

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

Ablauf mit Streaming nicht verfügbar

Apps unter 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 4.7.0 SDK hinzu.

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

  2. NSBonjourServices zu Info.plist hinzufügen

    Geben Sie NSBonjourServices in Ihrer Info.plist an, damit die Erkennung des lokalen Netzwerks unter iOS 14 erfolgreich ist.

    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 Receiver-ID, also die ID, die in deinem GCKDiscoveryCriteria definiert ist.

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

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

    Wir empfehlen dir dringend, die Nachricht in der Eingabeaufforderung für das lokale Netzwerk anzupassen. Füge dazu in der Datei Info.plist deiner App einen App-spezifischen Berechtigungsstring für NSLocalNetworkUsageDescription hinzu, z. B. zur Beschreibung der Cast-Erkennung und anderer Erkennungsdienste 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 Nachricht wird im Dialogfeld „iOS Local Network Access“ (Lokaler Netzwerkzugriff) angezeigt, wie im Beispiel zu sehen.

    Bild, das die Berechtigungen für den Zugriff auf ein lokales Netzwerk überträgt
  4. Veröffentlichen Sie Ihre App wieder im App Store.

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

Anpassungen

Übertragung des Übertragungsgeräts

Die Geräteerkennung wird standardmäßig gestartet, 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 angezeigt, gefolgt vom Dialogfeld „Berechtigungen für das lokale Netzwerk „iOS““.

Mit einem 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, wird die Cast-Geräteerkennung gestartet, wenn ein Nutzer das erste Mal auf GCKUICastButton tippt. Der Nutzer wird mit einer Nachricht darüber informiert, warum die Berechtigung für das lokale Netzwerk erforderlich ist. Im Anschluss wird diese Nachricht angezeigt. Die Geräteerkennung wird gestartet, nachdem die Nachricht bestätigt wurde.

In nachfolgenden App-Starts wird immer GCKUICastButton angezeigt.

Wenn false festgelegt ist, wird die Geräteerkennung anhand des Werts des Flags GCKCastOptions::disableDiscoveryAutostart gestartet.

Häufig gestellte Fragen

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

Ihre App kann Cast-Geräte im lokalen Netzwerk möglicherweise nur erkennen, wenn Sie eine Netzwerk-Multicast-Berechtigung von Apple erhalten haben. Beachten Sie, dass Apple nicht ausschließlich Multicast-Berechtigungen gewährt, um Cast zu unterstützen. Wenn Sie vorhaben, Apps mit Xcode 12 zu erstellen, sollten Sie Ihre 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 Änderungen wie vor der erneuten Veröffentlichung deiner App. Für Nutzer sichtbare Änderungen sind nur für Nutzer mit iOS 14 verfügbar.

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

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

Warum werden Geräte nach der Aktualisierung auf Version 4.6.0 nicht mehr in der benutzerdefinierten Auswahl angezeigt?

Dies ist ein bekanntes Problem, das auftreten kann, wenn Sie anstelle der standardmäßigen Geräteauswahl eine benutzerdefinierte Geräteauswahl verwenden. In Version 4.4.8 des Cast SDK und älter wurden Geräte automatisch gescannt. 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 liegt daran, dass die Eingabeaufforderung für Berechtigungen für lokalen Netzwerkzugriff (Local Network Access, LNA) angezeigt wird, nachdem die Anwendung zum ersten Mal gescannt wurde. Dies kann dazu führen, dass Berechtigungsdialoge an zufälligen Stellen in Ihrer App angezeigt werden.

Entwickler, die eine benutzerdefinierte Geräteauswahl für ihre App erstellen, müssen in iOS 14 vor der erstmaligen Einführung des Gerätescans eine einmalige Interstitial-Anzeige bereitstellen.

iOS 13

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

Ab Version 4.4.3 des Google Cast SDKs ist ein zusätzliches SDK ohne Gastmodus-Unterstützung verfügbar, für das keine Bluetooth®-Berechtigung erforderlich ist. Die Funktion ist sowohl auf der Entwicklerwebsite als auch auf den neuen google-cast-sdk-no-bluetooth CocoaPods verfügbar. Zur Erinnerung: Mit der Funktion Gastmodus kann die Absender-App Übertragungsgeräte in einer bestimmten physischen Entfernung erkennen, ohne sich im selben Netzwerk befinden, und zwar mit einer PIN, die auf Geräten im Gastmodus angezeigt wird.

Wenn Sie Ihre App für iOS 13 vorbereiten möchten, müssen Sie Folgendes tun:

Unterstützung für den Gastmodus muss aktiviert bleiben

  • Es muss der Schlüssel Privacy - Bluetooth Always Usage Description hinzugefügt werden.
  • Füge einen String hinzu, um die Bluetooth®-Nutzung für deine Nutzer zu erklären.Info.plist

Gastmodusunterstützung muss entfernt werden

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

Aufschlüsselung nach Apps

Die genaue Aufschlüsselung richtet sich nach der Version des iOS-SDK, die Sie aktuell verwenden:

Apps, die mit dem iOS 12 SDK oder niedriger erstellt wurden

  • Maßnahme erforderlich: Die Geräteerkennung kann bei Ausführung unter iOS 13 abnehmen, aber noch funktionieren. Wir empfehlen Entwicklern dringend ein Upgrade auf das Cast SDK 4.4.4, sofern verfügbar.
  • Bei iOS 13 werden Nutzer aufgefordert, der App Bluetooth®-Berechtigungen zu gewähren.

Mit dem iOS 13 SDK erstellte Apps

  • Wichtiger Hinweis: Wenn der Nutzer keine Berechtigung zur Standortermittlung erteilt, ist unter Umständen eine Aktualisierung auf das Cast SDK 4.4.4 oder das Cast-Symbol erforderlich. Für ein zuverlässiges Streaming unter iOS 13 ist ein Upgrade auf das Cast SDK 4.4.4 erforderlich.
  • In der Entwicklerdokumentation finden Sie weitere Informationen zum Einbinden des Gastmodus oder zum Deaktivieren des Gastmodus mit dem Google Cast SDK und ohne Bluetooth®-Unterstützung.