iOS-Berechtigungen und Discovery

Ab iOS 14 gelten neue Einschränkungen und Berechtigungen, die sich auf die Nutzerfreundlichkeit von Google Cast auswirken. Außerdem ändert sich die Einbindung des Cast SDK in deine App. Damit die Cast-Funktionalität in deiner App mit den neuesten iOS-Versionen erhalten bleibt, musst du Aktualisierungen vornehmen, um diese Änderungen bei den Berechtigungen zu berücksichtigen.

iOS 14

Entwickler sollten ihre iOS-Cast-Sender-Apps 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 Anwendungen, die nach Geräten im lokalen Netzwerk suchen, über ein einmaliges Berechtigungsdialogfeld aufgefordert, den Zugriff auf Geräte im lokalen Netzwerk zu erlauben. 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 Benutzeroberfläche des SDK für Apps vor, die die Standardgeräteauswahl verwenden. Durch diese Änderungen wird für Nutzer 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, solange sie mit Xcode 11.7 oder früher erstellt wurden. Wenn du Apps für iOS 14 mit Xcode 12 oder höher entwickelst, empfehlen wir dir, auf das Cast SDK v4.6.0 oder höher zu aktualisieren, damit deine Cast-App weiterhin ordnungsgemäß funktioniert.

Das Cast iOS SDK v4.6.0 oder höher kann mit CocoaPods durch Befolgen der CocoaPods-Einrichtung oder manuell durch Befolgen der manuellen Einrichtung heruntergeladen werden. 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 Cast-Schaltfläche sollte jetzt immer angezeigt werden. Wenn keine Geräte verfügbar sind, wenn der Nutzer auf die Cast-Schaltfläche tippt, wird ein Dialogfeld mit Informationen dazu angezeigt, warum Geräte möglicherweise nicht 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

Erstes Streaming

Wenn ein Nutzer zum ersten Mal versucht, Inhalte zu streamen, wird ein Interstitial-Dialogfeld zum Zugriff auf das lokale Netzwerk angezeigt, in dem erklärt wird, warum der Zugriff auf das lokale Netzwerk erforderlich ist. Anschließend wird die von Apple bereitgestellte iOS-Aufforderung zu den Berechtigungen für den Zugriff auf das lokale Netzwerk angezeigt. Die folgenden Mocks veranschaulichen den Ablauf:

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

Cast nicht verfügbar

Ab iOS Sender SDK 4.6.0 wird die Cast-Schaltfläche immer angezeigt, wenn der Nutzer mit einem WLAN verbunden ist. Wenn keine Cast-Geräte verfügbar sind, wird durch Tippen auf die Cast-Schaltfläche ein Dialogfeld mit möglichen Gründen für die Nichtverfügbarkeit von Cast angezeigt. Das ist in den folgenden Mocks zu sehen:

Flow mit Cast nicht verfügbar

App unter iOS 14 aktualisieren

  1. Cast iOS SDK 4.8.4 in dein Projekt einbinden

    Wenn du CocoaPods verwendest, füge das SDK 4.8.4 mit pod update zu deinem Projekt hinzu.

    Andernfalls musst du das SDK manuell einbinden.

  2. zu Info.plist hinzufügenNSBonjourServices

    Gib NSBonjourServices in deiner Info.plist an, damit die Suche im lokalen Netzwerk unter iOS 14 funktioniert.

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

    Die App-ID ist deine Empfänger-ID, die mit der ID identisch ist, die in deinem GCKDiscoveryCriteria definiert ist.

    Aktualisiere die folgende Beispieldefinition NSBonjourServices und ersetze „ABCD1234“ durch deine App-ID.

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

    Wir empfehlen dringend, die in der Aufforderung zum lokalen Netzwerk angezeigte Nachricht anzupassen. Füge dazu in der Info.plist deiner App einen app-spezifischen Berechtigungsstring für NSLocalNetworkUsageDescription hinzu, um beispielsweise die Cast- Suche und andere Suchdienste 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 als Teil des iOS-Dialogfelds für den Zugriff auf das lokale Netzwerk angezeigt, wie im Mock zu sehen.

    Bild für das Dialogfeld mit Berechtigungen für den Zugriff auf das lokale Netzwerk für Google Cast
  4. App im App Store neu veröffentlichen

    Wir empfehlen dir, deine App so bald wie möglich mit Version 4.8.4 neu zu veröffentlichen.

Anpassungen

