Expo SDK: Руководство по базовой интеграции
В этом разделе содержится информация о том, как интегрировать Wavesend Expo SDK в ваше приложение.
Предварительные требования
Section titled “Предварительные требования”Для интеграции Wavesend Expo SDK в ваше приложение вам понадобится следующее:
Шаги интеграции
Section titled “Шаги интеграции”1. Установите плагин
Section titled “1. Установите плагин”Установите плагин Wavesend Expo с помощью Expo CLI
expo install wavesend-expo-pluginУстановите Wavesend React Native SDK
npm install wavesend-react-native-plugin --save2. Настройте свойства плагина
Section titled “2. Настройте свойства плагина”Добавьте плагин в начало массива плагинов с необходимыми свойствами:
{ "expo": { "plugins": [ [ "wavesend-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ] }}Где:
modeиспользуется для настройки прав окружения APNs. Доступны значения “Development” или “production”.PW_API_TOKEN,apiToken— это ваш Wavesend Device API Token.
3. Инициализируйте Wavesend
Section titled “3. Инициализируйте Wavesend”В корневом компоненте вашего приложения:
- Импортируйте плагин
wavesend-react-native-plugin. - Инициализируйте Wavesend SDK.
- Вызовите
register()в вашей логике инициализации, чтобы зарегистрироваться для получения push-уведомлений.
import Wavesend from 'wavesend-react-native-plugin';
Wavesend.init({ "pw_appid": "__YOUR_APP_ID__" , "project_number": "__YOUR_FCM_SENDER_ID__"});
Wavesend.register();Где:
__YOUR_APP_ID__— этоapplication codeиз Wavesend Control Panel.__YOUR_FCM_SENDER_ID__— это номер проекта Firebase из Firebase Console.
4. Нативная настройка для Android
Section titled “4. Нативная настройка для Android”Добавьте файл конфигурации Firebase:
- Скопируйте ваш файл
google-services.jsonв корневой каталог проекта. - Установите для свойства
googleServicesFileпуть к вашему файлуgoogle-services.jsonи укажите свойствоpackage:
"expo": { "name": "sample", "android": { "package": "com.wavesend.sample", "googleServicesFile": "./google-services.json" }, "plugins": [ [ "wavesend-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}5. Нативная настройка для iOS
Section titled “5. Нативная настройка для iOS”Установите свойство bundleIdentifier для объекта ios:
"expo": { "name": "sample", "ios": { "bundleIdentifier": "com.wavesend.sample" }, "plugins": [ [ "wavesend-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}6. Сделайте пребилд приложения
Section titled “6. Сделайте пребилд приложения”Сгенерируйте нативный код и настройте зависимости для каждой платформы, запустив пребилд:
npx expo prebuild7. Запустите проект
Section titled “7. Запустите проект”- Соберите и запустите проект:
npx expo run:androidnpx expo run:ios- Перейдите в Wavesend Control Panel и отправьте push-уведомление.
- Вы должны увидеть уведомление в приложении.
Расширенная интеграция
Section titled “Расширенная интеграция”На этом этапе вы уже интегрировали SDK и можете отправлять и получать push-уведомления. Теперь давайте рассмотрим основную функциональность.
Слушатели событий push-уведомлений
Section titled “Слушатели событий push-уведомлений”В Wavesend SDK есть два слушателя событий, предназначенных для обработки push-уведомлений:
- Событие
onPushReceivedсрабатывает, когда получено push-уведомление - Событие
onPushAcceptedсрабатывает, когда пользователь открывает уведомление
Вам следует настроить эти слушатели событий сразу после инициализации SDK при запуске приложения:
import { DeviceEventEmitter } from 'react-native';import Wavesend from 'wavesend-react-native-plugin';
class WavesendNotificationHandler { setupPushListeners(): void {
DeviceEventEmitter.addListener("pushReceived", (e) => { console.warn("Push received: " + JSON.stringify(e)); });
DeviceEventEmitter.addListener("pushOpened", (e) => { console.warn("Push opened:" + JSON.stringify(e)); });
}}Конфигурация пользователя
Section titled “Конфигурация пользователя”Фокусируясь на поведении и предпочтениях отдельных пользователей, вы можете доставлять персонализированный контент, что приводит к повышению удовлетворенности и лояльности пользователей.
import Wavesend from 'wavesend-react-native-plugin';
class Registration { afterUserLogin(user: User): void {
// Установить User ID Wavesend.setUserId(user.getId());
// Установить email пользователя Wavesend.setEmails(user.getEmailList());
// Установка дополнительной информации о пользователе в качестве тегов для Wavesend Wavesend.setTags({ "age": user.getAge(), "name": user.getName(), "last_login": user.getLastLoginDate() }); }}Tags — это пары «ключ-значение», присваиваемые пользователям или устройствам, которые позволяют сегментировать их на основе атрибутов, таких как предпочтения или поведение, для целевой отправки сообщений.
import Wavesend from 'wavesend-react-native-plugin';
class UpdateUser { afterUserUpdateProfile(user: User): void {
// Установить список любимых категорий Wavesend.setTags({ "favorite_categories": user.getFavoriteCategoriesList() });
// Установить платежную информацию Wavesend.setTags({ "is_subscribed": user.isSubscribed(), "payment_status": user.getPaymentStatus(), "billing_address": user.getBillingAddress() }); }}Events
Section titled “Events”Events — это определенные действия пользователя или события в приложении, которые можно отслеживать для анализа поведения и запуска соответствующих сообщений или действий.
import Wavesend from 'wavesend-react-native-plugin';
class Registration {
// Отслеживание события входа afterUserLogin(user: User): void { Wavesend.postEvent("login", { "name": user.getName(), "last_login": user.getLastLoginDate() }); }
// Отслеживание события покупки afterUserPurchase(product: Product): void { Wavesend.postEvent("purchase", { "product_id": product.getId(), "product_name": product.getName(), "price": product.getPrice(), "quantity": product.getQuantity() }); }}Отслеживание доставки сообщений для iOS
Section titled “Отслеживание доставки сообщений для iOS”Вы должны добавить таргет Notification Service Extension в свой проект. Это необходимо для точного отслеживания доставки и использования таких функций, как Rich Media, на iOS.
Следуйте шагам в нативном руководстве, чтобы добавить таргет расширения и необходимый код Wavesend в него.
Дополнительные свойства плагина
Section titled “Дополнительные свойства плагина”| Свойство | По умолчанию | Описание |
|---|---|---|
| Свойства iOS | ||
Wavesend_LOG_LEVEL | INFO | Уровень логирования для iOS. Возможные значения: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
| Свойства Android | ||
logLevel | INFO | Уровень логирования для Android. Одно из: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
multiNotificationMode | true | Можно изменить на false, если вы хотите отображать пользователю только последнее уведомление |
icon | - | Путь к кастомной иконке уведомления для Android |
Устранение неполадок
Section titled “Устранение неполадок”Если у вас возникнут какие-либо проблемы в процессе интеграции, обратитесь к разделу поддержки и сообщества.
Ошибка регистрации FCM: Failed to retrieve token. Is firebase configured correctly?
Section titled “Ошибка регистрации FCM: Failed to retrieve token. Is firebase configured correctly?”Убедитесь, что свойство googleServicesFile для Firebase настроено в конфигурационном файле Expo и что файл google-services.json добавлен в корневой каталог вашего проекта:
"expo": { "name": "sample", "android": { "package": "com.wavesend.sample", "googleServicesFile": "./google-services.json" }, "plugins": [ [ "wavesend-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}TypeError: Cannot read property ‘init’ of null
Section titled “TypeError: Cannot read property ‘init’ of null”Вы можете столкнуться с этой ошибкой при попытке запустить приложение на устройстве. Чтобы решить эту проблему, убедитесь, что вы выполнили шаг пребилда. Он генерирует нативный код и настраивает зависимости для каждой платформы.
npx expo prebuild