Uprawnienia i odkrywanie w iOS

Od wersji iOS 14 system operacyjny będzie wymuszał nowe ograniczenia i uprawnienia wpływające na korzystanie z funkcji przesyłania. Wpłynie to też na sposób dodawania do aplikacji pakietu Cast SDK. Aby aplikacja nadal działała w ramach funkcji Cast w najnowszych wersjach iOS, musisz zaktualizować te uprawnienia.

iOS 14

Deweloperzy powinni zaktualizować swoje aplikacje przesyłające funkcje przesyłania na iOS do pakietu Google Cast SDK w wersji 4.6.0 lub nowszej. Te wersje obsługują system iOS 14 i jego wymagania.

Począwszy od systemu iOS 14 aplikacje, które przeprowadzają skanowanie w poszukiwaniu urządzeń w sieci lokalnej, będą wyświetlać użytkownikom okno jednorazowych uprawnień, aby znaleźć urządzenia sieciowe i się z nimi połączyć. Platforma Cast wykrywa urządzenia przesyłające i steruje nimi za pomocą sieci lokalnej, więc jeśli użytkownik odmówi zgody, nie będzie mógł przesyłać treści.

Aby zwiększyć wygodę użytkowników, wprowadzamy pewne zmiany UX w pakiecie SDK w przypadku aplikacji, które korzystają ze standardowego selektora urządzeń. Dzięki tym modyfikacjom w interfejsie urządzenia użytkownicy będą bardziej jasne, dlaczego potrzebne są uprawnienia dostępu do sieci lokalnej. Wyjaśniają też, jak włączyć przesyłanie, jeśli dostęp do sieci lokalnej został wyłączony.

Aplikacje utworzone za pomocą Cast SDK w wersji 4.4.8 lub starszej będą nadal działać, o ile zostały utworzone przy użyciu Xcode 11.7 lub starszej wersji. Jeśli kompilujesz na iOS 14 za pomocą Xcode 12 lub nowszego, zalecamy zaktualizowanie pakietu Cast SDK do wersji 4.6.0 lub nowszej, by mieć pewność, że aplikacja Cast będzie nadal działać prawidłowo.

Pakiet Cast SDK na iOS w wersji 4.6.0 lub nowszej możesz pobrać razem z CocoaPods, wykonując konfigurację CocoaPods lub ręcznie w ramach konfiguracji ręcznej. W tej wersji wprowadziliśmy zmiany w podstawowym mechanizmie wykrywania, aby umożliwić aplikacjom kompatybilnym z Xcode 12 znajdowanie w sieci urządzeń przesyłających. Przycisk Cast powinien być teraz zawsze widoczny. Jeśli po kliknięciu przycisku przesyłania przez użytkownika nie są dostępne żadne urządzenia, pojawi się okno ze wskazówkami, dlaczego urządzenia mogą być niedostępne oraz jak ponownie włączyć dostęp do sieci lokalnej.

Zmiany w pakiecie Cast SDK

Pierwsze przesyłanie

Gdy użytkownik po raz pierwszy spróbuje przesłać treści, pojawi się okno pełnoekranowe z prośbą o dostęp do sieci lokalnej (LNA) z wyjaśnieniem, dlaczego potrzebny jest dostęp przez sieć lokalną. Potem wyświetli się udostępniony przez Apple komunikat o uprawnieniach dostępu do sieci lokalnej w iOS. Poniższe przykłady obrazują ten proces:

Przepływ uprawnień dostępu do sieci lokalnej

Przesyłanie niedostępne

Począwszy od pakietu SDK nadawcy na iOS w wersji 4.6.0 przycisk Cast pojawia się zawsze, gdy użytkownik łączy się z Wi-Fi. Gdy urządzenia przesyłające są niedostępne, kliknięcie przycisku Cast otwiera okno z podpowiedziami dotyczącymi możliwych powodów tego, że funkcja przesyłania jest niedostępna, jak na przykładach poniżej:

