Перейти к основному содержимому

Как подключить push-уведомления для iOS

Обновлено: 9 апреля 2026

Выберите канал push-уведомлений

  1. Перейдите в раздел Каналы в личном кабинете edna Pulse.

  2. Выберите существующий канал push-уведомлений, в котором вы хотите разместить приложение, или подключите новый.

    к сведению

    В одном канале вы можете объединить несколько приложений, пользователям которых вы хотите отправлять push-уведомления в рамках одной рассылки

    File IconКак подключить канал Push
  3. Убедитесь, что у вас есть:

    • приложение iOS с минимальной поддерживаемой версией не ниже iOS 11;
    • устройство iOS (iPhone, iPad, iPod Touch) для тестирования;
    • компьютер Мас с последней версией Xcode;
    • push-сертификат Production Apple Push Certificate;
    • утилита CocoaPods или Swift Package Manage.
    File IconКак получить пуш-сертификат в Apple и выгрузить его в формате P12

Создайте AppGroup и добавьте production-сертификат Apple

  1. Авторизуйтесь в своём аккаунте Apple developer и выберите Certificates, Identifiers & Profiles.

    developer.apple.com

  2. Откройте вкладку Identifiers в левом меню и проверьте, зарегистрирована ли AppGroup для вашего приложения.

    developer.apple.com

    Идентификатор группы должен соответствовать идентификатору приложения. Например для приложения com.edna.push.demoapp группа должна называться group.com.edna.push.demoapp.

    alt text

  3. Если группы ещё нет, нажмите 

     справа от заголовка Identifiers и зарегистрируйте новую AppGroup. Запишите или запомните идентификатор — он потребуется в дальнейшем.

    alt text

  4. Получите в Apple сертификат Production Push Certificate.

    File IconКак получить пуш-сертификат в Apple и выгрузить его в формате P12
  5. Перейдите в раздел Каналы → Настройка приложения iOS в личном кабинете edna Pulse.

  6. Введите идентификатор приложения Bundle ID.

  7. Прикрепите файл production пуш-сертификата в формате .p12 и введите пароль от него.

    alt text

    File IconКак получить пуш-сертификат в Apple и выгрузить его в формате P12
  8. Нажмите Сохранить и продолжить.

Создайте расширение Notification Service Extension

  1. В проекте приложения в Xcode добавьте новый target (FileNewTarget):

    alt text

  2. В окне Choose a template for your new target на вкладке iOS выберите тип расширения Notification Service Extension.

    alt text

  3. Для основного приложения на вкладке Signing & Capabilities подключите созданную на предыдущем шаге AppGroup: добавьте capability Push Notifications и Background ModesRemote notification.

    alt text

  4. Для расширения Notification Service Extension на вкладке Signing & Capabilities подключите AppGroup и добавьте capability Push Notifications.

    alt text

  5. В файлах Info.plist в параметре edna_app_group для приложения и расширения укажите имя AppGroup.

    alt text

Подключите библиотеки edna к проекту

Подключите библиотеки edna с помощью CocoaPods или SwiftPackageManager

Подключение библиотеки для основного приложения

https://github.com/edna-ru/push-x-ios

Подключение библиотеки для расширения Notification Service Extension

https://github.com/edna-ru/push-x-ne-ios

