Базовое руководство по интеграции Expo SDK
В этом разделе содержится информация о том, как интегрировать Pushwoosh Expo SDK в ваше приложение.
Предварительные требования
Anchor link toДля интеграции Pushwoosh Expo SDK в ваше приложение вам потребуется следующее:
Шаги интеграции
Anchor link to1. Установите плагин
Anchor link toУстановите плагин Pushwoosh Expo с помощью Expo CLI
expo install pushwoosh-expo-pluginУстановите Pushwoosh React Native SDK
npm install pushwoosh-react-native-plugin --save2. Установите свойства плагина
Anchor link toДобавьте плагин в начало массива плагинов с необходимыми свойствами:
{ "expo": { "plugins": [ [ "pushwoosh-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— это ваш Pushwoosh Device API Token.
3. Инициализируйте Pushwoosh
Anchor link toВ корневом компоненте вашего приложения:
- Импортируйте плагин
pushwoosh-react-native-plugin. - Инициализируйте Pushwoosh SDK.
- Вызовите
register()в вашей логике инициализации для регистрации push-уведомлений.
import Pushwoosh from 'pushwoosh-react-native-plugin';
Pushwoosh.init({ "pw_appid": "__YOUR_APP_ID__" , "project_number": "__YOUR_FCM_SENDER_ID__"});
Pushwoosh.register();Где:
__YOUR_APP_ID__— это код приложения из Панели управления Pushwoosh.__YOUR_FCM_SENDER_ID__— это номер проекта Firebase из консоли Firebase.
4. Настройка Android Native
Anchor link toДобавьте файл конфигурации Firebase:
- Скопируйте файл
google-services.jsonв корневой каталог проекта. - Установите свойство
googleServicesFileна путь к вашемуgoogle-services.jsonи укажите свойствоpackage:
"expo": { "name": "sample", "android": { "package": "com.pushwoosh.sample", "googleServicesFile": "./google-services.json" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}5. Настройка iOS Native
Anchor link toУстановите свойство bundleIdentifier для объекта ios:
"expo": { "name": "sample", "ios": { "bundleIdentifier": "com.pushwoosh.sample" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}6. Предварительная сборка приложения
Anchor link toСгенерируйте нативный код и настройте зависимости для каждой платформы, запустив prebuild:
npx expo prebuild7. Запустите проект
Anchor link to- Соберите и запустите проект:
npx expo run:androidnpx expo run:ios- Перейдите в Панель управления Pushwoosh и отправьте push-уведомление.
- Вы должны увидеть уведомление в приложении.
Расширенная интеграция
Anchor link toНа этом этапе вы уже интегрировали SDK и можете отправлять и получать push-уведомления. Теперь давайте рассмотрим основные функции.
Слушатели событий push-уведомлений
Anchor link toВ Pushwoosh SDK есть два слушателя событий, предназначенных для обработки push-уведомлений:
- Событие
onPushReceivedсрабатывает при получении push-уведомления. - Событие
onPushAcceptedсрабатывает, когда пользователь открывает уведомление.
Вам следует настроить эти слушатели событий сразу после инициализации SDK при запуске приложения:
import { DeviceEventEmitter } from 'react-native';import Pushwoosh from 'pushwoosh-react-native-plugin';
class PushwooshNotificationHandler { setupPushListeners(): void {
DeviceEventEmitter.addListener("pushReceived", (e) => { console.warn("Push received: " + JSON.stringify(e)); });
DeviceEventEmitter.addListener("pushOpened", (e) => { console.warn("Push opened:" + JSON.stringify(e)); });
}}Конфигурация пользователя
Anchor link toСосредоточившись на индивидуальном поведении и предпочтениях пользователей, вы можете предоставлять персонализированный контент, что приводит к повышению удовлетворенности и лояльности пользователей.
import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration { afterUserLogin(user: User): void {
// Set user ID Pushwoosh.setUserId(user.getId());
// Set user email Pushwoosh.setEmails(user.getEmailList());
// Setting additional user information as tags for Pushwoosh Pushwoosh.setTags({ "age": user.getAge(), "name": user.getName(), "last_login": user.getLastLoginDate() }); }}Теги
Anchor link toТеги — это пары ключ-значение, присваиваемые пользователям или устройствам, позволяющие сегментировать аудиторию на основе таких атрибутов, как предпочтения или поведение, что обеспечивает целевую рассылку сообщений.
import Pushwoosh from 'pushwoosh-react-native-plugin';
class UpdateUser { afterUserUpdateProfile(user: User): void {
// Set list of favorite categories Pushwoosh.setTags({ "favorite_categories": user.getFavoriteCategoriesList() });
// Set payment information Pushwoosh.setTags({ "is_subscribed": user.isSubscribed(), "payment_status": user.getPaymentStatus(), "billing_address": user.getBillingAddress() }); }}События
Anchor link toСобытия — это конкретные действия пользователя или происшествия внутри приложения, которые можно отслеживать для анализа поведения и запуска соответствующих сообщений или действий.
import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
// Track login event afterUserLogin(user: User): void { Pushwoosh.postEvent("login", { "name": user.getName(), "last_login": user.getLastLoginDate() }); }
// Track purchase event afterUserPurchase(product: Product): void { Pushwoosh.postEvent("purchase", { "product_id": product.getId(), "product_name": product.getName(), "price": product.getPrice(), "quantity": product.getQuantity() }); }}Отслеживание доставки сообщений для iOS
Anchor link toВы должны добавить цель Notification Service Extension в свой проект. Это необходимо для точного отслеживания доставки и таких функций, как Rich Media на iOS.
Следуйте шагам нативного руководства, чтобы добавить цель расширения и необходимый код Pushwoosh внутри нее.
Дополнительные свойства плагина
Anchor link to| Property | Default | Description |
|---|---|---|
| Свойства iOS | ||
Pushwoosh_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 |
Устранение неполадок
Anchor link toЕсли вы столкнетесь с какими-либо проблемами в процессе интеграции, пожалуйста, обратитесь к разделу поддержки и сообщества.
Ошибка регистрации FCM: Не удалось получить токен. Правильно ли настроен Firebase?
Anchor link toУбедитесь, что свойство googleServicesFile вашего Firebase настроено в файле конфигурации Expo, а файл google-services.json добавлен в корневой каталог вашего проекта:
"expo": { "name": "sample", "android": { "package": "com.pushwoosh.sample", "googleServicesFile": "./google-services.json" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}TypeError: Невозможно прочитать свойство ‘init’ из null
Anchor link toВы можете столкнуться с этой ошибкой при попытке запустить приложение на устройстве. Чтобы решить эту проблему, убедитесь, что вы выполнили шаг предварительной сборки (prebuild). Он генерирует нативный код и настраивает зависимости для каждой платформы.
npx expo prebuild