Start der Suche nach Cast-Geräten

Standardmäßig wird die Suche nach Cast-Geräten gestartet, wenn der Nutzer zum ersten Mal auf die Cast-Schaltfläche (GCKUICastButton) tippt. Wenn der Nutzer die Cast-App zum ersten Mal im lokalen Netzwerk verwendet, nachdem er auf iOS 14 aktualisiert hat, wird das neue Interstitial zum Zugriff auf das lokale Netzwerk angezeigt, gefolgt vom iOS-Dialogfeld für die Berechtigungen für den Zugriff auf das lokale Netzwerk.

Mit einem neuen Flag kannst du steuern, wann die Gerätesuche gestartet wird und wie sich bestimmte Elemente der Benutzeroberfläche verhalten:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

Wenn es auf true gesetzt ist, wird die Suche nach Cast-Geräten gestartet, wenn ein Nutzer zum ersten Mal auf GCKUICastButton tippt. Dem Nutzer wird eine Informationsnachricht angezeigt, in der erklärt wird, warum die Berechtigung für den Zugriff auf das lokale Netzwerk erforderlich ist. Danach wird die iOS 14-Nachricht zum Zugriff auf das lokale Netzwerk angezeigt. Die Suche nach Cast-Geräten wird gestartet, nachdem die Nachricht bestätigt wurde.

Bei nachfolgenden App-Starts wird GCKUICastButton immer angezeigt.

Wenn es auf false gesetzt ist, wird die Gerätesuche basierend auf dem Wert 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öffentliche?

Deine App kann möglicherweise keine Cast-Geräte im lokalen Netzwerk finden es sei denn, du hast von Apple eine Berechtigung für Netzwerk-Multicast erhalten. Apple erteilt keine Multicast-Berechtigungen ausschließlich zur Unterstützung von Cast. Wenn du mit Xcode 12 entwickeln möchtest, solltest du deine App mit Cast 4.6.0 veröffentlichen.

Was passiert für Nutzer, die iOS 13 oder eine frühere Version verwenden, wenn ich meine App mit dem neuen Cast SDK neu veröffentliche?

Sie sehen weiterhin dieselbe Benutzeroberfläche wie vor der Neuveröffentlichung deiner App. Änderungen, die für Nutzer sichtbar sind, sind auf Nutzer beschränkt, die iOS 14 verwenden.

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

  • Aktualisiere die Info.plist-Datei deiner App, um eine Beschreibung der Nutzung des lokalen Netzwerks hinzuzufügen.
  • Füge NSBonjourServices zur Info.plist deiner App hinzu und gib die Bonjour-Dienstnamen für Cast und deine App-ID an.
  • Aktualisiere deine Sender-App auf Cast SDK 4.6.0.
  • Veröffentliche deine App im App Store neu.

Warum werden Geräte in meiner benutzerdefinierten Geräteauswahl nicht mehr angezeigt, nachdem ich auf 4.6.0 aktualisiert habe?

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

Der Grund für diese Änderung ist, dass die Aufforderung zu den Berechtigungen für den Zugriff auf das lokale Netzwerk (LNA) angezeigt wird, nachdem die App zum ersten Mal gesucht hat. Dadurch können Berechtigungsdialogfelder an zufälligen Stellen in deiner App angezeigt werden.

Entwickler, die eine benutzerdefinierte Geräteauswahl für ihre App erstellen, müssen vor dem ersten Start der Gerätesuche unter 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. Es ist sowohl auf der Entwickler website als auch in den neuen google-cast-sdk-no-bluetooth CocoaPods verfügbar.

Aufschlüsselung nach Apps

Hier ist eine Aufschlüsselung nach der Version des iOS SDK, die du derzeit verwendest:

Apps, die mit dem iOS 12 SDK oder früher erstellt wurden

  • Empfohlene Maßnahme : Die Leistung der Gerätesuche kann unter iOS 13 abnehmen, funktioniert aber weiterhin. Wir empfehlen Entwicklern dringend, auf Cast SDK v4.4.4 zu aktualisieren, sobald es verfügbar ist.
  • Unter iOS 13 werden Nutzer aufgefordert, der App Bluetooth®-Berechtigungen zu erteilen.

Apps, die mit dem iOS 13 SDK erstellt wurden

  • Maßnahme erforderlich: Aktualisiere 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 Cast SDK 4.4.4 ist erforderlich, um ein zuverlässiges Streaming unter iOS 13 zu gewährleisten.