Ваше приложение для iOS работает на Firebase Cloud Messaging. Доставка работает. Ничего не горит. И все же каждая сегментированная кампания, каждый A/B-тест и каждый запрос «можно ли отправить push-уведомление о распродаже» по-прежнему попадают в очередь ваших инженеров, потому что FCM предоставляет вам канал доставки и ничего более. Если это звучит знакомо, это руководство покажет вам, как перейти с Firebase Cloud Messaging на iOS — без потери подписчиков, принудительной переустановки или показа пользователям второго запроса на разрешение.
Короткая версия: на iOS миграция — это замена слоя, а не перестройка. Вот почему и как именно это сделать.
Что предоставляет FCM и где он останавливается
Firebase Cloud Messaging — это бесплатная, надежная инфраструктура. Для многих инженерных команд это стандартный выбор, и для чистой доставки он вполне подходит. Проблема возникает в тот день, когда ваша маркетинговая команда хочет проводить кампании.
| Возможности | FCM | PushEngage |
|---|---|---|
| Доставка уведомлений через APNs | Да | Да |
| Поведенческая сегментация | Только по темам | Динамические сегменты, атрибуты, геолокация, устройство |
| Кампании, запускаемые событиями приложения | Создайте сами | Настроено через панель управления |
| Серии рассылок и пути | Создайте сами | Визуальный конструктор, шаблоны |
| A/B тестирование | Через консоль Firebase, управляется разработчиками | Управляется маркетологами, выбор лучшего варианта |
| Атрибуция дохода и отслеживание целей | Нет | По кампании, по рабочему процессу |
| Панель управления, доступная маркетологам | Нет | Да |
Шаблон в этой таблице — причина, по которой команды перерастают FCM: все, что выходит за рамки доставки, является инженерным проектом. Полное сравнение см. в разделе PushEngage против Firebase Cloud Messaging.
Что на самом деле переносится на iOS
Страх перед миграцией почти всегда связан со списком подписчиков: «если мы заменим SDK, потеряем ли мы наших пользователей, давших согласие?» На iOS ответ — нет, и полезно понять почему.
Разрешение на уведомления на iOS принадлежит вашему приложению, а не какому-либо SDK. Когда пользователь предоставил разрешение, он предоставил его идентификатору вашего пакета, и Apple выдает вашему приложению токен устройства APNs, который может использовать любой поставщик push-уведомлений. Сам FCM на iOS является оберткой вокруг этого токена APNs. Когда SDK PushEngage инициализируется в первый раз, он получает то же разрешение на уровне приложения, регистрирует токен устройства в PushEngage, и подписчик становится активным — без переустановки, без повторного запроса, без каких-либо действий со стороны пользователя.
Это означает, что ваша база пользователей, давших согласие, переносится по мере того, как устройства подключаются с обновленной версией приложения. Типичный выпуск охватывает подавляющее большинство активных пользователей в течение двух-трех недель, что как раз и является окном, в течение которого вы должны планировать параллельную работу обеих систем.
Миграция шаг за шагом
Шаг 1: Добавьте PushEngage SDK
Установите через Swift Package Manager (рекомендуется) или CocoaPods. Релиз 1.0 поставляется в виде двух модулей: свяжите PushEngage с целевым объектом вашего приложения и PushEngageExtension с целевым объектом вашего расширения службы уведомлений.
# Podfile
target 'YourApp' do
pod 'PushEngage', '~> 1.0.0'
end
target 'YourNotificationServiceExtension' do
pod 'PushEngageExtension', '~> 1.0.0'
end
Шаг 2: Инициализируйте вместе с существующей настройкой
import PushEngage
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
PushEngage.setAppID(id: "YOUR_APP_ID")
PushEngage.setInitialInfo(for: application, with: launchOptions)
return true
}
Поскольку разрешение уже предоставлено на уровне приложения, существующие подписчики регистрируются в PushEngage автоматически при первом запуске обновленной сборки. Новые пользователи проходят ваш обычный процесс получения разрешения один раз.
Шаг 3: Настройте App Group
Добавьте возможность App Groups к целевому объекту вашего приложения и каждому целевому объекту расширения уведомлений, используя тот же идентификатор группы, и объявите его в каждом Info.plist. Таким образом приложение и его расширения совместно используют состояние подписчика, и именно с этим шагом чаще всего связаны ошибки интеграции.
Шаг 4: Направьте ваш ключ APNs на PushEngage
Загрузите ваш существующий ключ аутентификации .p8 (или сертификат .p12) на панели управления PushEngage — те же учетные данные, которые вы предоставили Firebase. Ничего в настройках вашего Apple Developer не меняется. Руководство по настройке охватывает этот экран за экраном.
Шаг 5: Проверьте, затем выпускайте
Отправьте тестовое уведомление с панели управления на отладочное устройство, убедитесь, что медиафайлы отображаются через расширение, и подтвердите, что подписчик появился в вашем представлении аудитории. Затем выпускайте. Количество ваших подписчиков в PushEngage растет автоматически по мере развертывания обновления.
Запустите обе системы во время перехода
Вам не нужен жесткий переход, и вы не должны его делать. Оставьте FCM для всего транзакционного, что уже отправляет ваш бэкенд, и переместите маркетинговые рассылки в PushEngage по мере регистрации подписчиков. Оба SDK могут сосуществовать в одном приложении — они потребляют один и тот же токен APNs. Как только ваша активная база пользователей перерегистрируется и ваши кампании будут полностью перемещены, удаление зависимости от Firebase Messaging станет задачей по очистке, а не крайним сроком.
Что получит ваша маркетинговая команда в первый день
Суть этой миграции не в SDK — это то, что перестает быть инженерной задачей после этого. С панели управления ваша маркетинговая команда сможет создавать триггерные кампании на основе любого события, которое отслеживает ваше приложение, сегментировать аудиторию с помощью поведенческой сегментации, запускать последовательные рассылки, проводить A/B тестирование текстов и атрибутировать доход по кампаниям с помощью отслеживания целей. Ваше участие после интеграции заключается в инструментировании новых событий с помощью trackEvent — вызова в одну строку — когда команде потребуется новый триггер.
Вопрос стоимости, честно говоря
Доставка FCM бесплатна, и если вам нужна только доставка в сыром виде, оставьте ее. То, за что вы платите, оценивая PushEngage, — это маркетинговый слой: сегментация, автоматизация, атрибуция и панель управления, которой ваша маркетинговая команда может управлять самостоятельно. Ценообразование масштабируется только с активными подписчиками, поэтому большая база установок со смешанной вовлеченностью не увеличивает счет, а сокращающийся список уменьшает его. Мы подробно разобрали реальное сравнение затрат в ценах на push-уведомления Firebase.
Переходите
Миграция с Firebase Cloud Messaging на iOS — это полдня интеграции и цикл выпуска, требующий терпения: добавьте SDK, поделитесь App Group, загрузите уже имеющийся у вас ключ APNs и позвольте развертыванию перерегистрировать вашу базу. Никаких переустановок, никаких потерянных подписчиков, никаких повторных запросов разрешений — и никаких больше push-кампаний, ожидающих спринта. Начните с руководства по маркетингу push-уведомлений для приложений, если вам нужен контекст стратегии, или переходите прямо к SDK и выпускайте его на этой неделе. Каждый платный план имеет 14-дневную гарантию возврата денег.