Uprawnienia i odkrywanie w iOS

Począwszy od iOS 14 system operacyjny będzie egzekwować nowe ograniczenia i uprawnienia, które wpływają na komfort użytkowników Cast. Wpłynie to również na sposób, w jaki integrujesz pakiet Cast SDK z aplikacją. Aby aplikacja zachowała funkcje Cast w najnowszych wersjach iOS, musisz wprowadzić zmiany, które uwzględnią te zmiany uprawnień.

iOS 14

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

Od systemu 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 używa sieci lokalnej do wykrywania urządzeń Cast i sterowania nimi, więc jeśli użytkownik odmówi przyznania uprawnień, 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 oraz jak włączyć przesyłanie, jeśli dostęp do urządzeń w sieci lokalnej został wyłączony.

Aplikacje utworzone przy użyciu wersji pakietu Cast SDK starszych niż 4.4.8 będą nadal działać, o ile zostały utworzone przy użyciu Xcode 11.7 lub starszej. 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żesz 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ń Cast w sieci. Przycisk przesyłania 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 spróbuje po raz pierwszy przesłać treści, pojawi się okno z wyjaśnieniem, dlaczego wymagany jest dostęp do sieci lokalnej, a następnie wyświetli się prośba o przyznanie uprawnień do dostępu do sieci lokalnej na urządzeniu z iOS. Poniższe makiety ilustrują ten proces:

Proces przyznawania uprawnień dostępu do sieci lokalnej

Przesyłanie 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 tej funkcji, jak pokazano na poniższych makietach:

Przepływ z Cast jest niedostępny

Aktualizowanie aplikacji na iOS 14

  1. Dodawanie pakietu Cast iOS SDK 4.8.3 do projektu

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

    W przeciwnym razie: ręcznie pobierz pakiet SDK.

  2. Dodawanie NSBonjourServices do Info.plist

    Info.plist określ NSBonjourServices, aby umożliwić wykrywanie sieci lokalnej w systemie iOS 14.

    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 odbiornika, 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 prośbie o zezwolenie na dostęp do sieci lokalnej przez dodanie w pliku Info.plist aplikacji ciągu znaków uprawnień specyficznych dla aplikacji w celu opisania np. wykrywania Cast i innych usług wykrywania, takich jak DIAL.NSLocalNetworkUsageDescription

    <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 dostępu do sieci lokalnej w iOS, jak pokazano na ilustracji.

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

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

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 dialogowe z prośbą o przyznanie 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 przesyłającego rozpoczyna się, gdy użytkownik po raz pierwszy kliknie GCKUICastButton. Użytkownikowi zostanie wyświetlony komunikat informacyjny z wyjaśnieniem, dlaczego wymagane 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 GCKUICastButton jest zawsze wyświetlana.

Jeśli wartość 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 uprawnienia 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.

Jeśli ponownie opublikuję aplikację z nowym pakietem Cast SDK, co się stanie z użytkownikami korzystającymi z systemu 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 aplikacji Info.plist 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 sklepie z aplikacjami Apple.

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

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

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 iOS 14.

iOS 13

W systemie 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-bluetoothCocoapods.

Podział aplikacji

Poniżej znajdziesz informacje w zależności od używanej wersji pakietu iOS SDK:

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 funkcjonować. Zdecydowanie zalecamy deweloperom uaktualnienie do pakietu Cast SDK w wersji 4.4.4, gdy będzie on dostępny.
  • iOS 13 poprosi użytkowników o przyznanie aplikacji uprawnień Bluetooth®.

Aplikacje utworzone za pomocą pakietu iOS 13 SDK

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