У вас уже 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 под ваш стек за считанные дни.