Proces z obsługą przesyłania jest niedostępny

Aktualizowanie aplikacji na urządzeniach z iOS 14

  1. Dodawanie do projektu pakietu SDK Cast na iOS 4.8.1

    Jeśli korzystasz z CocoaPods, dodaj do projektu pakiet SDK 4.8.1 za pomocą pod update.

    W przeciwnym razie ręcznie pobierz pakiet SDK.

  2. Dodaj: NSBonjourServices do: Info.plist

    Aby umożliwić wykrywanie sieci lokalnej w iOS 14, podaj NSBonjourServices w Info.plist.

    Aby wykrywanie urządzeń działało prawidłowo, musisz dodać jako usługi zarówno _googlecast._tcp, jak i _<your-app-id>._googlecast._tcp.

    Identyfikator appID to Twój identyfikator odbiorcy, czyli taki sam identyfikator, który jest zdefiniowany w zasadzie GCKDiscoveryCriteria.

    Zaktualizuj definicję w przykładzie NSBonjourServices i zastąp „ABCD1234” swoim identyfikatorem appID.

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. Dodaj NSLocalNetworkUsageDescription do: Info.plist

    Zdecydowanie zalecamy dostosowanie komunikatu wyświetlanego w sieci lokalnej przez dodanie ciągu uprawnień aplikacji w pliku Info.plist aplikacji NSLocalNetworkUsageDescription, na przykład by opisać wykrywanie Cast i inne usługi wykrywania, takie jak DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} używa sieci lokalnej do wykrywania w Twojej sieci Wi-Fi urządzeń obsługujących Cast.</string>

    Ten komunikat pojawi się jako część okna Dostęp do sieci lokalnej w iOS, tak jak pokazano to w przykładzie.

    Obraz okna uprawnień dostępu do sieci lokalnej przesyłania
  4. Ponowne publikowanie aplikacji w Apple App Store

    Zalecamy też jak najszybsze ponowne opublikowanie aplikacji przy użyciu wersji 4.8.1.

Dostosowania

Inicjowanie wykrywania urządzenia przesyłającego

Domyślnie wykrywanie urządzeń przesyłających jest inicjowane, gdy użytkownik po raz pierwszy kliknie przycisk Cast (GCKUICastButton). Jeśli po raz pierwszy użytkownik próbuje użyć aplikacji Cast w sieci lokalnej po uaktualnieniu do systemu iOS 14, pojawi się nowe pełnoekranowe okno LNA, a następnie okno uprawnień dostępu do sieci lokalnej w iOS.

Dostępna jest nowa flaga pozwalająca określić, kiedy ma się rozpoczynać wykrywanie urządzeń oraz jak mają działać określone elementy UX:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

Wartością domyślną jest true. Ta flaga jest stosowana tylko wtedy, gdy flaga GCKCastOptions::disableDiscoveryAutostart jest ustawiona na false.

Jeśli ustawisz wartość true, wykrywanie urządzeń przesyłających rozpocznie się, gdy użytkownik po raz pierwszy kliknie GCKUICastButton. Użytkownik zobaczy komunikat z informacją, dlaczego potrzebne są uprawnienia do sieci lokalnej. Kolejnym krokiem jest wyświetlenie komunikatu LNA systemu iOS 14. Wykrywanie urządzeń przesyłających rozpocznie się po potwierdzeniu wiadomości.

Przy kolejnych wersjach aplikacji GCKUICastButton zawsze wyświetla się.

Jeśli jest ustawiona na false, wykrywanie urządzeń rozpocznie się na podstawie wartości flagi GCKCastOptions::disableDiscoveryAutostart.

Najczęstsze pytania

Co się stanie, jeśli ponownie opublikuję aplikację nadawcy Cast z pakietem Cast SDK w wersji 4.4.8 i Xcode 12?

