Разрешения и обнаружение iOS

Начиная с iOS 14, операционная система будет применять новые ограничения и разрешения, которые влияют на пользовательский опыт Cast. Это также повлияет на то, как вы встраиваете Cast SDK в свое приложение. Чтобы ваше приложение поддерживало функциональность Cast в последних версиях iOS, вам необходимо выполнить обновления для обработки этих изменений разрешений.

iOS14

Разработчикам следует обновить свои приложения iOS Cast sender до Google Cast SDK v4.6.0 или более поздней версии. Эти версии поддерживают iOS 14 и ее требования.

Начиная с iOS 14, приложения, которые сканируют устройства в локальной сети, теперь будут предлагать пользователям одноразовый диалог разрешений для поиска и подключения к локальным сетевым устройствам. Платформа Cast использует локальную сеть для обнаружения и управления устройствами Cast, поэтому, если пользователь откажет в разрешении, он не сможет транслировать.

Чтобы улучшить пользовательский опыт, мы вносим некоторые UX-модификации в SDK для тех приложений, которые используют стандартный выбор устройств. Эти UX-модификации делают более очевидными для пользователей, почему нужны разрешения на доступ к локальной сети, а также как включить трансляцию, если доступ к локальному сетевому устройству отключен.

Приложения, созданные с использованием версий Cast SDK, использующих v4.4.8 или более ранние, продолжат работать, если они созданы с использованием Xcode 11.7 или более ранней версии. Если вы создаете для iOS 14 с Xcode 12 или более поздней версии, мы рекомендуем вам обновиться до Cast SDK v4.6.0 или более поздней версии, чтобы гарантировать, что ваше приложение Cast продолжит работать правильно.

Cast iOS SDK v4.6.0 или более поздней версии можно загрузить с помощью CocoaPods, выполнив настройку CocoaPods , или вручную, выполнив ручную настройку . Этот выпуск включает изменения в базовом механизме обнаружения, позволяющие приложениям, созданным с помощью Xcode 12, находить устройства Cast в сети. Кнопка Cast теперь должна отображаться всегда. Если при нажатии пользователем кнопки Cast нет доступных устройств, отобразится диалоговое окно с инструкциями о том, почему устройства могут быть недоступны, включая информацию о том, как повторно включить разрешение на доступ к локальной сети.

Изменения в Cast SDK

Первый кастинг

При первой попытке пользователя запустить трансляцию появится промежуточный диалог доступа к локальной сети (LNA), объясняющий, почему необходим доступ к локальной сети, а затем — предоставленный Apple запрос на доступ к локальной сети iOS. Ниже приведены макеты, иллюстрирующие поток:

Поток разрешений на доступ к локальной сети

В ролях недоступно

Начиная с iOS sender SDK 4.6.0, кнопка Cast всегда появляется, когда пользователь подключен к Wi-Fi. Когда устройства Cast недоступны, нажатие на кнопку Cast вызывает диалоговое окно, которое дает пользователю подсказки о возможных причинах недоступности Cast, как показано в макетах ниже:

Функция Flow with Cast недоступна

Обновление приложения на iOS 14

  1. Добавьте Cast iOS SDK 4.8.3 в свой проект

    Если вы используете CocoaPods, используйте pod update , чтобы добавить SDK 4.8.3 в свой проект.

    В противном случае загрузите SDK вручную .

  2. Добавьте NSBonjourServices в свой Info.plist

    Укажите NSBonjourServices в файле Info.plist , чтобы разрешить успешное обнаружение локальной сети на iOS 14.

    Для корректной работы обнаружения устройств вам потребуется добавить _googlecast._tcp и _<your-app-id>._googlecast._tcp в качестве служб.

    appID — это ваш receiverID, который совпадает с идентификатором, определенным в вашем GCKDiscoveryCriteria .

    Обновите следующий пример определения NSBonjourServices и замените «ABCD1234» на свой appID.

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. Добавьте NSLocalNetworkUsageDescription в ваш Info.plist

    Мы настоятельно рекомендуем вам настроить сообщение, отображаемое в приглашении локальной сети, добавив строку разрешений для конкретного приложения в файл Info.plist вашего приложения для NSLocalNetworkUsageDescription , например, для описания обнаружения Cast и других служб обнаружения, таких как DIAL.

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

    Это сообщение появится как часть диалогового окна «Доступ к локальной сети iOS», как показано в макете.

    Изображение диалогового окна разрешений на доступ к локальной сети
  4. Повторно выпустите свое приложение в Apple App Store

    Мы также рекомендуем вам как можно скорее перевыпустить приложение с версией 4.8.3.

