В небольшом приложении миграция с OneSignal SDK — это замена 1 вызова инициализации и обработчика кликов. В большом приложении OneSignal сидит в десятках мест: теги выставляются в модуле профиля, external user ID — в авторизации, обработчики кликов — в навигации, in-app триггеры — где-то в чекауте.

Пропустите 1 из этих вызовов — и ничего не упадёт. Сегменты тихо поплывут, deep links начнут открывать главный экран, а пуш, который раньше возвращал пользователей, перестанет приходить.

В этом гайде — 9 инструментов, которые делают замену безопасной, сгруппированных по 5 шагам миграции: найти, заменить, протестировать, раскатить и мониторить. Подборка рассчитана на команды, которые ведут iOS- и Android-версии параллельно и выпускают релизы для пользователей в разных странах.

О стороне провайдера читайте в нашем полном гайде по миграции с OneSignal на Pushwoosh.

Почему миграция push SDK ломается в больших приложениях

Push SDK затрагивает больше кода, чем большинство сторонних библиотек. Обычно ломаются 4 вещи:

  • Разбросанные вызовы. Теги, external user ID и обработчики кликов живут в разных модулях, иногда в разных репозиториях. Текстовый поиск по «OneSignal» находит очевидные вызовы и пропускает обёртки.
  • Скрытые зависимости. На колбэки SDK часто завязаны аналитические события, deep links и A/B-тесты. Удалите колбэк — и где-то ниже по цепочке дашборд уйдёт в ноль.
  • 2 SDK, 1 билд. 2 push SDK в 1 приложении конкурируют за одни и те же колбэки уведомлений. Поэтому гайд по миграции на Pushwoosh советует удалять OneSignal SDK в том же релизе, в котором добавляется новый.
  • Тихие сбои. Недоставленный пуш не выбрасывает ошибку. Краш-репорты остаются чистыми.

Процесс миграции по шагам

У каждого шага свой сценарий сбоя и свои инструменты.

ШагЧто может пойти не такИнструменты
1. НайтиПропущен вызов OneSignal или зависимостьCodeAlive
2. ЗаменитьТокены, теги или user ID не переносятсяPushwoosh
3. ПротестироватьРегистрация или payload ломаются до релизаApple Push Notifications Console, Firebase Cloud Messaging, Proxyman
4. РаскатитьПлохой билд сразу получают все пользователиfastlane, phased release в App Store и staged rollouts в Google Play
5. МониторитьКраши или падение доставки остаются незамеченнымиFirebase Crashlytics, статистика сообщений Pushwoosh
Шаг
1 / 5
1. Найти
Что может пойти не так
Пропущен вызов OneSignal или зависимость
Инструменты
CodeAlive
Шаг
2 / 5
2. Заменить
Что может пойти не так
Токены, теги или user ID не переносятся
Инструменты
Pushwoosh
Шаг
3 / 5
3. Протестировать
Что может пойти не так
Регистрация или payload ломаются до релиза
Инструменты
Apple Push Notifications Console, Firebase Cloud Messaging, Proxyman
Шаг
4 / 5
4. Раскатить
Что может пойти не так
Плохой билд сразу получают все пользователи
Инструменты
fastlane, phased release в App Store и staged rollouts в Google Play
Шаг
5 / 5
5. Мониторить
Что может пойти не так
Краши или падение доставки остаются незамеченными
Инструменты
Firebase Crashlytics, статистика сообщений Pushwoosh

9 инструментов для безопасной миграции с OneSignal SDK

