iOS-Berechtigungen und Discovery

Ab iOS 14 erzwingt das Betriebssystem neue Einschränkungen und Berechtigungen, die sich auf die Nutzung von Cast auswirken. Die Änderung wirkt sich auch darauf aus, wie Sie das Cast SDK in Ihrer App integrieren. Damit die Cast-Funktion Ihrer App auch bei den neuesten iOS-Versionen gewahrt bleibt, müssen Sie entsprechende Änderungen an den Berechtigungen vornehmen.

iOS 14

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

Ab iOS 14 fordern Apps, die im lokalen Netzwerk nach Geräten suchen, Nutzern jetzt ein Dialogfeld mit einmaligen Berechtigungen auf, um lokale Netzwerkgeräte zu finden und eine Verbindung zu ihnen herzustellen. Die Cast-Plattform verwendet das lokale Netzwerk, um Übertragungsgeräte zu finden und zu steuern. Wenn der Nutzer die Berechtigung ablehnt, kann er nicht streamen.

Um die Nutzerfreundlichkeit zu verbessern, nehmen wir einige UX-Änderungen am SDK für Apps vor, für die die Standard-Geräteauswahl verwendet wird. Diese Änderungen an der UX machen deutlich, warum Nutzer Zugriffsberechtigungen für das lokale Netzwerk benötigen und wie das Streamen aktiviert wird, wenn der Zugriff auf lokale Netzwerkgeräte deaktiviert ist.

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 Sie eine App für iOS 14 mit Xcode 12 oder höher entwickeln, empfehlen wir ein Update auf das Cast SDK 4.6.0 oder höher, damit Ihre Cast App weiterhin korrekt funktioniert.

Das Cast iOS SDK 4.6.0 oder höher kann mit CocoaPods heruntergeladen werden. Folgen Sie dazu der CocoaPods-Einrichtung oder manuell über die manuelle Einrichtung. 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 angezeigt werden. Wenn keine Geräte verfügbar sind, wenn der Nutzer auf das Cast-Symbol tippt, wird ein Dialogfeld angezeigt, in dem erklärt wird, warum Geräte nicht verfügbar sind, einschließlich Informationen dazu, wie die Berechtigung für den Zugriff auf das lokale Netzwerk wieder aktiviert wird.

Änderungen am Cast SDK

Erstes Streamen

Wenn ein Nutzer zum ersten Mal versucht, zu streamen, wird ein Interstitial-Dialogfeld für den lokalen Netzwerkzugriff (LNA) eingeblendet, in dem erklärt wird, warum der Zugriff auf das lokale Netzwerk erforderlich ist, gefolgt von der Eingabeaufforderung zu den Berechtigungen für den Zugriff auf das lokale Netzwerk, die von Apple bereitgestellt werden. 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 einem WLAN verbunden ist. Wenn Übertragungsgeräte nicht verfügbar sind, wird durch Tippen auf das Cast-Symbol ein Dialogfeld eingeblendet, in dem der Nutzer Hinweise auf mögliche Gründe dafür erhält, wie im Folgenden zu sehen ist:

Flow mit Cast nicht verfügbar

App unter iOS 14 aktualisieren

  1. Fügen Sie Ihrem Projekt das Cast iOS SDK 4.8.0 hinzu.

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

    Alternativ können Sie das SDK manuell abrufen.

  2. NSBonjourServices zu Info.plist hinzufügen

    Gib NSBonjourServices in deinem Info.plist an, damit die lokale Netzwerkerkennung unter iOS 14 erfolgreich ist.

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

    Die appID ist deine ReceiverID. Das ist dieselbe ID, die in GCKDiscoveryCriteria definiert ist.

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

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

    Wir empfehlen dringend, die Mitteilung in der Aufforderung „Lokales Netzwerk“ anzupassen. Füge dazu in die Datei Info.plist deiner App einen app-spezifischen Berechtigungsstring für NSLocalNetworkUsageDescription ein. Damit kannst du beispielsweise die Cast-Erkennung und andere Erkennungsdienste wie DIAL 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 im iOS-Dialogfeld „Zugriff auf das lokale Netzwerk“ wie in der Abbildung dargestellt angezeigt.

    Bild des Dialogfelds „Zugriffsberechtigungen für das lokale Netzwerk streamen“
  4. App im App Store neu veröffentlichen

    Wir empfehlen außerdem, deine App so schnell wie möglich mit 4.8.0 neu zu veröffentlichen.

