В небольшом приложении миграция с 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 |
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 и rollout | Open source | Open source |
| Phased release в App Store / staged rollouts в Google Play | Раскатить | Ограничивает новый билд долей пользователей | Встроено в сторы | Включено |
| Firebase Crashlytics | Мониторить | Краши и нефатальные ошибки после замены | Да, бесплатно | Бесплатно |
| Статистика сообщений Pushwoosh | Мониторить | Отправки, доставки, открытия и ошибки по платформам | Входит в Pushwoosh | Включено |
Шаг 1. Найдите каждый вызов OneSignal
1. CodeAlive: лучший для поиска вызовов SDK в больших и мультирепозиторных кодовых базах
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 — платформа вовлечения пользователей с 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
Push Notifications Console — веб-инструмент Apple для отправки тестовых уведомлений через APNs. Быстрый способ исключить провайдера, когда iOS-пуш не приходит.
Что он делает при миграции: вы отправляете пуш напрямую на токен устройства и проверяете, принял ли его APNs и доставил ли. Если отсюда пуш приходит, а от нового провайдера — нет, сначала проверьте конфигурацию провайдера.
Ключевые функции:
- Тестовые уведомления на устройство, с повторной отправкой после изменения атрибутов
- Логи доставки, которые показывают путь уведомления через APNs, для development-окружения
- Проверка токена для конкретного окружения и типа пуша
- Метрики доставки для тестовых и production-уведомлений
Плюсы:
- Напрямую от Apple, без третьей стороны
- Проверяет push-токены до того, как вы начнёте винить SDK
4. Firebase Cloud Messaging: лучший для тестирования Android-пушей по токену
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-прокси для отладки на macOS, Windows и Linux. Он показывает, что push SDK на самом деле отправляет: вызовы регистрации, обновления user ID, запросы с тегами.
Что он делает при миграции: вы запускаете приложение с новым SDK и смотрите его запросы. Если тег так и не уходит с устройства, вы увидите это здесь — задолго до того, как сегмент окажется пустым.
Ключевые функции:
- Перехват HTTPS-трафика приложений на устройствах, симуляторах и эмуляторах
- Перехват в iOS Simulator и Android Emulator в один клик на платных тарифах
- Breakpoints и Map Local/Remote, чтобы править запросы и ответы
Шаг 4. Раскатывайте поэтапно
6. 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: лучший способ ограничить радиус поражения
Оба стора умеют сначала отдавать обновление части пользователей. Какими бы инструментами релиза вы ни пользовались, это страховка для замены push SDK.
Что он делает при миграции: новый билд с Pushwoosh получает небольшая доля пользователей. Если доставки или краш-рейт выглядят плохо, вы останавливаете раскатку до того, как билд дойдёт до всех. Тем временем OneSignal продолжает отправлять пользователям, которые ещё не обновились, так что никто не пропустит кампанию.
Ключевые функции:
- App Store: выкатывает обновление за 7 дней на 1%, 2%, 5%, 10%, 20%, 50%, затем 100% пользователей с автообновлением. Можно поставить на паузу суммарно до 30 дней или выпустить для всех в любой момент
- Google Play: вы задаёте процент и повышаете его вручную. Раскатку можно остановить и возобновить, а пользователи, которые уже обновились, остаются на этом билде
- Случайная выборка пользователей в обоих сторах
Плюсы:
- Встроено в сторы
- Плохой билд можно остановить на 1% пользователей
Шаг 5. Мониторьте краши и доставку
8. Firebase Crashlytics: лучший, чтобы ловить краши после замены
Firebase Crashlytics собирает краши и нефатальные ошибки из приложений на Android, Apple, Flutter и Unity. Держите его включённым на всё время раскатки и сравнивайте новый билд с предыдущим.
Что он делает при миграции: краш в обработчике уведомлений или при инициализации SDK первым появится здесь. Нефатальные события помогают с более тихими проблемами: залогируйте non-fatal, когда регистрация пуша не удалась, — и вы увидите это по каждому билду.
Ключевые функции:
- Краш-репорты, сгруппированные в issues, с фильтром по билду
- Нефатальные события, которые логируются на устройстве и отправляются при следующем запуске приложения
- Официальные SDK для Android, Apple, Flutter и Unity
9. Статистика сообщений 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
Похожие статьи
Показать все