Uprawnienia i odkrywanie w iOS

Począwszy od iOS 14 system operacyjny będzie egzekwować nowe ograniczenia i uprawnienia, które wpływają na wygodę korzystania z przesyłania. Wpłynie to też na sposób kompilowania pakietu SDK Cast w aplikacji. Aby zachować funkcje przesyłania w najnowszych wersjach iOS, musisz uwzględnić te zmiany w uprawnieniach.

iOS 14

Deweloperzy powinni zaktualizować swoje aplikacje nadawcy, którzy przesyłają przesyłanie z iOS, do pakietu SDK Google Cast w wersji 4.6.0 lub nowszej. Wersje te obsługują system iOS 14 i jego wymagania.

Począwszy od systemu iOS 14 aplikacje, które skanują urządzenia w sieci lokalnej, wyświetlają użytkownikom jednorazowe okno z prośbą o znalezienie urządzeń w sieci lokalnej i łączenie się z nimi. Platforma Cast używa sieci lokalnej do wykrywania i kontrolowania urządzeń przesyłających, więc jeśli użytkownik odmówi zgody, nie będzie mógł przesyłać treści.

Aby zapewnić użytkownikom lepsze wrażenia, wprowadzamy pewne zmiany w pakiecie SDK w przypadku aplikacji, które korzystają ze standardowego selektora urządzeń. Dzięki tym zmianom w interfejsie użytkownika stają się one bardziej oczywiste, dlaczego potrzebne są uprawnienia dostępu do sieci lokalnej oraz jak włączyć przesyłanie w przypadku wyłączenia dostępu do sieci lokalnej.

Aplikacje utworzone za pomocą pakietu SDK Cast w wersji 4.4.8 lub starszej będą nadal działać, o ile zostały stworzone w języku Xcode 11.7 lub starszym. Jeśli tworzysz aplikację na iOS 14 z kodem Xcode 12 lub nowszym, zalecamy zaktualizowanie pakietu SDK Cast do wersji 4.6.0 lub nowszej, aby zapewnić prawidłowe działanie aplikacji.

Pakiet SDK Cast na iOS w wersji 4.6.0 lub nowszej można pobrać za pomocą CocoaPods, przeprowadzając konfigurację CocoaPods lub wykonując ręczną konfigurację. Ta wersja obejmuje zmiany w podstawowym mechanizmie wykrywania, dzięki którym aplikacje stworzone za pomocą Xcode 12 mogą znajdować urządzenia przesyłające w sieci. Przycisk Cast powinny wyświetlać się zawsze. Jeśli po kliknięciu przycisku Przesyłaj nie ma żadnych urządzeń, pojawi się okno z informacjami o przyczynach ich niedostępności, w tym o tym, jak ponownie włączyć dostęp do sieci lokalnej.

Zmiany w pakiecie Cast SDK

Pierwsze przesyłanie

Przy pierwszej próbie przesyłania przez użytkownika pojawi się pełnoekranowe okno dostępu do sieci lokalnej (LNA) z wyjaśnieniem, dlaczego potrzebny jest dostęp do sieci lokalnej, a następnie wyświetlony przez Apple komunikat o uprawnieniach dostępu do sieci lokalnej na iOS. Poniższe przykłady ilustrują ten proces:

Przepływ uprawnień dostępu do sieci lokalnej

Przesyłanie niedostępne

Od wersji 4.6.0 pakietu SDK dla nadawców na iOS przycisk Cast zawsze pojawia się, gdy użytkownik ma połączenie z Wi-Fi. Gdy urządzenia przesyłające są niedostępne, kliknięcie przycisku Cast powoduje wyświetlenie okna z informacjami o możliwych przyczynach braku możliwości przesyłania, które widać na przykładach poniżej:

Proces przesyłania jest niedostępny

