iOS-Berechtigungen und Discovery

Ab iOS 14 werden vom Betriebssystem neue Einschränkungen und Berechtigungen erzwungen, die sich auf die Nutzung von Google Cast auswirken. Außerdem wirkt sich das darauf aus, wie Sie das Cast SDK in Ihre App einbinden. Damit Ihre App die Cast-Funktionen mit den neuesten iOS-Versionen nutzen kann, müssen Sie Updates vornehmen, um diese Berechtigungsänderungen zu berücksichtigen.

iOS 14

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

Ab iOS 14 werden Nutzer in Apps, die nach Geräten im lokalen Netzwerk suchen, jetzt einmalig in einem Berechtigungsdialogfeld aufgefordert, nach Geräten im lokalen Netzwerk zu suchen und eine Verbindung herzustellen. Die Cast-Plattform verwendet das lokale Netzwerk, um Cast-Geräte zu finden und zu steuern. Wenn der Nutzer die Berechtigung verweigert, kann er nicht streamen.

Um die Nutzerfreundlichkeit zu verbessern, nehmen wir einige UX-Änderungen am SDK für Apps vor, die die standardmäßige Geräteauswahl verwenden. Durch diese UX-Änderungen wird Nutzern klarer, warum Berechtigungen für den Zugriff auf das lokale Netzwerk erforderlich sind, und wie sie das Streaming aktivieren können, wenn der Zugriff auf das lokale Netzwerkgerät deaktiviert wurde.

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

Das Cast iOS SDK 4.6.0 oder höher kann mit CocoaPods heruntergeladen werden. Folgen Sie dazu der Anleitung zur Einrichtung von CocoaPods oder der Anleitung zur 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 beim Tippen auf die Schaltfläche „Streamen“ keine Geräte verfügbar sind, wird ein Dialogfeld mit Informationen dazu angezeigt, warum keine Geräte verfügbar sind. Außerdem wird erklärt, wie die Berechtigung für den Zugriff auf das lokale Netzwerk wieder aktiviert werden kann.

Änderungen am Cast SDK

Erstmaliges Streamen

Wenn ein Nutzer zum ersten Mal versucht, zu streamen, wird ein Interstitial-Dialogfeld für den lokalen Netzwerkzugriff (Local Network Access, LNA) angezeigt, in dem erklärt wird, warum der Zugriff auf das lokale Netzwerk erforderlich ist. Anschließend wird der von Apple bereitgestellte Prompt für die Berechtigungen für den lokalen Netzwerkzugriff auf iOS-Geräten angezeigt. Die folgenden Mockups veranschaulichen den Ablauf:

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

Streaming nicht verfügbar

Ab dem iOS-Sender-SDK 4.6.0 wird die Schaltfläche „Streamen“ immer angezeigt, wenn der Nutzer mit einem WLAN verbunden ist. Wenn keine Übertragungsgeräte verfügbar sind, wird durch Tippen auf die Schaltfläche „Streamen“ ein Dialogfeld mit Hinweisen zu möglichen Gründen für die Nichtverfügbarkeit von Google Cast angezeigt (siehe Mockups unten).

Streamen mit Google Cast nicht verfügbar

App unter iOS 14 aktualisieren

  1. Dem Projekt das Cast iOS SDK 4.8.3 hinzufügen

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

    Andernfalls ziehen Sie das SDK manuell ein.

  2. NSBonjourServices zu Info.plist hinzufügen

    Geben Sie NSBonjourServices in Ihrer Info.plist an, damit die Suche im lokalen Netzwerk 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ätesuche ordnungsgemäß funktioniert.

    Die appID ist Ihre Empfänger-ID. Sie entspricht der ID, die in GCKDiscoveryCriteria definiert ist.

    Aktualisieren Sie die folgende Beispieldefinition für 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 Info.plist hinzufügen

    Wir empfehlen Ihnen dringend, die im Prompt für lokale Netzwerke angezeigte Nachricht anzupassen. Fügen Sie dazu in der Datei Info.plist Ihrer App einen appspezifischen Berechtigungsstring für NSLocalNetworkUsageDescription hinzu, um beispielsweise die Erkennung von Cast und andere Erkennungsdienste 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 Nachricht wird im iOS-Dialogfeld „Zugriff auf das lokale Netzwerk“ angezeigt, wie im Mockup dargestellt.

    Bild des Dialogfelds für die Berechtigungen für den lokalen Netzwerkzugriff bei der Übertragung
  4. App noch einmal im Apple App Store veröffentlichen

    Wir empfehlen Ihnen außerdem, Ihre App so bald wie möglich mit 4.8.3 neu zu veröffentlichen.

