Мы уже обосновали стратегическую необходимость в другом месте: эра массовых рассылок прошла, и уведомления, запускаемые поведением, — это то, что платформы поощряют, а подписчики терпят. Это руководство — вторая его часть: как фактически запускать push-уведомления на основе событий приложения на iOS, от инструментария до передачи маркетинговой команде. Оно написано для разработчика, который выполняет настройку, с кодом, который вы будете использовать, и соглашениями, которые обеспечат его поддержку.
Архитектура в одном абзаце
Ваше приложение генерирует именованные события с типизированными свойствами. PushEngage сопоставляет эти события с правилами триггеров, настроенными на панели управления, и кампании отправляются — немедленно, с задержкой или как многошаговая последовательность с условиями выхода. Суть в разделении труда: инжиниринг настраивает каждое событие один раз; маркетинг создает, редактирует и отменяет кампании, связанные с этими событиями, навсегда, без повторного создания сборки. Ваша инструментация — это API для вашей маркетинговой команды.
trackEvent: универсальный сигнал
SDK для iOS 1.0 представил trackEvent — рабочую лошадку для пользовательских поведенческих сигналов:
PushEngage.trackEvent(name: "product_viewed",
properties: [
"sku": "WCJ-1042",
"category": "outerwear",
"price": 189.00,
"in_stock": true
],
profileId: currentUserId, // ties the event to an identified subscriber
provider: nil,
eventType: nil) { success, error in
if !success { log(error) }
}
Три правила, которые применяет SDK, поэтому проектируйте с учетом их с самого начала:
- Значения свойств должны быть строками, числами или булевыми значениями. Массивы, словари и даты отклоняются на стороне клиента — преобразуйте их перед отправкой.
- Имена событий и ключи свойств не должны быть пустыми. Обратный вызов сообщит вам об ошибке проверки; регистрируйте ее в отладочных сборках.
- Обратные вызовы поступают в фоновую очередь. Переключайтесь на основной поток перед взаимодействием с пользовательским интерфейсом.
Передавайте profileId всякий раз, когда пользователь идентифицирован — это позволяет кампании отслеживать клиента на разных устройствах, а не отслеживать устройство.
sendTriggerEvent: настройка классических триггерных кампаний
Для кампаний, созданных в конструкторе триггеров на панели управления — брошенная корзина, брошенный просмотр, пользовательские сценарии — приложение вызывает sendTriggerEvent с именами кампании и события, настроенными маркетологом, плюс токены данных, которые будет отображать шаблон уведомления:
let trigger = TriggerCampaign(campaignName: "cart_abandonment",
eventName: "add_to_cart",
data: [
"productname": "Waxed Canvas Jacket",
"price": "$189",
"cartlink": "myapp://cart"
])
PushEngage.sendTriggerEvent(triggerCampaign: trigger) { success, error in
// background queue — dispatch before UI work
}
Токены data вставляются в текст уведомления — так «Ваша куртка из вощеного холста ждет вас» персонализируется без вмешательства маркетолога в код. Мы рассмотрели полную последовательность восстановления корзины в руководстве по брошенным корзинам для мобильных приложений; этот вызов является ее движущей силой.
addAlert: снижение цен и наличие товара — встроенные функции
Два наиболее востребованных коммерческих триггера даже не требуют пользовательских кампаний — они являются первоклассными гражданами SDK. Когда пользователь отслеживает товар, зарегистрируйте оповещение:
let alert = TriggerAlert(type: .priceDrop, // or .inventory
productId: "WCJ-1042",
link: "myapp://product/WCJ-1042",
price: 189.00,
data: ["size": "M"])
PushEngage.addAlert(triggerAlert: alert) { success, error in }
PushEngage обрабатывает отслеживание, сопоставление и отправку при снижении цены или возвращении товара на склад. Если вы читали наше руководство по уведомлениям о снижении цен, то это регистрация на стороне приложения, которая запускает эти кампании.
Масштабируемая таксономия событий
Долг за инструментарий реален: спустя шесть месяцев никто не помнит, является ли событие addToCart, cart_add или CartUpdated. Выбирайте соглашения с первого дня — имена в стиле snake_case, порядок object_action, единственное число для ключей свойств — и охватите основной набор коммерческих событий:
| Событие | Ключевые свойства | Кампании, которые оно запускает |
|---|---|---|
product_viewed | sku, категория, цена | Отмена просмотра товара, персонализация |
product_saved | sku, цена | Снижение цены, наличие товара, триггеры возврата |
cart_updated | сумма корзины, количество товаров, основной товар | Отказ от корзины |
purchase_completed | сумма заказа, количество товаров | Условия выхода, после покупки, цели |
search_performed | запрос, количество результатов | Восстановление после нулевых результатов, сегменты интересов |
onboarding_step | шаг, завершено | Разветвление серии онбординга |
Шесть событий, проинструментированных один раз, запускают серию онбординга, восстановление корзины, триггеры возврата и каждый сегмент, который ваш отдел маркетинга запросит в этом году.
Протестируйте цикл, прежде чем передавать его
Установите PushEngage.enableLogging = true в отладочных сборках и наблюдайте, как события покидают устройство. Запустите каждое событие из тестовой сборки, убедитесь, что оно появляется в представлении событий на панели управления, и отправьте одну сквозную тестовую кампанию для каждого триггера. Приложения с примерами в репозитории SDK включают рабочий экран триггеров, из которого вы можете позаимствовать поток. Пятнадцать минут проверки здесь сэкономят вам расследование «почему кампания не сработала» позже — которое обычно является опечаткой в названии события с одной стороны контракта.
Передача: что маркетинг будет контролировать дальше
Как только события начнут поступать, ваша часть работы выполнена. Маркетинг создает правила триггеров, пишет тексты, устанавливает задержки и условия выхода, проводит A/B-тестирование вариантов и прикрепляет отслеживание целей для атрибуции доходов — все это в панели управления, без необходимости создавать заявку. Опубликуйте таблицу таксономии событий в вики вашей команды как контракт между двумя сторонами. Затем наблюдайте, как очередь запросов на «можете ли вы отправить push-уведомление» тихо уходит к нулю — что и было целью с самого начала. Что касается стратегии, которой должны следовать эти кампании, передайте вашей маркетинговой команде руководство по маркетингу push-уведомлений в приложении.