iOS-Berechtigungen und Discovery

Ab iOS 14 gelten neue Einschränkungen und Berechtigungen, die sich auf die Nutzerfreundlichkeit von 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 entsprechenden Anforderungen.

Ab iOS 14 werden Nutzer von Apps, 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. Das Cast-Symbol sollte jetzt immer angezeigt werden. Wenn beim Tippen auf die Cast-Schaltfläche keine Geräte verfügbar sind, 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 zur Erteilung der Berechtigung für den Zugriff auf das lokale Netzwerk angezeigt. Die folgenden Mockups veranschaulichen den Ablauf:

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

Cast nicht verfügbar

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

Flow mit Cast nicht verfügbar

App unter iOS 14 aktualisieren

  1. Cast iOS SDK 4.8.6 zum Projekt hinzufügen

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

    Andernfalls musst du das SDK manuell abrufen.

  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 in deiner GCKDiscoveryCriteria identisch 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 für das lokale Netzwerk angezeigte Nachricht anzupassen. Füge dazu in der Datei deiner App Info.plist 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 im iOS-Dialogfeld für den Zugriff auf das lokale Netzwerk angezeigt, wie im Mockup zu sehen ist.

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

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

Anpassungen

Start der Suche nach Übertragungsgeräten

Standardmäßig wird die Suche nach Übertragungsgeräten 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 das neue LNA-Interstitial 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 Übertragungsgerä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-LNA-Nachricht angezeigt. Die Suche nach Übertragungsgerä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 Multicast im Netzwerk 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 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?

Dies 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 zur Erteilung der Berechtigung für den Zugriff auf das lokale Netzwerk 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 dem 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, nach Möglichkeit auf das Cast SDK v4.4.4 zu aktualisieren.
  • 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 das 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.