Uprawnienia i odkrywanie w iOS

Począwszy od systemu iOS 14, system operacyjny będzie egzekwować nowe ograniczenia i uprawnienia, które mają wpływ na komfort korzystania z Cast. Wpłynie to również na sposób, w jaki zintegrujesz pakiet SDK Cast z aplikacją. Aby aplikacja zachowała funkcje Cast w najnowszych wersjach iOS, musisz wprowadzić zmiany, które będą obsługiwać te zmiany uprawnień.

iOS 14

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

Od iOS 14 aplikacje, które skanują urządzenia w sieci lokalnej, będą wyświetlać użytkownikom jednorazowe okno uprawnień, aby umożliwić im znajdowanie urządzeń w sieci lokalnej i łączenie się z nimi. Platforma Cast korzysta z sieci lokalnej do wykrywania urządzeń Cast i sterowania nimi, więc jeśli użytkownik odmówi dostępu, nie będzie mógł przesyłać treści.

Aby poprawić wrażenia użytkowników, wprowadzamy pewne zmiany w interfejsie SDK w przypadku aplikacji, które korzystają ze standardowego selektora urządzeń. Te zmiany w UX wyraźniej pokazują użytkownikom, dlaczego potrzebne są uprawnienia dostępu do sieci lokalnej, a także jak włączyć przesyłanie, jeśli dostęp do urządzenia w sieci lokalnej został wyłączony.

Aplikacje utworzone za pomocą wersji pakietu Cast SDK 4.4.8 lub starszych będą nadal działać, o ile zostaną utworzone za pomocą Xcode 11.7 lub starszego. Jeśli tworzysz aplikację na iOS 14 za pomocą Xcode 12 lub nowszego, zalecamy zaktualizowanie pakietu Cast SDK do wersji 4.6.0 lub nowszej, aby mieć pewność, że aplikacja Cast będzie nadal działać prawidłowo.

Pakiet Cast iOS SDK w wersji 4.6.0 lub nowszej można pobrać za pomocą CocoaPods, postępując zgodnie z instrukcjami konfiguracji CocoaPods, lub ręcznie, postępując zgodnie z instrukcjami konfiguracji ręcznej. Ta wersja zawiera zmiany w mechanizmie wykrywania, które umożliwiają aplikacjom utworzonym w Xcode 12 znajdowanie urządzeń przesyłających w sieci. Przycisk Cast powinien być teraz zawsze widoczny. Jeśli po kliknięciu przycisku Cast nie będą dostępne żadne urządzenia, wyświetli się okno z informacjami o tym, dlaczego urządzenia mogą być niedostępne, w tym o tym, jak ponownie włączyć uprawnienia dostępu 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 z wyjaśnieniem, dlaczego potrzebny jest dostęp do sieci lokalnej, a następnie wyświetli się prośba o przyznanie uprawnień dostępu do sieci lokalnej w iOS. Poniższe makiety ilustrują ten proces:

Proces przyznawania uprawnień dostępu do sieci lokalnej

Przesyłanie jest niedostępne

Od wersji 4.6.0 pakietu iOS Sender SDK przycisk Cast zawsze pojawia się, gdy użytkownik jest połączony z Wi-Fi. Gdy urządzenia Cast są niedostępne, kliknięcie przycisku Cast powoduje wyświetlenie okna z podpowiedziami dotyczącymi możliwych przyczyn niedostępności Cast, jak pokazano na poniższych makietach:

Przepływ z Cast niedostępny

Aktualizowanie aplikacji na iOS 14

  1. Dodawanie pakietu Cast iOS SDK w wersji 4.8.6 do projektu

    Jeśli używasz CocoaPods, dodaj pakiet SDK w wersji 4.8.6 do projektu za pomocą polecenia pod update.

    W przeciwnym razie ręcznie pobierz pakiet SDK.

  2. Dodaj NSBonjourServices do Info.plist

    W Info.plist określ NSBonjourServices, aby wykrywanie sieci lokalnej w systemie iOS 14 było możliwe.

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

    Identyfikator aplikacji to identyfikator odbiorcy, czyli ten sam identyfikator, który jest zdefiniowany w GCKDiscoveryCriteria.

    Zaktualizuj tę definicję NSBonjourServices i zastąp „ABCD1234” identyfikatorem aplikacji.

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

    Zdecydowanie zalecamy dostosowanie wiadomości wyświetlanej w oknie z prośbą o zezwolenie na dostęp do sieci lokalnej przez dodanie w pliku Info.plist aplikacji ciągu znaków z prośbą o zezwolenie na dostęp do sieci lokalnej, np. NSLocalNetworkUsageDescription w celu opisania wykrywania Cast i innych usług wykrywania, takich jak DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
    network.</string>

    Ten komunikat pojawi się w oknie dialogowym dostępu do sieci lokalnej w iOS, jak pokazano na makiecie.

    Obraz okna uprawnień dostępu do sieci lokalnej podczas przesyłania
  4. Ponownie opublikuj aplikację w Apple App Store

    Zalecamy jak najszybsze ponowne opublikowanie aplikacji z użyciem wersji 4.8.6.