ИнструментШагКакую задачу решаетБесплатный уровеньМодель цены
CodeAliveНайтиНаходит каждый вызов OneSignal и его зависимости в больших кодовых базах, даёт AI-агентам полный контекстДа: 1 пользователь, 25 МБ репозиториев, 100 запросов в чат/мес.От $15/мес., по использованию
PushwooshЗаменитьЦелевая push-платформа с импортом аудитории и SDK для нативных и кросс-платформенных приложенийПервые 1 000 MAU бесплатно на push-only$7 за 1 000 MAU (Push only)
Apple Push Notifications ConsoleПротестироватьОтправляет тестовые пуши через APNs, проверяет токены, показывает логи доставкиВходит в членство Apple Developer ProgramБез отдельной платы
Firebase Cloud MessagingПротестироватьОтправляет тестовое сообщение на конкретный FCM-токенДа, бесплатноБесплатно
ProxymanПротестироватьПоказывает сетевой трафик SDK и payloadБесплатно с ограничениями (2 недели пробного периода для бизнеса)От $89 единоразово
fastlaneРаскатитьАвтоматизирует релизы с опциями phased release и rolloutOpen sourceOpen source
Phased release в App Store / staged rollouts в Google PlayРаскатитьОграничивает новый билд долей пользователейВстроено в сторыВключено
Firebase CrashlyticsМониторитьКраши и нефатальные ошибки после заменыДа, бесплатноБесплатно
Статистика сообщений PushwooshМониторитьОтправки, доставки, открытия и ошибки по платформамВходит в PushwooshВключено
Инструмент
1 / 9
CodeAlive
Шаг
Найти
Какую задачу решает
Находит каждый вызов OneSignal и его зависимости в больших кодовых базах, даёт AI-агентам полный контекст
Бесплатный уровень
Да: 1 пользователь, 25 МБ репозиториев, 100 запросов в чат/мес.
Модель цены
От $15/мес., по использованию
Инструмент
2 / 9
Pushwoosh
Шаг
Заменить
Какую задачу решает
Целевая push-платформа с импортом аудитории и SDK для нативных и кросс-платформенных приложений
Бесплатный уровень
Первые 1 000 MAU бесплатно на push-only
Модель цены
$7 за 1 000 MAU (Push only)
Инструмент
3 / 9
Apple Push Notifications Console
Шаг
Протестировать
Какую задачу решает
Отправляет тестовые пуши через APNs, проверяет токены, показывает логи доставки
Бесплатный уровень
Входит в членство Apple Developer Program
Модель цены
Без отдельной платы
Инструмент
4 / 9
Firebase Cloud Messaging
Шаг
Протестировать
Какую задачу решает
Отправляет тестовое сообщение на конкретный FCM-токен
Бесплатный уровень
Да, бесплатно
Модель цены
Бесплатно
Инструмент
5 / 9
Proxyman
Шаг
Протестировать
Какую задачу решает
Показывает сетевой трафик SDK и payload
Бесплатный уровень
Бесплатно с ограничениями (2 недели пробного периода для бизнеса)
Модель цены
От $89 единоразово
Инструмент
6 / 9
fastlane
Шаг
Раскатить
Какую задачу решает
Автоматизирует релизы с опциями phased release и rollout
Бесплатный уровень
Open source
Модель цены
Open source
Инструмент
7 / 9
Phased release в App Store / staged rollouts в Google Play
Шаг
Раскатить
Какую задачу решает
Ограничивает новый билд долей пользователей
Бесплатный уровень
Встроено в сторы
Модель цены
Включено
Инструмент
8 / 9
Firebase Crashlytics
Шаг
Мониторить
Какую задачу решает
Краши и нефатальные ошибки после замены
Бесплатный уровень
Да, бесплатно
Модель цены
Бесплатно
Инструмент
9 / 9
Статистика сообщений Pushwoosh
Шаг
Мониторить
Какую задачу решает
Отправки, доставки, открытия и ошибки по платформам
Бесплатный уровень
Входит в Pushwoosh
Модель цены
Включено

Шаг 1. Найдите каждый вызов OneSignal

1. CodeAlive: лучший для поиска вызовов SDK в больших и мультирепозиторных кодовых базах

CodeAlive — контекстный движок для кодовой базы

