Как создать пример приложения для iOS

В этом примере приложения для iOS используются Google Home API. В этом руководстве рассказывается, как собрать и запустить приложение в первый раз.

Требования

Убедитесь, что вы соответствуете минимальным требованиям для использования Home API для iOS.

Чтобы создать и установить пример приложения, вам понадобится компьютер с Xcode версии 15.3 или более поздней.

Скачать Xcode

Для тестирования приложения вам понадобится:

  1. Аккаунт Google.
  2. Идентификатор Apple ID, зарегистрированный в программе Apple Developer, для создания файлов конфигурации физических устройств. Если вы ещё не создали аккаунт, регистрация будет платной и может занять до 48 часов.
  3. Устройство iOS (не симулятор) с iOS 16.4 или более поздней версии, на котором настроен тестовый аккаунт.
  4. Сеть Wi-Fi.
  5. Устройство Google Hub, поддерживающее Home API.
  6. Thread Border Router (TBR), если устройству требуется поддержка Thread, а у вашего центра управления ее нет.
  7. Хотя бы одно поддерживаемое устройство.

Для разработки вам понадобится компьютер Mac, соответствующий следующим требованиям:

  • macOS Sonoma или более поздней версии
  • Xcode 15.3 или более поздней версии;

Как создать файлы конфигурации развертывания Apple

Во-первых, в приложении должна быть включена функция App Attest. Поэтому его нельзя развернуть на устройствах-симуляторах. Для этого вам нужно создать профиль инициализации с правом App Attest.

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

Подробную информацию о профилях инициализации можно найти в статье Apple Создание профиля инициализации для разработки.

Ниже описаны минимальные шаги, необходимые для развертывания приложения:

  1. Создайте идентификатор группы приложений, чтобы ваше приложение могло взаимодействовать с MatterExtension.
    1. Войдите на портал для разработчиков Apple.
    2. Добавьте идентификатор группы приложений. Например, group.com.company.commissioning.
  2. Зарегистрируйте тестовое устройство в аккаунте разработчика.
  3. Создайте профиль для целевого приложения.

    1. Выберите идентификатор пакета приложения. Он должен быть уникальным и описательным. Например, его можно отформатировать как com.company.HomeApiSample. Этот идентификатор будет использоваться в оставшейся части раздела.
    2. Зарегистрируйте идентификатор приложения. При появлении запроса добавьте возможности App Attest и App Groups.
    3. Измените только что созданный идентификатор приложения и настройте функцию App Groups (Группы приложений), чтобы добавить зарегистрированный идентификатор группы приложений.

    4. Создайте профиль инициализации для разработки приложения. Свяжите его с созданным идентификатором приложения и выбранными тестовыми устройствами. Убедитесь, что у вас есть сертификат разработчика для подписи приложения.

  4. Создайте профиль для целевой аудитории MatterExtension.

    1. Выберите идентификатор пакета приложения для MatterExtension. Идентификатор должен быть унаследован от идентификатора приложения. Например, com.company.HomeApiSample.MatterExtension.
    2. Зарегистрируйте идентификатор приложения. При появлении запроса добавьте функцию App Group (Группа приложений).
    3. Измените созданный идентификатор приложения и настройте функцию App Groups (Группы приложений), чтобы добавить зарегистрированный идентификатор группы приложений, созданный на предыдущих шагах.
    4. Создайте профиль инициализации для разработки для MatterExtension.

Как сгенерировать идентификатор клиента OAuth и включить API для умного дома

Приложению нужен идентификатор клиента OAuth, чтобы идентифицировать себя в системе аутентификации Google. Для приложений iOS тип приложения с идентификатором клиента OAuth должен быть настроен как iOS. Приложение также будет вызывать Home API. Чтобы включить эту функцию, API должен быть включен в проекте Google Cloud.