Настройки

Инициирование обнаружения устройства Cast

По умолчанию обнаружение устройства Cast инициируется при первом нажатии пользователем кнопки Cast ( GCKUICastButton ). Если это первая попытка пользователя использовать приложение Cast в локальной сети после обновления до iOS 14, появится новое межстраничное окно LNA, а затем диалоговое окно разрешений на доступ к локальной сети iOS.

Доступен новый флаг, позволяющий контролировать время начала обнаружения устройств и поведение определенных элементов UX:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

Значение по умолчанию — true . Этот флаг применим только в том случае, если флаг GCKCastOptions::disableDiscoveryAutostart установлен в false .

Если установлено значение true , обнаружение устройства Cast начинается, когда пользователь нажимает на GCKUICastButton в первый раз. Пользователю будет показано информационное сообщение, сообщающее, почему требуется разрешение локальной сети. После этого сообщения будет показано сообщение iOS 14 LNA. Обнаружение устройства Cast начинается после подтверждения сообщения.

При последующих запусках приложения GCKUICastButton отображается всегда.

Если установлено значение false , обнаружение устройств начнется на основе значения флага GCKCastOptions::disableDiscoveryAutostart .

Часто задаваемые вопросы

Что произойдет, если я перевыпущу свое приложение Cast Sender с Cast SDK v4.4.8 и Xcode 12?

Ваше приложение может не обнаружить устройства Cast в локальной сети, если вы не получили сетевое многоадресное разрешение от Apple. Обратите внимание, что Apple не будет предоставлять многоадресное разрешение исключительно для поддержки Cast. Если вы планируете сборку с помощью Xcode 12, вам следует выпустить свое приложение с помощью Cast 4.6.0.

Если я перевыпущу свое приложение с новым Cast SDK, что увидят мои пользователи, работающие на iOS 13 или более ранних версиях?

Они продолжат видеть тот же пользовательский опыт, который был до повторного выпуска вашего приложения. Изменения, видимые пользователям, ограничены пользователями, работающими на iOS 14.

Что мне нужно будет сделать, чтобы обновить приложение после выхода новой версии Cast SDK?

  • Обновите Info.plist вашего приложения, включив в него описание использования локальной сети.
  • Добавьте NSBonjourServices в Info.plist вашего приложения и укажите названия служб Bonjour для Cast и идентификатор вашего приложения.
  • Обновите приложение отправителя, чтобы использовать Cast SDK 4.6.0.
  • Повторно выпустите свое приложение в магазине приложений Apple.

Почему устройства перестали отображаться в моем пользовательском средстве выбора устройств после обновления до версии 4.6.0?

Это известная проблема, которая может возникнуть, если вы используете пользовательский выборщик устройств вместо стандартного выбора устройств. В версии 4.4.8 Cast SDK и более ранних версиях сканирование устройств было автоматическим. Начиная с версии 4.6.0, вам нужно будет явно вызвать метод startDiscovery в классе GCKDiscoveryManager , чтобы инициировать обнаружение устройств.

Причина этого изменения в том, что запрос на разрешение доступа к локальной сети (LNA) появится после того, как приложение впервые выполнит сканирование. Это может привести к появлению диалоговых окон разрешений в случайных местах вашего приложения.

Разработчики, создающие пользовательское средство выбора устройств для своих приложений, должны будут предоставить одноразовое рекламное объявление перед первым запуском сканирования устройств в iOS 14.

iOS13

В iOS 13 были введены новые требования к разрешениям, которые влияют на приложения, использующие Google Cast SDK.

Начиная с Google Cast SDK v4.4.3, доступен дополнительный SDK, не требующий разрешения Bluetooth®. Он доступен как на сайте разработчика , так и на новых google-cast-sdk-no-bluetooth Cocoapods.

Разбивка приложения

Ниже приведена разбивка в зависимости от версии iOS SDK, которую вы используете в данный момент:

Приложения, созданные с помощью iOS 12 SDK или более ранней версии

  • Рекомендуемое действие . Производительность обнаружения устройств может снизиться при работе на iOS 13, но все равно будет работать. Мы настоятельно рекомендуем разработчикам обновиться до Cast SDK v4.4.4, когда это станет доступно.
  • iOS 13 предложит пользователям предоставить приложению разрешения Bluetooth®.

Приложения, созданные с помощью iOS 13 SDK

  • Требуется действие : обновитесь до Cast SDK 4.4.4, иначе кнопка трансляции может не появиться, если пользователь не предоставит разрешение на местоположение. Обновление до Cast SDK 4.4.4 необходимо для обеспечения надежной трансляции на iOS 13.