У вас уже 10 000 пользователей, а push-уведомления отправляются с задержками и без аналитики? Такая проблема знакома: бэкенд-команда отправляет уведомления напрямую через APNs/FCM, и это превращается в зоопарк — отдельный код для iOS, отдельный для Android, нет аналитики открытий, нет сегментов, ретраи написаны вручную. В итоге доставка падает до 85%, а кастомная реализация отнимает 3–4 недели. OneSignal решает весь этот стек единым API и SDK. Мы реализовали десятки таких интеграций под ключ — с нуля или с миграцией от встроенной логики. В среднем OneSignal ускоряет внедрение в 5 раз: 5 дней вместо 3 недель. Экономия времени — до 70% по сравнению с самостоятельной разработкой. Как подтверждает документация OneSignal, средний delivery rate составляет 99.9%.
Как OneSignal решает проблему единого API?
OneSignal SDK версии 5.x перешёл на модульную архитектуру: OneSignal.User, OneSignal.Notifications, OneSignal.InAppMessages — отдельные неймспейсы. Это важно при обновлении с версии 3.x, где всё было плоским API. Миграция не тривиальная: sendTag заменился на OneSignal.User.addTag, setExternalUserId — на OneSignal.login. Ниже — ициализация для iOS и Android.
// iOS — AppDelegate.swift
OneSignal.initialize("YOUR_APP_ID", withLaunchOptions: launchOptions)
OneSignal.Notifications.requestPermission({ accepted in
print("Permission granted: \(accepted)")
}, fallbackToSettings: true) // Android — Application.kt
OneSignal.initWithContext(this, "YOUR_APP_ID")
OneSignal.Notifications.requestPermission({ accepted ->
Log.d("OneSignal", "Permission: $accepted")
}, this, true) Почему OneSignal выгоднее собственной интеграции?
| Критерий | APNs/FCM напрямую | OneSignal |
|---|---|---|
| Код на платформу | Отдельный для iOS и Android | Единый SDK |
| Сегментация | Только через бэкенд | Встроенная в Dashboard |
| Аналитика открытий | Нужно писать с нуля | Готовая delivery/click/influenced open |
| Ретраи при ошибках | Ручная реализация | Автоматические с экспоненциальной задержкой |
| A/B-тестирование | Не поддерживается | Встроенное без кода |
Собственная интеграция обходится в 2–3 недели разработки плюс постоянные доработки. OneSignal — 3–5 дней, и аналитика с сегментами идут «из коробки». Экономия времени — до 70%, а конверсия от push-уведомлений возрастает в 2–3 раза за счёт правильной сегментации.
Как настроить OneSignal за 5 шагов
- Создайте проект в OneSignal Dashboard и сгенерируйте ключи APNs/FCM.
- Установите SDK через CocoaPods/Swift Package Manager для iOS или Gradle для Android.
- Инициализируйте SDK с
app_idи настройте permission (см. примеры выше). - Реализуйте обработчик открытия уведомлений для deep linking.
- Добавьте теги для сегментации и протестируйте отправку через REST API.
Как идентифицировать пользователей и настроить теги?
По умолчанию OneSignal создаёт анонимный Player ID (device-level идентификатор). Для бизнес-логики нужна привязка к пользователю системы:
// После логина пользователя
OneSignal.login("user_internal_id_12345")
// Атрибуты для сегментации
OneSignal.User.addTag("plan", "premium")
OneSignal.User.addTag("city", "kyiv")
OneSignal.User.addTag("last_purchase_days", "3")Теги — основа для сегментации в дальнейшем. Их стоит проектировать заранее: 10–15 ключевых тегов достаточно для большинства сценариев. Если теги разрознены, аналитика теряет точность.
Отправка через REST API
Серверная часть — HTTP REST. Минимальный запрос на отправку по external_id:
POST https://onesignal.com/api/v1/notifications
{
"app_id": "YOUR_APP_ID",
"include_aliases": {
"external_id": ["user_12345"]
},
"target_channel": "push",
"contents": {
"en": "Your order is ready",
"ru": "Ваш заказ готов"
},
"data": {
"order_id": "98765",
"screen": "order_detail"
}
}Поле data — payload для deep link. На мобильном клиенте его обрабатывает OSNotificationOpenedHandler:
// iOS OneSignal.Notifications.addClickListener { event in
if let orderId = event.notification.additionalData?["order_id"] as? String {
AppRouter.navigate(to: .orderDetail(id: orderId))
}
} Доставка и аналитика
OneSignal предоставляет delivery rate (99.9% в среднем), click rate, influenced opens (пользователь открыл приложение в течение 60 секунд без клика). Для e-commerce это важная метрика — уведомление сработало, но пользователь открыл приложение иначе. Если нужна более глубокая аналитика — OneSignal интегрируется с Mixpanel, Amplitude через outcome events. Например, отправка события покупки: OneSignal.Session.addOutcome("purchase_completed") и addOutcomeWithValue("purchase_amount", 149.99). Эти данные позволяют строить воронки и оценивать ROI push-кампаний.
Что входит в интеграцию под ключ
| Этап | Описание |
|---|---|
| Аналитика текущей схемы | Аудит существующих push-решений (APNs/FCM/самописные) |
| Настройка аккаунта OneSignal | Создание проекта, генерация ключей APNs/FCM |
| Интеграция SDK | Инициализация, permission, обработка открытий |
| Настройка тегов и сегментов | Разработка модели данных для сегментации |
| Серверная интеграция | Подключение REST API, шаблоны уведомлений |
| Тестирование и аналитика | Проверка доставки, настройка outcome events |
| Документация и обучение | Docker-compose для локального тестирования, описание API |
Сроки и как начать
Базовая интеграция OneSignal SDK (iOS + Android или Flutter/RN), настройка APNs/FCM сертификатов, привязка external user ID, обработчик открытий — 3–5 рабочих дней. Если добавляется серверная логика отправки, настройка сегментов и шаблонов в OneSignal Dashboard — ещё 2–3 дня.
Закажите аудит текущей архитектуры push-уведомлений. Свяжитесь с нами для консультации: наши инженеры с 5+ годами опыта оценят ваш проект и предложат оптимальный план. Обратитесь к нам, и мы настроим OneSignal под ваш стек за считанные дни.







