iOS-Berechtigungen und Discovery

Ab iOS 14 erzwingt das Betriebssystem neue Einschränkungen und Berechtigungen, die sich auf die Nutzung von Cast auswirken. Das wirkt sich auch darauf aus, wie du das Cast SDK in deine App einbaust. Damit deine App die Cast-Funktion auch mit den neuesten iOS-Versionen erhalten kann, musst du Aktualisierungen vornehmen, um diese Berechtigungsänderungen zu verarbeiten.

iOS 14

Entwickler sollten ihre iOS Cast-Sender-Apps auf das Google Cast SDK Version 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 im lokalen Netzwerk nach Geräten suchen, jetzt über ein Dialogfeld mit einmaligen Berechtigungen aufgefordert, lokale Netzwerkgeräte zu finden und eine Verbindung zu ihnen herzustellen. Die Cast-Plattform nutzt das lokale Netzwerk, um Übertragungsgeräte zu erkennen und zu steuern. Wenn der Nutzer also 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 Standard-Geräteauswahl verwenden. Durch diese UX-Änderungen wird für Nutzer deutlicher, warum Zugriffsberechtigungen für das lokale Netzwerk erforderlich sind und wie das Streamen aktiviert werden kann, wenn der Zugriff auf lokale Netzwerkgeräte deaktiviert wurde.

Apps, die mit Version 4.4.8 oder niedriger des Cast SDK erstellt wurden, funktionieren weiterhin, solange sie mit Xcode 11.7 oder niedriger erstellt wurden. Wenn du Apps für iOS 14 mit Xcode 12 oder höher erstellst, empfehlen wir, auf das Cast SDK Version 4.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 heruntergeladen werden, indem du die CocoaPods-Einrichtung oder die manuelle Einrichtung manuell befolgst. In dieser Version wurden Änderungen am zugrunde liegenden Erkennungsmechanismus vorgenommen, damit Apps, die mit Xcode 12 erstellt wurden, Übertragungsgerä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 mit Informationen dazu angezeigt, warum Geräte möglicherweise nicht verfügbar sind, einschließlich Informationen zur erneuten Aktivierung der Berechtigung für den Zugriff auf das lokale Netzwerk.

Cast SDK-Änderungen

Erstmaliges Streamen

Wenn ein Nutzer zum ersten Mal eine Übertragung durchführt, wird ein Interstitial-Dialogfeld für den lokalen Netzwerkzugriff (Local Network Access, LNA) angezeigt, in dem erläutert wird, warum der Zugriff auf das lokale Netzwerk erforderlich ist. Danach wird die Aufforderung für den Zugriff auf das lokale iOS-Netzwerk angezeigt. Die folgenden Modelle veranschaulichen den Ablauf:

Ablauf für Zugriffsberechtigungen für das lokale Netzwerk

Streamen nicht verfügbar

Ab Version 4.6.0 des iOS Sender SDK wird das Cast-Symbol immer angezeigt, 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 für die Nichtverfügbarkeit von Cast erhalten kann, wie in den folgenden Beispielen zu sehen:

Flow mit Cast nicht verfügbar

App unter iOS 14 aktualisieren

  1. Cast iOS SDK 4.8.1 zu Ihrem Projekt hinzufügen

    Wenn du CocoaPods verwendest, verwende pod update, um deinem Projekt das 4.8.1 SDK hinzuzufügen.

    Alternativ können Sie das SDK manuell abrufen.

  2. NSBonjourServices zu deinem Info.plist hinzufügen

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

    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 Ihre ReceiverID, also dieselbe ID, die in 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 deinem Info.plist hinzufügen

    Wir empfehlen dringend, die Meldung, die in der Aufforderung für das lokale Netzwerk angezeigt wird, anzupassen. Füge in der Datei Info.plist deiner App einen App-spezifischen Berechtigungsstring für die NSLocalNetworkUsageDescription hinzu, um die Cast-Erkennung und andere Erkennungsdienste wie DIAL zu beschreiben.

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

    Diese Meldung wird als Teil des iOS-Dialogfelds für den lokalen Netzwerkzugriff angezeigt, wie in der Abbildung dargestellt.

    Bild des Dialogfelds „Berechtigungen für den Zugriff auf das lokale Netzwerk streamen“
  4. App im Apple App Store neu veröffentlichen

    Wir empfehlen dir außerdem, deine App so bald wie möglich mit Version 4.8.1 neu zu veröffentlichen.

Anpassungen

Erkennung des Übertragungsgeräts starten