CodeAlive даёт AI-агентам для написания кода точный контекст по всей кодовой базе и сокращает токены, которые они тратят на его поиск. Это контекстный движок для кодовых баз от 1M+ строк: семантический поиск плюс граф связей между файлами, символами, вызовами, зависимостями и тестами, доступный через MCP и API.

Что он делает при миграции: до того как кто-то начнёт править код, вы спрашиваете CodeAlive, где используется OneSignal и что от него зависит. Граф связей показывает вызовы помимо очевидных: обёртки, колбэки, на которых держится аналитика, тесты с моками SDK. Тот же контекст получает AI-агент, который делает замену.

Ключевые функции:

  • Гибридный поиск: семантический поиск, лексическое совпадение и обход графа в 1 запросе
  • Индекс обновляется при каждом push, поэтому карта остаётся актуальной, пока ветка миграции движется
  • MCP-инструменты, включая semantic_search, grep_search и chat, для Cursor, Claude Code, Codex, Windsurf, Zed, Continue и Cline
  • AI-ревью pull request с учётом всей системы
  • Git-провайдеры: GitHub, GitLab, Bitbucket, Azure DevOps, Gitea. IDE: VS Code и JetBrains

Плюсы:

  • Находит зависимости между репозиториями
  • Работает внутри агентов и IDE, которыми ваша команда уже пользуется

Шаг 2. Замените SDK и перенесите аудиторию

2. Pushwoosh: лучший как целевая платформа с импортом аудитории

Pushwoosh — платформа вовлечения пользователей

Pushwoosh — платформа вовлечения пользователей с push, in-app, email, SMS и WhatsApp. При миграции команда Pushwoosh импортирует вашу аудиторию, пока ваши разработчики выпускают новый SDK.

Что он делает при миграции: push-токены iOS, Android и Huawei импортируются и продолжают работать, потому что токены принадлежат вашему приложению и вашим ключам. Подписчики email и SMS тоже переносятся при импорте. external_user_id сопоставляется с User ID в Pushwoosh (запросите эту колонку в экспорте OneSignal, в стандартный экспорт она не входит), а теги воссоздаются из вашего экспорта. Исключение — web push: браузерные подписки не может перенести ни один провайдер, поэтому Pushwoosh Web SDK тихо переподписывает посетителей.

Ключевые функции:

  • SDK для iOS и Android, плюс React Native, Flutter, Unity, Capacitor, Cordova, MAUI, Expo и другие
  • Импорт аудитории параллельно с релизом SDK, поэтому устройства доступны ещё до того, как пользователи обновятся
  • Тестовые устройства, чтобы посмотреть пуш на реальном устройстве до отправки

Плюсы:

  • Импорт не ждёт, пока пользователи обновят приложение из стора
  • Около дня работы с SDK для 1 разработчика, по данным гайда по миграции

Цены: тариф push-only — $7 за 1 000 MAU, первые 1 000 MAU бесплатно. Сравните с текущим счётом в калькуляторе стоимости OneSignal.

👉

Сравните платформы напрямую: Pushwoosh vs OneSignal или посмотрите расширенный список альтернатив OneSignal со сравнением цен и лимитов.

Шаг 3. Протестируйте регистрацию и доставку

3. Apple Push Notifications Console: лучший для тестирования доставки на iOS через APNs

Apple Push Notifications Console

Push Notifications Console — веб-инструмент Apple для отправки тестовых уведомлений через APNs. Быстрый способ исключить провайдера, когда iOS-пуш не приходит.

Что он делает при миграции: вы отправляете пуш напрямую на токен устройства и проверяете, принял ли его APNs и доставил ли. Если отсюда пуш приходит, а от нового провайдера — нет, сначала проверьте конфигурацию провайдера.

Ключевые функции:

  • Тестовые уведомления на устройство, с повторной отправкой после изменения атрибутов
  • Логи доставки, которые показывают путь уведомления через APNs, для development-окружения
  • Проверка токена для конкретного окружения и типа пуша
  • Метрики доставки для тестовых и production-уведомлений

