Перейти к содержанию

Expo SDK: Руководство по базовой интеграции

В этом разделе содержится информация о том, как интегрировать Pushwoosh Expo SDK в ваше приложение.

Предварительные требования

Anchor link to

Для интеграции Pushwoosh Expo SDK в ваше приложение вам потребуется следующее:

Шаги интеграции

Anchor link to

1. Установка плагина

Anchor link to

Установите плагин Pushwoosh Expo с помощью Expo CLI

Terminal window
expo install pushwoosh-expo-plugin

Установите Pushwoosh React Native SDK

Terminal window
npm install pushwoosh-react-native-plugin --save

2. Настройка свойств плагина

Anchor link to

Добавьте плагин в начало массива плагинов с необходимыми свойствами:

app.json/app.config.js
{
"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-уведомлений.
index.tsx
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 Console.

4. Нативная настройка для Android

Anchor link to

Добавьте файл конфигурации Firebase:

  1. Скопируйте ваш файл google-services.json в корневой каталог проекта.
  2. Установите для свойства googleServicesFile путь к вашему файлу google-services.json и укажите свойство package:
app.json/app.config.js
"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

Anchor link to

Установите свойство bundleIdentifier для объекта ios:

app.json/app.config.js
"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:

Terminal window
npx expo prebuild

7. Запуск проекта

Anchor link to
  1. Соберите и запустите проект:
Terminal window
npx expo run:android
  1. Перейдите в Панель управления Pushwoosh и отправьте push-уведомление.
  2. Вы должны увидеть уведомление в приложении.

Расширенная интеграция

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()
});
}
}

Теги — это пары “ключ-значение”, присваиваемые пользователям или устройствам, которые позволяют сегментировать аудиторию на основе таких атрибутов, как предпочтения или поведение, для создания целевых сообщений.

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
Свойство
По умолчанию
Описание
Свойства iOS
Pushwoosh_LOG_LEVELINFOУровень логирования для iOS. Возможные значения: NONE, ERROR, WARN, INFO, DEBUG, NOISE
Свойства Android
logLevelINFOУровень логирования для Android. Одно из: NONE, ERROR, WARN, INFO, DEBUG, NOISE
multiNotificationModetrueМожно изменить на false, если вы хотите отображать пользователю только последнее уведомление
icon-Путь к пользовательской иконке уведомления для Android

Устранение неполадок

Anchor link to

Если у вас возникнут какие-либо проблемы в процессе интеграции, обратитесь к разделу поддержки и сообщества.

Ошибка регистрации FCM: Failed to retrieve token. Правильно ли настроен Firebase?
Anchor link to

Убедитесь, что свойство googleServicesFile для Firebase настроено в файле конфигурации Expo и что файл google-services.json добавлен в корневой каталог вашего проекта:

app.json/app.config.js
"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: Cannot read property ‘init’ of null
Anchor link to

Вы можете столкнуться с этой ошибкой при попытке запустить приложение на устройстве. Чтобы устранить эту проблему, убедитесь, что вы выполнили шаг предварительной сборки (prebuild). Он генерирует нативный код и настраивает зависимости для каждой платформы.

Terminal window
npx expo prebuild