Standardmäßig wird die Erkennung des Übertragungsgeräts gestartet, wenn der Nutzer zum ersten Mal auf das Cast-Symbol (GCKUICastButton) tippt. Wenn der Nutzer nach dem Upgrade auf iOS 14 zum ersten Mal versucht hat, die Cast App im lokalen Netzwerk zu verwenden, erscheint das neue LNA-Interstitial, gefolgt vom Dialogfeld für Zugriffsberechtigungen für das lokale iOS-Netzwerk.

Es ist ein neues Flag verfügbar, mit dem Sie steuern können, wann die Geräteerkennung beginnt und das Verhalten bestimmter Elemente der Benutzeroberfläche regelt:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

Wenn true festgelegt ist, wird die Erkennung des Übertragungsgeräts gestartet, wenn ein Nutzer zum ersten Mal auf das GCKUICastButton tippt. Der Nutzer wird in einer Meldung darüber informiert, warum die Berechtigung für das lokale Netzwerk erforderlich ist. Im Anschluss an diese Meldung wird die LNA-Meldung für iOS 14 angezeigt. Die Erkennung des Übertragungsgeräts 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 Sender App mit dem Cast SDK v4.4.8 und Xcode 12 neu veröffentliche?

Deine App kann Übertragungsgeräte im lokalen Netzwerk möglicherweise nicht erkennen, es sei denn, du hast eine Netzwerk-Multicast-Berechtigung von Apple erhalten. Apple gewährt Multicast-Berechtigungen nicht 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 unter iOS 13 oder einer früheren Version, wenn ich meine App mit dem neuen Cast SDK neu veröffentliche?

Sie werden weiterhin die gleiche Nutzererfahrung sehen wie vor der erneuten Veröffentlichung Ihrer App. Für Nutzer sichtbare Änderungen sind auf Nutzer mit iOS 14 beschränkt.

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

  • Aktualisiere die Info.plist deiner App mit einer Beschreibung der lokalen Netzwerknutzung.
  • Füge der Datei Info.plist deiner App NSBonjourServices hinzu und gib die Bonjour-Dienstnamen für Cast und deine App-ID an.
  • Aktualisiere deine Absender-App auf das Cast SDK 4.6.0.
  • Veröffentlichen Sie Ihre App erneut im Apple App Store.

Warum werden nach dem Upgrade auf 4.6.0 keine Geräte mehr in der Auswahl für benutzerdefinierte Geräte angezeigt?

Dies ist ein bekanntes Problem, das auftreten kann, wenn Sie eine benutzerdefinierte Geräteauswahl anstelle der Standard-Geräteauswahl verwenden. Ab Version 4.4.8 des Cast SDK wurde das Scannen von Geräten automatisch durchgeführt. 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 ist, dass die LNA-Berechtigungsaufforderung (Local Network Access) nach dem ersten Scan der Anwendung angezeigt wird. Dies kann dazu führen, dass Berechtigungsdialogfelder an zufällig gewählten Stellen in deiner App angezeigt werden.

Entwickler, die eine benutzerdefinierte Geräteauswahl für ihre App erstellen, müssen ein einmaliges Interstitial bereitstellen, bevor sie unter iOS 14 zum ersten Mal Gerätescans starten.

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 SDK ist ein zusätzliches SDK verfügbar, das keine Bluetooth®-Berechtigung erfordert. Diese Funktion ist sowohl auf der Entwicklerwebsite als auch auf den neuen google-cast-sdk-no-bluetooth CocoaPods verfügbar.

Aufschlüsselung nach Apps

Hier sehen Sie eine Aufschlüsselung je nach der Version des iOS SDK, das Sie derzeit verwenden:

Apps, die mit dem iOS 12 SDK oder einer älteren Version erstellt wurden

  • Empfohlene Aktion: Die Leistung bei der Geräteerkennung kann unter iOS 13 sinken, funktioniert aber weiterhin. Wir empfehlen Entwicklern dringend ein Upgrade auf Version 4.4.4 des Cast SDK, sofern verfügbar.
  • Unter iOS 13 werden Nutzer aufgefordert, der App Bluetooth®-Berechtigungen zu erteilen.

Apps, die mit dem iOS 13 SDK erstellt wurden

  • Wichtig: Aktualisieren Sie auf das Cast SDK 4.4.4. Andernfalls wird das Cast-Symbol möglicherweise nicht angezeigt, wenn der Nutzer keine Berechtigung zur Standortermittlung erteilt hat. Für eine zuverlässige Übertragung unter iOS 13 ist ein Upgrade auf das Cast SDK 4.4.4 erforderlich.