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

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

iOS 14

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

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

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

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

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

Трансляция изменений SDK

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

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

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

Актерский состав недоступен

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

Flow с 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 — это ваш идентификатор получателя, который совпадает с идентификатором, который определен в вашем GCKDiscoveryCriteria .

    Обновите приведенный ниже пример определения NSBonjourServices и замените «ABCD1234» своим идентификатором приложения.

    <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 ( GCKUICastButton ). Если это первая попытка пользователя использовать приложение Cast в локальной сети после обновления до iOS 14, появится новое межстраничное объявление LNA, а затем появится диалоговое окно разрешений доступа к локальной сети iOS.

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

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

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

При последующих запусках приложения всегда отображается 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.

iOS 13

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

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

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

Вот разбивка в зависимости от версии iOS SDK, которую вы сейчас используете:

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

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

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

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