Aktualizowanie aplikacji na iOS 14

  1. Dodawanie do projektu pakietu SDK Cast na iOS 4.8.0

    Jeśli używasz CocoaPods, użyj pod update, aby dodać do projektu pakiet SDK 4.8.0.

    W przeciwnym razie pobierz pakiet SDK ręcznie.

  2. Dodaj NSBonjourServices do urządzenia Info.plist

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

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

    Identyfikator appID to Twój identyfikator odbiorcy, czyli ten sam identyfikator zdefiniowany w GCKDiscoveryCriteria.

    Zaktualizuj definicję przykładu NSBonjourServices i zastąp „ABCD1234” swoim identyfikatorem aplikacji.

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

    Zdecydowanie zalecamy dostosowanie komunikatu wyświetlanego w prompcie dotyczącym sieci lokalnej przez dodanie do jej pliku Info.plist ciągu uprawnień aplikacji NSLocalNetworkUsageDescription, np. aby opisać wykrywanie przesyłania i inne usługi wykrywania, takie jak DIAL.

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

    Ten komunikat będzie widoczny jako część okna Dostęp do sieci lokalnej w iOS, tak jak na przykładzie.

    Obraz w oknie dialogowym uprawnień dostępu do sieci lokalnej
  4. Ponownie opublikuj aplikację w Apple App Store

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

Dostosowania

Inicjowanie wykrywania urządzenia przesyłającego

Domyślnie wykrywanie urządzeń przesyłających jest inicjowane po pierwszym kliknięciu przez użytkownika przycisku Cast (GCKUICastButton). Jeśli po raz pierwszy użytkownik podjął próbę użycia aplikacji Cast w sieci lokalnej po uaktualnieniu do iOS 14, pojawi się nowa reklama pełnoekranowa LNA, a następnie pojawi się okno uprawnień dostępu do sieci lokalnej w systemie iOS.

Dostępna jest nowa flaga, która pozwala określić, kiedy ma się rozpocząć wykrywanie urządzeń i jakie mają być działanie niektórych elementów UX:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

Jeśli zasada ma wartość true, wykrywanie urządzeń przesyłających rozpoczyna się, gdy użytkownik kliknie GCKUICastButton po raz pierwszy. Wyświetli się komunikat informacyjny z informacją, dlaczego potrzebny jest dostęp do sieci lokalnej. Po tym komunikacie wyświetli się komunikat LNA z systemem iOS 14. Wykrywanie urządzeń przesyłających rozpoczyna się po potwierdzeniu komunikatu.

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

Jeśli ma wartość 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 SDK Cast w wersji 4.4.8 i Xcode 12?

Aplikacja może nie wykrywać urządzeń przesyłających w sieci lokalnej, jeśli nie masz uprawnienia do multiemisji sieciowej od Apple. Pamiętaj, że Apple nie przyznaje uprawnień dotyczących multiemisji wyłącznie do obsługi przesyłania. Jeśli zamierzasz tworzyć kompilację z użyciem Xcode 12, udostępnij aplikację z obsługą przesyłania 4.6.0.

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

Aplikacja będzie działać tak samo jak przed ponownym opublikowaniem aplikacji. Zmiany widoczne dla użytkowników są ograniczone do użytkowników urządzeń z systemem iOS 14.

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

  • Zaktualizuj plik Info.plist aplikacji, aby zawierał opis wykorzystania sieci lokalnej.
  • Dodaj NSBonjourServices do Info.plist aplikacji i podaj nazwy usług Bonjour dla przesyłania oraz identyfikator aplikacji.
  • Uaktualnij aplikację nadawcy, by używała pakietu SDK Cast 4.6.0.
  • Ponownie opublikuj aplikację w sklepie Apple App Store.

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

Jest 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 SDK Cast i starszych 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ń.

Przyczyną tej zmiany jest to, że prośba o uprawnienia dostępu do sieci lokalnej pojawi się po pierwszym skanowaniu aplikacji. W związku z tym w losowych miejscach w aplikacji mogą pojawiać się okna z uprawnieniami.

Deweloperzy, którzy utworzą niestandardowy selektor urządzeń na potrzeby swoich aplikacji, będą musieli wyświetlić jednorazową reklamę pełnoekranową przed pierwszym uruchomieniem skanowania urządzenia w systemie iOS 14.

iOS 13

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

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

Podział aplikacji

Oto zestawienie poszczególnych wersji pakietu SDK na iOS, z której obecnie korzystasz:

aplikacje utworzone za pomocą pakietu SDK na iOS w wersji 12 lub starszej,

  • Zalecane działanie. Urządzenia z systemem iOS 13 mogą być rzadziej wykrywane, ale nadal będą działać. Zdecydowanie zalecamy programistom przejście na pakiet SDK Cast w wersji 4.4.4, jeśli jest to możliwe.
  • iOS 13 poprosi użytkowników o przyznanie uprawnień Bluetooth® aplikacji.

Aplikacje utworzone za pomocą pakietu SDK na iOS 13

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