Aplikacja może nie być w stanie wykrywać urządzeń przesyłających w sieci lokalnej, jeśli nie masz od Apple zezwolenia na multiemisję w sieci. Pamiętaj, że Apple nie będzie przyznawać uprawnień do transmisji w trybie multicast wyłącznie w celu obsługi przesyłania. Jeśli planujesz kompilację kodu przy użyciu Xcode 12, opublikuj aplikację z obsługą Cast 4.6.0.

Jeśli ponownie opublikuję aplikację z nowym pakietem Cast SDK, co będą mogli używać moi użytkownicy korzystający z iOS w wersji 13 lub starszej?

Użytkownicy będą nadal korzystać z tych samych funkcji co przed ponownym opublikowaniem aplikacji. Zmiany widoczne dla użytkowników są ograniczone do użytkowników urządzeń z iOS 14.

Co muszę zrobić, aby zaktualizować aplikację po opublikowaniu nowej wersji pakietu Cast SDK?

  • Zaktualizuj uprawnienie Info.plist w aplikacji, aby uwzględnić opis wykorzystania sieci lokalnej.
  • Dodaj NSBonjourServices do uprawnień Info.plist aplikacji i podaj nazwy usługi Bonjour dla Cast oraz identyfikator aplikacji.
  • Uaktualnij aplikację nadawcy, by używała pakietu Cast SDK 4.6.0.
  • Ponownie opublikuj aplikację w sklepie Apple App Store.

Dlaczego po przejściu na wersję 4.6.0 urządzenia przestały się wyświetlać w niestandardowym selektorze urządzeń?

To znany problem, który może wystąpić, jeśli zamiast standardowego selektora urządzeń używasz niestandardowego selektora urządzeń. W wersji 4.4.8 pakietu Cast SDK i starszych wersji skanowanie urządzeń było automatyczne. Od wersji 4.6.0 musisz jawnie wywoływać metodę startDiscovery w klasie GCKDiscoveryManager, aby zainicjować wykrywanie urządzeń.

Wynika to z tego, że prośba o przyznanie dostępu do sieci lokalnej pojawi się po pierwszym przeskanowaniu aplikacji. Może to spowodować, że w losowych miejscach w aplikacji pojawią się okna uprawnień.

Deweloperzy, którzy stworzą niestandardowy selektor urządzeń dla swojej aplikacji, będą musieli udostępnić jednorazową reklamę pełnoekranową przed rozpoczęciem pierwszego skanowania urządzenia w systemie iOS 14.

iOS 13

W iOS 13 wprowadziliśmy nowe wymagania dotyczące uprawnień, które wpływają na aplikacje korzystające z pakietu Google Cast SDK.

Począwszy od Google Cast SDK w wersji 4.4.3, dostępny jest dodatkowy pakiet SDK, który nie wymaga uprawnień Bluetooth®. Ta funkcja jest dostępna zarówno na stronie dla deweloperów, jak i na nowym urządzeniu google-cast-sdk-no-bluetooth Cocoapods.

Zestawienie aplikacji

Poniżej znajdziesz zestawienie informacji w zależności od używanej obecnie wersji pakietu SDK na iOS:

aplikacje stworzone za pomocą pakietu SDK na system iOS 12 lub starszego,

  • Zalecane działanie. Wydajność wykrywania urządzeń może się zmniejszyć w przypadku systemu iOS 13, ale nadal będzie działać. Zdecydowanie zalecamy programistom przejście na Cast SDK w wersji 4.4.4, gdy tylko będzie to możliwe.
  • iOS 13 poprosi użytkowników o przyznanie aplikacji uprawnień dotyczących Bluetooth®.

Aplikacje korzystające z pakietu SDK na iOS 13

  • Wymagane działanie: zaktualizuj pakiet SDK Cast do wersji 4.4.4 – jeśli użytkownik nie przyzna dostępu do lokalizacji, przycisk przesyłania może się nie pojawić. Uaktualnienie do pakietu Cast SDK 4.4.4 jest konieczne, by zapewnić niezawodne przesyłanie na iOS 13.