Anpassungen

Einleiten der Geräteerkennung für Google Cast

Standardmäßig wird die Gerätesuche für Google Cast gestartet, wenn der Nutzer zum ersten Mal auf die Cast-Schaltfläche (GCKUICastButton) tippt. Wenn der Nutzer nach dem Upgrade auf iOS 14 zum ersten Mal versucht, die Cast App im lokalen Netzwerk zu verwenden, wird das neue LNA-Interstitial angezeigt, gefolgt vom Dialogfeld für Berechtigungen für den Zugriff auf das lokale Netzwerk von iOS.

Mit einem neuen Flag können Sie steuern, wann die Gerätesuche beginnt 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 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 er darüber informiert wird, warum die Berechtigung für lokale Netzwerke erforderlich ist. Nach dieser Meldung wird die LNA-Mitteilung für iOS 14 angezeigt. Die Suche nach Übertragungsgeräten beginnt, nachdem die Nachricht 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-Sender-App mit dem Cast SDK v4.4.8 und Xcode 12 noch einmal veröffentliche?

Ihre App kann möglicherweise keine Übertragungsgeräte im lokalen Netzwerk finden, es sei denn, Sie haben von Apple eine Multicast-Netzwerkberechtigung erhalten. Hinweis: Apple gewährt keine Multicast-Berechtigungen ausschließlich zum Zweck der Unterstützung von Cast. Wenn Sie mit Xcode 12 entwickeln 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 Nutzer mit iOS 13 oder niedriger verwenden?

Die Nutzeroberfläche bleibt unverändert. Nutzer sehen nur dann Änderungen, wenn sie iOS 14 verwenden.

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

  • Aktualisieren Sie die Info.plist Ihrer App, um eine Beschreibung der Nutzung in lokalen Netzwerken 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 für Ihre Sender-App durch, um das Cast SDK 4.6.0 zu verwenden.
  • Veröffentlichen Sie Ihre App noch einmal im App Store.

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

Dies ist ein bekanntes Problem, das auftreten kann, wenn Sie anstelle der Standardauswahl eine benutzerdefinierte Geräteauswahl verwenden. In Version 4.4.8 des Cast SDK und niedriger war die Gerätesuche automatisch. 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 zur Berechtigung für den lokalen Netzwerkzugriff (Local Network Access, LNA) angezeigt wird, nachdem die App zum ersten Mal gescannt wurde. Das 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 anzeigen.

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 4.4.3 ist ein zusätzliches SDK verfügbar, für das keine Bluetooth®-Berechtigung erforderlich ist. Diese Informationen sind sowohl auf der Entwicklerwebsite als auch in den neuen google-cast-sdk-no-bluetooth Cocoapods verfügbar.

Aufschlüsselung nach App

Hier eine Aufschlüsselung nach der aktuell verwendeten iOS SDK-Version:

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

  • Empfohlene Maßnahme Die Geräteerkennung kann unter iOS 13 etwas langsamer sein, funktioniert aber weiterhin. Wir empfehlen Entwicklern dringend, auf das Cast SDK 4.4.4 umzustellen, sobald es verfügbar ist.
  • Unter iOS 13 werden Nutzer aufgefordert, der App Bluetooth®-Berechtigungen zu erteilen.

Mit dem iOS 13 SDK erstellte Apps

  • Wichtig: Aktualisieren Sie auf das Cast SDK 4.4.4. Andernfalls wird die Schaltfläche „Streamen“ möglicherweise nicht angezeigt, wenn der Nutzer die Berechtigung für die Standortermittlung nicht erteilt. Ein Upgrade auf das Cast SDK 4.4.4 ist erforderlich, um ein zuverlässiges Streaming unter iOS 13 zu ermöglichen.