Плюсы:

  • Напрямую от Apple, без третьей стороны
  • Проверяет push-токены до того, как вы начнёте винить SDK

4. Firebase Cloud Messaging: лучший для тестирования Android-пушей по токену

Тестовое сообщение в Firebase Cloud Messaging

Android-пуши на устройствах с сервисами Google Play идут через Firebase Cloud Messaging (устройства Huawei без сервисов Google используют HMS Push Kit). Консоль Firebase умеет отправлять тестовое сообщение на 1 регистрационный токен, так что это простой инструмент для тестирования пуш-уведомлений в Android-билдах.

Что он делает при миграции: после того как новый SDK зарегистрировал устройство, вы вставляете его FCM-токен в консоль и отправляете тест. Если сообщение пришло, токен и настройка Firebase в порядке.

Ключевые функции:

  • Send test message на конкретный регистрационный FCM-токен из консоли
  • Без кода для быстрой проверки — нужно только прочитать токен с устройства

Плюсы:

  • Cloud Messaging бесплатен
  • Android-пуши и так идут через него

5. Proxyman: лучший для просмотра трафика и payload SDK

Proxyman — HTTP-прокси для отладки

Proxyman — HTTP-прокси для отладки на macOS, Windows и Linux. Он показывает, что push SDK на самом деле отправляет: вызовы регистрации, обновления user ID, запросы с тегами.

Что он делает при миграции: вы запускаете приложение с новым SDK и смотрите его запросы. Если тег так и не уходит с устройства, вы увидите это здесь — задолго до того, как сегмент окажется пустым.

Ключевые функции:

  • Перехват HTTPS-трафика приложений на устройствах, симуляторах и эмуляторах
  • Перехват в iOS Simulator и Android Emulator в один клик на платных тарифах
  • Breakpoints и Map Local/Remote, чтобы править запросы и ответы

Шаг 4. Раскатывайте поэтапно

6. fastlane: лучший для автоматизации поэтапных релизов

fastlane — автоматизация релизов

fastlane — open source-платформа для автоматизации деплоя iOS и Android. Для миграции его ценность — в 2 параметрах, которые можно прописать в release lane.

Что он делает при миграции: upload_to_app_store принимает phased_release: true — обновление выкатывается за 7 дней. upload_to_play_store принимает значение rollout — долю пользователей, которые получат билд (0.1 — это 10%; 1 завершает раскатку). Миграционный релиз каждый раз идёт по одному и тому же поэтапному пути, и никто не забывает поставить галочку.

Ключевые функции:

  • deliver / upload_to_app_store с phased_release
  • supply / upload_to_play_store с rollout и release_status (включая halted)
  • 1 lane для обоих сторов

Плюсы:

  • Open source
  • Делает поэтапную раскатку поведением по умолчанию, а не ручным шагом

7. Phased release в App Store и staged rollouts в Google Play: лучший способ ограничить радиус поражения

Настройки phased release в App Store
Настройки staged rollout в Google Play

Оба стора умеют сначала отдавать обновление части пользователей. Какими бы инструментами релиза вы ни пользовались, это страховка для замены push SDK.

Что он делает при миграции: новый билд с Pushwoosh получает небольшая доля пользователей. Если доставки или краш-рейт выглядят плохо, вы останавливаете раскатку до того, как билд дойдёт до всех. Тем временем OneSignal продолжает отправлять пользователям, которые ещё не обновились, так что никто не пропустит кампанию.

Ключевые функции:

  • App Store: выкатывает обновление за 7 дней на 1%, 2%, 5%, 10%, 20%, 50%, затем 100% пользователей с автообновлением. Можно поставить на паузу суммарно до 30 дней или выпустить для всех в любой момент
  • Google Play: вы задаёте процент и повышаете его вручную. Раскатку можно остановить и возобновить, а пользователи, которые уже обновились, остаются на этом билде
  • Случайная выборка пользователей в обоих сторах

