Создание примера приложения для iOS

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

Предпосылки

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

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

Загрузить Xcode

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

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

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

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

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

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

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

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

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

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

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

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

  4. Создайте профиль для вашего целевого объекта MatterExtension .

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

Сгенерируйте идентификатор клиента OAuth и включите Home API

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

Сгенерируйте идентификатор клиента OAuth

  1. В консоли Google Cloud перейдите на панель выбора проектов и выберите проект, который вы хотите использовать для создания учетных данных OAuth.
  2. Перейдите на страницу API и сервисы, нажав кнопку меню в левом верхнем углу > Просмотреть все продукты > API и сервисы .
  3. В навигационном меню нажмите Учетные данные .
  4. Если вы еще не настроили экран согласия для этого проекта Google Cloud, появится кнопка Настроить экран согласия . В этом случае настройте экран согласия, используя следующую процедуру. Если экран согласия OAuth уже настроен и его статус публикации — Тестирование , убедитесь, что тестовые учетные записи, которые вы будете использовать, добавлены в группу Тестовые пользователи . В противном случае перейдите к следующему шагу.

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

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

    1. Нажмите кнопку СОЗДАТЬ УЧЕТНЫЕ ДАННЫЕ и выберите Идентификатор клиента OAuth .
      1. В поле «Тип приложения» выберите iOS .
    2. Введите Bundle ID с идентификатором вашего приложения и Apple Developer Team ID . Остальные поля необязательны и могут быть оставлены пустыми.
    3. Нажмите CREATE и запишите созданный Client ID или DOWNLOAD PLIST . Это будет использоваться позже для включения функциональности потока разрешений. Для получения дополнительной информации см. раздел Создание учетных данных авторизации .

Включить Home API

Разрешить доступ к API Home.

  1. На вкладке API и службы нажмите Включенные API и службы .
  2. Нажмите ВКЛЮЧИТЬ API И СЕРВИСЫ в верхней части страницы.
  3. Найдите HOME API и выберите его.
  4. На странице сведений о Home API нажмите ВКЛЮЧИТЬ .

Загрузить исходный код

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

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

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

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

Настройте SDK

Для сборки проекта примера приложения требуется некоторая дополнительная информация. Это включает локальное добавление файлов SDK Framework, заполнение информации об идентификаторе вашего аккаунта разработчика и заполнение вашего идентификатора клиента OAuth.

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

Чтобы загрузить iOS SDK Home API, вам необходимо сначала войти в систему Google Home Developers.

Войдите сейчас!

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

  1. На панели навигации Xcode выберите файл GoogleHomeAPISampleIOS , чтобы изменить конфигурацию проекта.

    Настройте пример приложения SDK

  2. Нажмите вкладку «Общие» вверху и выберите целевой GoogleHomeAPISampleIOS слева.

  3. Прокрутите вниз, пока не увидите раздел Frameworks, Libraries, and Embedded Content . Вы должны увидеть два перечисленных Home API Frameworks.

  4. В столбце Embed выберите Embed & Sign для GoogleHomeSDK.xcframework . Другой фреймворк, GoogleHomeTypes.xcframework , следует оставить как Do Not Embed .

  5. Внизу списка нажмите значок + .

  6. При появлении запроса найдите SafariServices.framework и нажмите «добавить» . Убедитесь, что столбец «Встроить» установлен на «Не встраивать» для этой записи.

    Встроить и подписать

  7. Щелкните MatterAddDeviceExtension в разделе «Цель» , чтобы изменить ее цель.

  8. Прокрутите вниз, пока не увидите раздел Frameworks and Libraries . Вы должны увидеть GoogleHomeSDK.xcframework в списке.

  9. В столбце «Встроить» выберите «Не встраивать» .

  10. Настройте идентификаторы разработчика и клиента OAuth:

    1. В панели навигации найдите папку GoogleHomeAPISampleIOS и откройте файл Info.plist для редактирования.
  11. В файле Info.plist заполните GIDClientID своим идентификатором клиента OAuth (см. раздел «Настройка согласия OAuth» ), номером облачного проекта, соответствующим вашему облачному проекту, а GIDTeamIDидентификатором команды разработчиков Apple для учетной записи разработчика, использованной во время процесса регистрации OAuth.

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

    1. На панели навигации Xcode выберите файл проекта GoogleHomeAPISampleIOS , чтобы изменить конфигурацию проекта.
    2. Нажмите вкладку «Подписание и возможности» вверху и выберите целевой GoogleHomeAPISampleIOS слева в разделе «ЦЕЛИ».
    3. На вкладке «Подписание и возможности» нажмите «+Возможности» и найдите App Attest .
    4. Нажмите App Attest , чтобы добавить. Если эта возможность отсутствует в поиске, возможно, проект уже добавил ее.
  13. Добавьте возможность групп приложений .

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

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

    1. Для успешного запуска и развертывания примера приложения на оборудовании с использованием сертификатов разработчика и профилей обеспечения вам потребуется предоставить уникальный идентификатор пакета. Это должен быть тот же идентификатор, который связан с вашими учетными данными клиента OAuth (см. выше).
    2. На панели навигации Xcode выберите файл проекта GoogleHomeAPISampleIOS , чтобы изменить конфигурацию проекта.
    3. Нажмите вкладку «Подписание и возможности» вверху и выберите целевой GoogleHomeAPISampleIOS слева в разделе «ЦЕЛИ».
    4. Выберите поле «Идентификатор пакета» в разделе «Подписание» и введите уникальный идентификатор приложения.
    5. Выберите или установите профиль обеспечения, связанный с этим пакетом, с требуемыми правами.
    6. Повторите эти шаги для цели MatterAddDeviceExtension , чтобы ввести идентификатор пакета для расширения и импортировать его зарегистрированный профиль подготовки.
  15. Обновите зарегистрированный идентификатор группы приложений в коде.

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

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

    • GoogleHomeAPISampleIOS.swift при инициализации SDK.
    • RequestHandler.swift
    • CommissioningManager.swift