Как создать идентификатор клиента OAuth

  1. В консоли Google Cloud перейдите на панель выбора проекта и выберите проект, который хотите использовать для создания учетных данных OAuth.
  2. Перейдите на страницу "API и сервисы". Для этого нажмите на кнопку меню в левом верхнем углу и выберите View All Products (Посмотреть все продукты) > APIs & Services (API и сервисы).
  3. В меню навигации нажмите Учетные данные.
  4. Если вы ещё не настроили окно запроса доступа для этого проекта Google Cloud, появится кнопка Настроить окно запроса доступа. В этом случае настройте окно запроса доступа, следуя инструкциям ниже. Если окно запроса доступа OAuth уже настроено и его статус публикации – Тестирование, убедитесь, что тестовые аккаунты, которые вы будете использовать, добавлены в группу Тестовые пользователи. В противном случае перейдите к следующему шагу.

    1. В зависимости от варианта использования выберите Внутреннее или Внешнее и нажмите Создать. Откроется панель Окно запроса доступа OAuth.
    2. Введите информацию на странице Информация о приложении, следуя инструкциям на экране, и нажмите Сохранить и продолжить. Откроется панель "Области действия".
    3. Добавлять области действия не нужно, поэтому нажмите Сохранить и продолжить. Откроется панель Тестовые пользователи.
    4. Если вы решили создать внутреннее окно запроса доступа, вам нужно добавить пользователей, чтобы протестировать доступ к приложению. Нажмите Добавить пользователей. Откроется панель Добавить пользователей. Тестовые пользователи могут предоставлять разрешения в вашем приложении. В пустом поле добавьте один или несколько адресов электронной почты аккаунтов Google и нажмите Добавить.
    5. Нажмите Сохранить и продолжить. Откроется панель Сводка.
    6. Проверьте информацию в окне запроса доступа OAuth и нажмите Вернуться на панель управления.
  5. На панели меню слева нажмите Учетные данные, чтобы создать идентификатор клиента OAuth.

    Настройте экран OAuth

    1. Нажмите кнопку Создать учетные данные и выберите Идентификатор клиента OAuth.
      1. В разделе Тип приложения выберите iOS.
    2. В поле Идентификатор пакета укажите идентификатор приложения и идентификатор команды Apple Developer. Остальные поля заполнять не обязательно.
    3. Нажмите Создать и запишите созданный идентификатор клиента или нажмите Скачать PLIST. Он будет использоваться позже, чтобы включить функцию запроса разрешений. Подробнее о том, как создать учетные данные для авторизации…

Как включить Home API

Включите доступ к Home API.

  1. На вкладке APIs and Services (API и сервисы) нажмите Enabled APIs & Services (Включенные API и сервисы).
  2. Вверху страницы нажмите Включить API и сервисы.
  3. Найдите и выберите HOME API.
  4. На странице сведений об API для умного дома нажмите Включить.

Как скачать исходный код

Исходный код примера приложения доступен на GitHub.

Перейдите в папку, в которой вы хотите сохранить проект, и клонируйте его:

git clone https://github.com/google-home/google-home-api-sample-app-ios.git

Чтобы загрузить проект в Xcode, нажмите File (Файл) > Open (Открыть) и выберите GoogleHomeAPISampleIOS.xcodeproj в корне клонированного репозитория.

Как добавить SDK в проект

Для сборки проекта Sample App требуется дополнительная информация. В частности, вам нужно будет добавить файлы SDK Framework, а также указать идентификатор аккаунта разработчика и идентификатор клиента OAuth.

Создайте приложение

Чтобы скачать Home APIs iOS SDK, сначала войдите в аккаунт Google Home Developers.

Войти

