# Получение push-уведомлений на iOS

Push-уведомления на iOS отправляются через Apple Push Notification service (APNs).

Для **iOS** используются сертификаты **APNs** двух типов: **dev** (нужен в процессе разработки) и **dist** (используется **как в процессе разработки, так и для стандартной работы приложения**). Формат сертификата обязательно должен быть `.p12`.

## Выбор окружения APNs (dev / dist)

Какой тип уведомлений будет отправлять сервер, определяется параметрами **account config**:

  * `send_dev_ios_pushes` — отправка через **APNs Sandbox**.

  * `send_dist_ios_pushes` — отправка через **APNs Production**.

!!! Warning "Внимание!"
    Одновременно должен быть включён только один режим: либо `send_dev_ios_pushes`, либо `send_dist_ios_pushes`.

Как изменить параметр: см. [Редактор настроек аккаунта (account config)](https://webim.ru/kb/for-admins/service-pages/account-config-editor.html).

!!! Note "N.B."
    Для выполнения следующих действий требуется действительный аккаунт [разработчика Apple](https://developer.apple.com/), устройство **Mac** c [Xcode](https://developer.apple.com/xcode/) и действительный сертификат разработчика, установленный в **Цепочку ключей** (**Keychain**).

Для получения сертификатов **APNs** выполните следующие действия:

  1. Выполните вход в [Apple Developer Center](https://developer.apple.com/account/resources/identifiers/list/bundleId) и выберите раздел **Identifiers**, затем нажмите на кнопку со значком плюса.

  1. Выберите **App IDs** и нажмите **Continue**.

    ![Регистрация App ID в Apple Developer](https://webim.ru/kb/img/mobile/push-notifications/app-id-register.webp)

  1. Заполните форму нового **App ID**: введите **Description** (описание) вашего **App ID**, в поле **Bundle ID** выберите **Explicit** и укажите в строке ввода **Bundle ID** в виде обратного доменного имени, например `com.push.webim.test` (т.е. `test.webim.push.com` в обратном порядке).

    ![Описание App ID](https://webim.ru/kb/img/mobile/push-notifications/app-id-description.webp)

  1. На этой же странице в списке **Capabilities** отметьте функциональность, которую вы реализуете в вашем приложении, а также **Push Notifications**, затем нажмите **Continue**.

    ![Включение capability Push Notifications](https://webim.ru/kb/img/mobile/push-notifications/choosing-push.webp)

    !!! Note "N.B."
        Убедитесь, что вы создали **App ID** без подстановочного знака. Для идентификаторов с подстановочным знаком нельзя использовать службу push-уведомлений. Не путайте **App ID** и **Bundle ID**: **Bundle ID** имеет вид `com.company.appname` и определён в `info.plist`.

  1. Подтвердите настройки **App ID**, нажав **Register**.

  1. Вернитесь в раздел **Identifiers** и выберите только что созданный вами **App ID**.

    ![Возврат к списку идентификаторов](https://webim.ru/kb/img/mobile/push-notifications/back-to-identifiers.webp)

  1. Прокрутите до **Push Notifications** и нажмите **Configure**.

  1. В секции **Development SSL Certificate** нажмите **Create Certificate**.

    ![Выбор типа сертификата Apple](https://webim.ru/kb/img/mobile/push-notifications/certificate-choose.webp)

    Далее откроется форма создания сертификата. Для создания сертификата потребуется CSR-файл, сгенерированный на вашем устройстве **Mac**.

  1. Откройте на **Mac** сервис **Keychain Access**. В шапке приложения (полоска сверху) нажмите **Keychain Access** и перейдите в **Create Assistant -> Request a Certificate From a Certificate Authority**.

    ![Создание пары ключей в связке ключей](https://webim.ru/kb/img/mobile/push-notifications/keychain.webp)

  1. В окне информации о сертификате заполните форму, указав ваш Email и имя. Выберите сохранение на диске и нажмите **Continue**. CSR-файл будет создан и сохранён на устройстве **Mac**.

    ![Мастер создания запроса на сертификат (CSR)](https://webim.ru/kb/img/mobile/push-notifications/csr-creating.webp)

  1. Вернитесь на открытую страницу **Apple Developer Center**. В форме создания сертификата нажмите **Choose File** и загрузите с устройства созданный CSR-файл. Нажмите **Continue**.

    ![Форма создания сертификата Apple](https://webim.ru/kb/img/mobile/push-notifications/create-certificate-form.webp)

  1. Далее появится страница, где будет отображена информация о новом APNs-сертификате (имя сертификата, дата окончания действия, тип сертификата и информация о создателе сертификата). Нажмите **Download**, чтобы загрузить его.

    ![Загрузка сертификата с портала Apple](https://webim.ru/kb/img/mobile/push-notifications/certificate-downloading.webp)

  1. Откройте **Keychain Access** в разделе **Login -> Certificates** появится только что загруженный APNs-сертификат. Выберите его и нажмите **Export**.

    ![Сертификат в связке ключей macOS](https://webim.ru/kb/img/mobile/push-notifications/certificate-in-keychain.webp)

    ![Экспорт сертификата из связки ключей](https://webim.ru/kb/img/mobile/push-notifications/export-certificate.webp)

  1. В форме экспорта укажите формат `.p12`.

    ![Сохранение сертификата в формате p12](https://webim.ru/kb/img/mobile/push-notifications/saving-as-p12.webp)

  1. Нажмите **Save**. Далее **Mac OS** попросит вас подтвердить сохранение: в первой форме просто нажмите **Enter**, в следующей введите ваш пароль администратора и нажмите **Allow**.

Чтобы создать production-сертификат для вашего iOS-приложения, выполните пункты 6-14 этой инструкции, но в пункте 8 нажмите **Create Certificate** в секции **Production SSL Certificate**.

!!! Warning "Внимание!"
    В систему можно загрузить сертификаты обоих типов, одновременно может быть включен только один тип уведомлений: либо dist, либо dev.

!!! Note "N.B."
    После создания сертификата(ов), также убедитесь, что в проекте вашего iOS-приложения в **Xcode** включено **Automatic signing**, а в разделе **Capabilities** вашего проекта включены push-уведомления.

В версии **Webim** 10.1 стало возможным добавлять сертификаты APNs через интерфейс **Консоли управления** (см. Сертификаты).

---

Источник: https://webim.ru/kb/mobile/push-notifications/push-notifications-ios.html