Интегрируйте библиотеку в коде приложения

  1. В файле AppDelegate проекта добавьте следующую строку для подключения библиотеки:

    import EDNAPushX
  2. Вставьте уникальный ключ приложения appId и инициализируйте библиотеку в методе AppDelegate applicationDidFinishLaunchingWithOptions. Ваш ключ appId будет находиться в блоке кода на шаге 4.2 интерактивной инструкции по настройке приложения.

    func application(_ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // appId – Уникальный ключ приложения
    let appId =
    "Вставьте appId вашего приложения из edna Pulse"
    // auto_register - Автоматически показывать диалог с запросом на показ пуш-уведомлений
    let pushXSettings = ["auto_register": true]
    EDNAPushX.initWithLaunchOptions(options: launchOptions, appId: appId, settings: pushXSettings)
    return true
    }
  3. Передайте в библиотеку системные вызовы в методах AppDelegate didRegisterForRemoteNotificationsWithDeviceToken и didReceiveRemoteNotification:

        func application(_ application: UIApplication,
    didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    EDNAPushX.setNotificationDeviceToken(deviceToken)
    }

    func application(_ application: UIApplication, userInfo: [AnyHashable : Any],
    fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    EDNAPushX.didReceiveRemoteNotification(userInfo: userInfo, fetchCompletionHandler: completionHandler)
    }
  4. Замените код основного класса Notification Service Extension на следующий:

    import UserNotifications
    import EDNAPushXNE

    class NotificationService: UNNotificationServiceExtension {
    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler:
    @escaping (UNNotificationContent) -> Void) {
    EDNAPushXNE.didReceive(request, withContentHandler: contentHandler)
    }

    override func serviceExtensionTimeWillExpire() {
    EDNAPushXNE.serviceExtensionTimeWillExpire()
    }
    }
  5. Если пользователь нажмёт на область или кнопки уведомления, будет запущено приложение. Чтобы получить от библиотеки информацию о том, что приложение было запущено по нажатию на уведомление, в метод EDNAPushX.setOnPushAction передайте замыкание:

    EDNAPushX.setOnPushAction(block: { (action) in
    ...
    })

Метод EDNAPushX.setOnPushAction нужно вызвать до инициализации библиотеки — до вызова метода EDNAPushX.initWithLaunchOptions.

Поддержите регистрацию устройств пользователей в сервисе edna

к сведению

Устройство пользователя появится в edna Pulse после регистрации. Сейчас доступен только ручной способ регистрации.

  1. Используйте API-методы для регистрации устройств на платформе.

    File IconРегистрация пуш-устройств File IconУдаление пуш-устройств
  2. Для регистрации пользователя в сервисе вызовите метод login библиотеки, укажите идентификатор пользователя и тип идентификатора SubscriberIdType.

    Вызовите метод после успешной авторизации пользователя в вашем приложении:

    EDNAPushX.login(userIdType: .email, userId: "example@mail.com")

    Доступны следующие виды SubscriberIdType:

    • Номер телефона (PhoneNumber)
    • Адрес электронной почты (Email)
    • идентификаторы FacebookId*, TelegramId, GoogleId, AppleId, YandexId;
    • Внутренние идентификаторы пользователя (ExtUserId, CookieId)
    • UTM-метка (UTM)
  3. В момент деавторизации пользователя в приложении, вызовите метод logout библиотеки, чтобы отключить устройство пользователя в сервисе edna:

    EDNAPushX.logout()

Подключите Notification Content Extension

  1. В Xcode-проекте добавьте новый target, как и для Notification Service Extension. Далее в окне Choose a template for your new target на вкладке iOS выберите тип расширения Notification Content Extension.

    alt text

  2. Подключите библиотеку для расширения Notification Content Extension с помощью Swift Package Manager или CocoaPods.

    https://github.com/edna-io/push-x-ce-ios
  3. Замените код основного класса Notification Content Extension на следующий:

    NotificationViewController.swift
        import UIKit
    import UserNotifications
    import UserNotificationsUI
    import EDNAPushXCE

    class NotificationViewController: EDNAPushCEController{

    }
  4. Укажите название extension-категории ednaPushCategory в параметре NSExtension/NSExtensionAttributes/UNNotificationExtensionCategory файла расширения Info.plist. Уведомления, требующие расширенной вёрстки, будут отправлены с extension-категорией ednaPushCategory.

  5. В файле Info.plist в параметре edna_app_group для расширения Notification Content Extension укажите то же имя AppGroup, что и для приложения и расширения Notification Service Extension.

  6. Убедитесь, что для параметра NSExtension/NSExtensionAttributes/UNNotificationExtensionDefaultContentHidden указано значение YES (1). Данный параметр позволяет скрыть информацию из оригинального уведомления при отображении расширенного вида.

    alt text

  7. Для расширения Notification Content Extension на вкладке Signing & Capabilities подключите тот же AppGroup, что и для приложения и расширения Notification Service Extension.

  8. Перед загрузкой обновленной версии в магазин приложений не забудьте обновить декларацию о сборе данных.

    File IconЗаполнение декларации о сборе данных