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

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

Предварительные условия

Убедитесь, что у вас есть минимальные требования для использования 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, поддерживающий Home API .
  6. Пограничный маршрутизатор Thread, если вашему устройству требуется Thread, а ваш концентратор не имеет такой возможности.
  7. По крайней мере один поддерживаемый тип устройства .

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

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

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

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

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

Дополнительные сведения см. в разделе «Создание профиля обеспечения разработки» компании Apple в профилях обеспечения.

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

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

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

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

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

    1. Определите идентификатор пакета приложения для вашего MatterExtension . Идентификатор должен быть унаследован от идентификатора приложения. Например, его можно отформатировать как com.company.HomeApiSample.MatterExtension .
    2. Зарегистрируйте свой идентификатор приложения . При появлении запроса добавьте возможность группы приложений .
    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. Нажмите кнопку CREATE CREDENTIALS и выберите идентификатор клиента OAuth .
      1. В разделе «Тип приложения» выберите iOS .
    2. Введите идентификатор пакета с идентификатором вашего приложения и идентификатором группы разработчиков Apple . Остальные поля являются необязательными и их можно оставить пустыми.
    3. Нажмите «СОЗДАТЬ» и запишите созданный идентификатор клиента или «СКАЧАТЬ PLIST» . Это будет использоваться позже для включения функции потока разрешений. Дополнительные сведения см. в разделе Создание учетных данных для авторизации .

Включите домашние API

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

  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.

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

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

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

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

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

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

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

  3. Прокрутите вниз, пока не увидите раздел «Платформы, библиотеки и встроенный контент» . Вы должны увидеть в списке две платформы Home API.

  4. В столбце «Встроить» выберите «Встроить и подписать для GoogleHomeSDK.xcframework . Для другой платформы, GoogleHomeTypes.xcframework , следует оставить значение Do Not Embed .

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

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

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

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

  8. Прокрутите вниз, пока не увидите раздел «Платформы и библиотеки» . Вы должны увидеть в списке GoogleHomeSDK.xcframework .

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

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

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

  12. Настройте систему сборки:

    Добавить флаги компоновщика

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

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

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

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

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

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

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

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