Плюсы:

  • Встроено в сторы
  • Плохой билд можно остановить на 1% пользователей

Шаг 5. Мониторьте краши и доставку

8. Firebase Crashlytics: лучший, чтобы ловить краши после замены

Дашборд Firebase Crashlytics

Firebase Crashlytics собирает краши и нефатальные ошибки из приложений на Android, Apple, Flutter и Unity. Держите его включённым на всё время раскатки и сравнивайте новый билд с предыдущим.

Что он делает при миграции: краш в обработчике уведомлений или при инициализации SDK первым появится здесь. Нефатальные события помогают с более тихими проблемами: залогируйте non-fatal, когда регистрация пуша не удалась, — и вы увидите это по каждому билду.

Ключевые функции:

  • Краш-репорты, сгруппированные в issues, с фильтром по билду
  • Нефатальные события, которые логируются на устройстве и отправляются при следующем запуске приложения
  • Официальные SDK для Android, Apple, Flutter и Unity

9. Статистика сообщений Pushwoosh: лучший способ заметить тихое падение доставки

Статистика пуш-уведомлений в Pushwoosh

Краш-репорты не скажут, что пуши перестали приходить. Статистика пуш-уведомлений Pushwoosh — скажет.

Что он делает при миграции: по каждому пушу вы видите воронку от аудитории к отправкам, доставкам и открытиям по платформам, плюс отдельную вкладку с ошибками. Сравните первые кампании после переключения со своими цифрами из OneSignal до него. Если доставки на iOS отстают от Android, сначала проверьте credentials, а потом уже код.

План миграции из 5 шагов для больших приложений

Соберите все вызовы OneSignal до того, как трогать код

Составьте список всех вызовов SDK, обёрток, колбэков и тестов во всех репозиториях. Этот список станет чек-листом для замены и для код-ревью.

Спрячьте push за 1 внутренним интерфейсом

Пропускайте все вызовы push через единый внутренний сервис: login, logout, теги, обработку уведомлений. Тогда миграция меняет 1 реализацию вместо 50 мест вызова, а следующая смена провайдера тоже станет проще.

protocol PushService {
func login(userId: String)
func setTags(_ tags: [String: Any])
func handleNotificationOpen(_ payload: [AnyHashable: Any])
}

Меняйте SDK в 1 релизе

Добавьте Pushwoosh SDK и удалите OneSignal SDK в одном и том же билде. 2 push SDK в 1 приложении конкурируют за колбэки уведомлений. Пока новый билд раскатывается, продолжайте отправлять из OneSignal пользователям старой версии.

Выпускайте поэтапно и сравнивайте метрики доставки

Начните с небольшой доли пользователей через phased release или staged rollout. Следите за крашами в Crashlytics и доставками в статистике Pushwoosh, затем расширяйте раскатку.

Останавливайте отправки из OneSignal только после проверки доставки

Пока вы не перестали отправлять из OneSignal, откат означает просто продолжать отправлять из OneSignal. Отключайте его, когда подтверждены и доставка через Pushwoosh, и импорт аудитории.

🛠️

С Pushwoosh сторону провайдера берёт на себя наша команда: вы передаёте push credentials и экспорт аудитории и выпускаете новый SDK в ближайшем релизе. Полный гайд по миграции

FAQ

Сама замена SDK занимает около дня для 1 разработчика, по данным гайда по миграции на Pushwoosh. В большом приложении добавьте время на поиск всех вызовов, тестирование и поэтапную раскатку. Полный переход пользователей на новый SDK занимает недели, потому что зависит от обновлений приложения, но импорт аудитории делает устройства доступными раньше.

Pushwoosh Team
Контент-команда в Pushwoosh
Поделиться

Похожие статьи

Показать все