Настройте проект Xcode для примера приложения:

  1. Распакуйте скачанный SDK в каталог ThirdParty/GoogleHomeSDK относительно корневого каталога проекта.
  2. Настройте идентификаторы разработчика и клиента OAuth:
    1. На панели навигации найдите папку GoogleHomeAPISampleIOS и откройте файл Info.plist для редактирования.
  3. В файле Info.plist заполните поле GIDClientID идентификатором клиента OAuth (см. раздел Настройка запроса согласия OAuth), поле Cloud Project Number номером облачного проекта, а поле GIDTeamID – идентификатором команды разработчиков Apple аккаунта разработчика, использованного при регистрации OAuth.

  4. Добавьте функцию App Attest:

    1. На панели навигации Xcode выберите файл проекта GoogleHomeAPISampleIOS, чтобы изменить конфигурацию проекта.
    2. Нажмите на вкладку Подписание и возможности вверху и выберите целевой GoogleHomeAPISampleIOS слева в разделе "Цели".
    3. Под вкладкой Signing and Capabilities (Подпись и возможности) нажмите + Capability (+ Возможность) и найдите App Attest.
    4. Нажмите App Attest, чтобы добавить. Если вы не можете найти эту функцию, возможно, она уже добавлена в проект.
  5. Добавьте возможность Группы приложений.

    Как добавить группы приложений

    1. Перейдите в проект GoogleHomeAPISampleIOS > цель GoogleHomeAPISampleIOS.
    2. Нажмите Подписание и возможности > + Возможность.
    3. Выберите функцию Группы приложений.
    4. Нажмите на значок + в разделе App Groups (Группы приложений) и добавьте идентификатор группы приложений для вашего приложения, который вы добавили на портале для разработчиков Apple.
    5. Повторите эти шаги для цели MatterAddDeviceExtension, чтобы добавить ее в App Groups.
  6. Обновите идентификатор пакета

    1. Чтобы запустить и развернуть образец приложения на устройстве с использованием сертификатов разработчика и профилей инициализации, вам потребуется указать уникальный идентификатор пакета. Это должен быть тот же идентификатор, который связан с учетными данными клиента OAuth (см. выше).
    2. На панели навигации Xcode выберите файл проекта GoogleHomeAPISampleIOS, чтобы изменить конфигурацию проекта.
    3. Вверху откройте вкладку Signing and Capabilities (Подпись и возможности) и в разделе TARGETS (Цели) слева выберите цель GoogleHomeAPISampleIOS.
    4. В разделе Signing (Подпись) выберите поле Bundle Identifier (Идентификатор пакета) и введите уникальный идентификатор приложения.
    5. Выберите или установите профиль инициализации, связанный с этим пакетом, с необходимыми правами.
    6. Повторите эти шаги для цели MatterAddDeviceExtension, чтобы ввести идентификатор пакета для расширения и импортировать его зарегистрированный профиль инициализации.
  7. Обновите зарегистрированный идентификатор группы приложений в коде.

    1. Приложение должно настроить экземпляр SDK, чтобы использовать идентификатор группы приложений для таких функций, как ввод устройства в эксплуатацию. Обновите приложение, чтобы использовать идентификатор группы приложений, зарегистрированный на портале Apple Developer Portal. Для этого найдите строку HOME_API_TODO_ADD_APP_GROUP и замените каждый ее экземпляр на идентификатор.

    Эти настройки задаются в следующих файлах:

    • GoogleHomeAPISampleIOS.swift при инициализации SDK.
    • RequestHandler.swift
    • CommissioningManager.swift
  8. Настройте область действия OAuth в GoogleHomeAPISampleIOS.swift. По умолчанию в исходном коде примера приложения используется область действия https://www.googleapis.com/auth/home.platform.v2. Многие функции в примере приложения доступны только при наличии области действия home.platform.v2 и требуют одобрения партнера. Чтобы запустить пример приложения со стандартной областью действия https://www.googleapis.com/auth/home.platform.selected.devices, откройте GoogleHomeAPISampleIOS.swift и измените homePlatformOAuthScope в Home.configure на HomePlatformOAuthScope.v1:

    Home.configure {
      $0.sharedAppGroup = "HOME_API_TODO_ADD_APP_GROUP"
      $0.homePlatformOAuthScope = HomePlatformOAuthScope.v1
      ...
    }