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

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

Требования

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

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

Скачать Xcode

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

  1. Аккаунт Google.
  2. Apple ID, зарегистрированный в Apple Developer Program, чтобы создавать файлы конфигурации физических устройств. Если у вас его нет, регистрация потребует дополнительных расходов и может занять до 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 и включить Home API

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

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

  1. В консоли Google Cloud перейдите на панель выбора проекта и выберите проект, который хотите использовать для создания учетных данных OAuth.
  2. Перейдите на страницу "API и сервисы". Для этого нажмите на кнопку меню в левом верхнем углу и выберите View All Products (Посмотреть все продукты) > APIs & Services (API и сервисы).
  3. В меню навигации выберите Credentials (Учетные данные).
  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. В верхней части страницы нажмите ENABLE APIS AND SERVICES (Включить API и сервисы).
  3. Найдите и выберите HOME API.
  4. На странице сведений о Home API нажмите Включить.

Скачайте исходный код

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

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

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

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

Добавьте SDK в проект

Для сборки проекта "Пример приложения" требуется дополнительная информация. В частности, вам нужно будет добавить файлы 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. Вверху откройте вкладку Signing and Capabilities (Подпись и возможности) и в разделе TARGETS (Цели) слева выберите цель GoogleHomeAPISampleIOS.
    3. Под вкладкой Signing and Capabilities (Подпись и возможности) нажмите + Capability (+ Возможность) и найдите App Attest.
    4. Нажмите App Attest, чтобы добавить его. Если вы не можете найти эту функцию, возможно, она уже добавлена в проект.
  5. Добавьте функцию App Groups (Группы приложений).

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

    1. Перейдите в проект GoogleHomeAPISampleIOS > цель GoogleHomeAPISampleIOS.
    2. Нажмите Signing & Capabilities (Подпись и возможности) > + Capability (Добавить возможность).
    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
      ...
    }