Dostosowania

Inicjowanie wykrywania urządzenia przesyłającego

Domyślnie wykrywanie urządzenia Cast jest inicjowane, gdy użytkownik po raz pierwszy kliknie przycisk Cast (GCKUICastButton). Jeśli użytkownik po raz pierwszy próbuje użyć aplikacji Cast w sieci lokalnej po uaktualnieniu do iOS 14, pojawi się nowy ekran pośredni LNA, a następnie okno uprawnień dostępu do sieci lokalnej w iOS.

Dostępna jest nowa flaga, która umożliwia kontrolowanie, kiedy rozpoczyna się wykrywanie urządzenia, oraz zachowania niektórych elementów interfejsu:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

Wartością domyślną jest true. Ta flaga ma zastosowanie tylko wtedy, gdy flaga GCKCastOptions::disableDiscoveryAutostart ma wartość false.

Jeśli ta opcja jest ustawiona na true, wykrywanie urządzenia do przesyłania rozpoczyna się, gdy użytkownik po raz pierwszy kliknie GCKUICastButton. Użytkownik zobaczy komunikat informacyjny z wyjaśnieniem, dlaczego potrzebne są uprawnienia do sieci lokalnej. Po tym komunikacie wyświetli się komunikat LNA w iOS 14. Wyszukiwanie urządzenia przesyłającego rozpocznie się po potwierdzeniu wiadomości.

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

Jeśli ta opcja jest ustawiona na false, wykrywanie urządzenia 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 wykryć urządzeń Cast w sieci lokalnej, chyba że uzyskasz od Apple uprawnienie do korzystania z multicastu w sieci. Pamiętaj, że Apple nie przyznaje uprawnień do multiemisji wyłącznie w celu obsługi Cast. Jeśli planujesz tworzyć aplikację w Xcode 12, opublikuj ją z Cast w wersji 4.6.0.

Co się stanie, jeśli ponownie opublikuję aplikację z nowym pakietem SDK Cast? Jakie wrażenia będą mieli użytkownicy korzystający z iOS 13 lub starszego?

Użytkownicy nadal będą korzystać z aplikacji w taki sam sposób jak przed ponownym udostępnieniem. Zmiany widoczne dla użytkowników są ograniczone do osób korzystających z iOS 14.

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

  • Zaktualizuj Info.plist aplikacji, aby zawierała opis korzystania z sieci lokalnej.
  • Dodaj NSBonjourServices do Info.plist aplikacji i podaj nazwy usług Bonjour dla Casta oraz identyfikator aplikacji.
  • Uaktualnij aplikację nadawcy, aby korzystała z pakietu Cast SDK w wersji 4.6.0.
  • Ponownie opublikuj aplikację w Apple App Store.

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

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

Wynika to z faktu, że prośba o uprawnienia dostępu do sieci lokalnej (LNA) pojawi się po pierwszym skanowaniu przez aplikację. Może to spowodować, że okna z prośbą o uprawnienia będą się pojawiać w losowych miejscach w aplikacji.

Deweloperzy, którzy tworzą niestandardowy selektor urządzeń dla swojej aplikacji, będą musieli wyświetlić jednorazowy baner pełnoekranowy przed pierwszym skanowaniem urządzeń w systemie iOS 14.

iOS 13

W iOS 13 wprowadzono nowe wymagania dotyczące uprawnień, które mają wpływ na aplikacje korzystające z pakietu Google Cast SDK.

Od wersji 4.4.3 pakietu Google Cast SDK dostępny jest dodatkowy pakiet SDK, który nie wymaga uprawnień Bluetooth®. Jest on dostępny zarówno na stronie dla programistów, jak i w nowym google-cast-sdk-no-bluetooth Cocoapods.

Zestawienie aplikacji

Poniżej znajdziesz zestawienie w zależności od wersji pakietu iOS SDK, z której obecnie korzystasz:

Aplikacje utworzone za pomocą pakietu iOS 12 SDK lub starszego

  • Zalecane działanie Wydajność wykrywania urządzeń może się zmniejszyć, gdy urządzenie działa na iOS 13, ale nadal będzie ono działać. Zdecydowanie zalecamy deweloperom przejście na pakiet Cast SDK w wersji 4.4.4, gdy będzie on dostępny.
  • W systemie iOS 13 użytkownicy będą proszeni o przyznanie aplikacji uprawnień do korzystania z Bluetootha®.

Aplikacje utworzone za pomocą pakietu iOS 13 SDK

  • Wymagane działanie: zaktualizuj pakiet Cast SDK do wersji 4.4.4, w przeciwnym razie przycisk Cast może się nie wyświetlać, jeśli użytkownik nie przyzna dostępu do lokalizacji. Aby zapewnić niezawodne przesyłanie na urządzeniach z iOS 13, musisz zaktualizować pakiet Cast SDK do wersji 4.4.4.