Anpassungen

Übertragung der Erkennung von Übertragungsgeräten

Standardmäßig wird die Übertragungsgeräteerkennung 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, wird die neue LNA-Interstitial-Anzeige eingeblendet, gefolgt vom Dialogfeld mit den Berechtigungen für den Zugriff auf das lokale Netzwerk von iOS.

Mit einem neuen Flag können Sie den Beginn der Geräteerkennung und das Verhalten bestimmter Elemente der UX steuern:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

Ist die Richtlinie auf true gesetzt, beginnt die Erkennung des Übertragungsgeräts, wenn ein Nutzer zum ersten Mal auf GCKUICastButton tippt. Der Nutzer wird in einer Meldung darüber informiert, warum eine Berechtigung für das lokale Netzwerk erforderlich ist. Im Anschluss an diese Meldung wird die Meldung „iOS 14 LNA“ 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, wird die Geräteerkennung anhand des Werts des Flags GCKCastOptions::disableDiscoveryAutostart gestartet.

Häufig gestellte Fragen

Was passiert, wenn ich meine Cast Sender App noch einmal mit dem Cast SDK 4.4.8 und Xcode 12 veröffentliche?

Deine App kann Übertragungsgeräte möglicherweise nur dann im lokalen Netzwerk finden, wenn du von Apple eine Netzwerk-Multicast-Berechtigung erhalten hast. Apple gewährt Multicast-Berechtigungen nicht ausschließlich zur Unterstützung von Cast. Wenn Sie vorhaben, mit Xcode 12 zu entwickeln, sollten Sie Ihre App mit Cast 4.6.0 veröffentlichen.

Was verwenden meine Nutzer mit iOS 13 oder niedriger, wenn ich meine App mit dem neuen Cast SDK noch einmal veröffentliche?

Die Nutzererfahrung vor der erneuten Veröffentlichung deiner App bleibt unverändert. 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, um eine Beschreibung der lokalen Netzwerknutzung aufzunehmen.
  • Füge NSBonjourServices dem Info.plist deiner App hinzu und gib die Namen der Bonjour-Dienste für Cast und deine App-ID an.
  • Aktualisiere deine Sender-App, um das Cast SDK 4.6.0 zu verwenden.
  • Veröffentlichen Sie Ihre App noch einmal im Apple App Store.

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

Dies ist ein bekanntes Problem, das auftreten kann, wenn Sie eine benutzerdefinierte Geräteauswahl anstelle der Standardauswahl verwenden. In Version 4.4.8 des Cast SDK und früheren Versionen wurde das Scannen von Geräten automatisch durchgeführt. Ab Version 4.6.0 müssen Sie die Methode startDiscovery in der Klasse GCKDiscoveryManager explizit aufrufen, um die Geräteerkennung zu initiieren.

Der Grund für diese Änderung ist, dass die Berechtigungsaufforderung für den lokalen Netzwerkzugriff (Local Network Access, LNA) nach dem ersten Scan der App angezeigt wird. Dies 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 ein einmaliges Interstitial bereitstellen, bevor mit dem Gerätescan zum ersten Mal in iOS 14 begonnen wird.

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, 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.

Aufschlüsselung nach Apps

Im Folgenden finden Sie eine Aufschlüsselung je nach der aktuell verwendeten Version des iOS SDK:

Apps, die mit dem iOS 12 SDK oder einer früheren Version erstellt wurden

  • Empfohlene Maßnahme: Die Leistung bei der Geräteerkennung kann sich unter iOS 13 verringern, funktioniert aber weiterhin. Wir empfehlen Entwicklern dringend, ein Upgrade auf das Cast SDK 4.4.4 durchzuführen, sofern verfügbar.
  • Unter iOS 13 werden Nutzer aufgefordert, der App Bluetooth®-Berechtigungen zu erteilen.

Apps, die mit dem iOS 13 SDK erstellt wurden

  • Maßnahme erforderlich: Wenn der Nutzer die Berechtigung zur Standortermittlung nicht erteilt hat, wird ein Update auf Cast SDK 4.4.4 benötigt. Andernfalls wird das Cast-Symbol möglicherweise nicht angezeigt. Für ein zuverlässiges Streaming unter iOS 13 ist ein Upgrade auf das Cast SDK 4.4.4 erforderlich.