react-native-rustore-push v0.9.2
react-native-rustore-push
Имплементация RuStore SDK пуш-уведомлений для React Native.
Используемая версия SDK:
1.0.0Пакет находится в разработке. Предположительная дата релиза
16.11.2023
Пример с использованием пакета находиться в директории example.
Установка
Для начала необходимо установить npm-пакет:
# установка с помощью yarn:
yarn add react-native-rustore-push
# установка с помощью npm:
npm install react-native-rustore-pushДалее, требуется указать ссылку на репозиторий, из которого будут получены все необходимые зависимости. Добавьте следующий код в файл android/build.gradle (не перепутать с android/app/build.gradle);
buildscript {
// ...
}
// Добавьте всё, что ниже
allprojects {
repositories {
maven {
url = uri("https://artifactory-external.vkpartner.ru/artifactory/maven")
}
}
}Заключительным этапом является объявление сервиса для получения данных от SDK:
<application>
<!-- Добавьте всё, что ниже -->
<service
android:name="ru.reactnativerustorepush.deps.MessagingService"
android:exported="true"
tools:ignore="ExportedService">
<intent-filter>
<action android:name="ru.rustore.sdk.pushclient.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>Условия работы
Для работы пуш-уведомлений необходимо соблюдение следующих условий:
- На устройстве пользователя должно быть установлено приложение RuStore.
- Приложение RuStore должно поддерживать функциональность пуш-уведомлений.
- Приложению RuStore разрешен доступ к работе в фоновом режиме.
- Пользователь должен быть авторизован в приложении RuStore.
- Отпечаток подписи приложения должен совпадать с отпечатком, добавленным в консоль разработчика.
Использование
Для работы с пуш-уведомлениями понадобиться ID проекта, который можно получить в системе RuStore Консоль. Для этого на странице приложения перейдите в раздел «Push-уведомления» и выберите «Проекты».
Все взаимодействия с SDK пушей производятся через экспортируемый по дефолту класс RuStorePush:
import RuStorePush from 'react-native-rustore-push';Инициализация
Для взаимодействия с SDK пуш-уведомлений требуется создать инстанс класса RuStorePush, передав в конструктор необходимые параметры.
const ruStorePush = new RuStorePush({
projectId: '<ID_ПРОЕКТА>',
});Имеются следующие опциональные параметры:
Параметр
loggerPropsможет быть использован для логирования событий;Параметр
testModeEnabledможет быть использован для E2E-тестирования.
Далее, необходимо вызвать метод init:
ruStorePush.init()Данный метод следует вызвать единожды при запуске приложения. Дальнейшие вызовы не возымеют эффекта.
Получение данных
Для того, чтобы подписаться на получение данных от SDK, необходимо обратиться к полю messagingService, имеющееся у инстанса класса RuStorePush. Данное поле имеет две функции для работы с подписками:
on- функция для подписки на событие получения данных;unsubscribeAll- функция для глобальной отписки от всех событий.
Об имеющихся событиях и формает получаемых данных можно ознакомиться в соответствующем разделе документации: Получение данных от RuStore SDK.
Обработка ошибок
Каждый метод класса RuStorePush возвращает Promise, который может содержать либо данные, полученные после выполнения соответсвующего метода SDK, либо объект ошибки.
Структура объекта ошибки:
type RuStorePushError = {
/** Текст ошибки */
msg: string
/** Стек-трейс ошибки */
stackTrace?: string
};Логирование событий
Для логирования событий в конструктор класса RuStorePush требуется передать параметр loggerProps, который содержит функции для обработки необходимых событий:
type LogEventPayload = {
msg: string
error?: RuStorePushError
};
type LogFunc = (props: LogEventPayload) => void;
type RuStorePushLoggerProps = {
verbose?: LogFunc
debug?: LogFunc
info?: LogFunc
warn?: LogFunc
error?: LogFunc
};Пример использования:
const ruStorePush = new RuStorePush({
projectId: '<ID_ПРОЕКТА>',
loggerProps: {
info: ({ msg }) => {
console.log(msg);
},
},
});E2E-тестирование
Для E2E тестирования нужно включить тестовый режим, а именно передать параметр testModeEnabled:
const ruStorePush = new RuStorePush({
projectId: '<ID_ПРОЕКТА>',
testModeEnabled: true,
});Далее, необходимо вызвать метод sendTestNotification, передав в него параметры пущ-уведомления. Пример:
ruStorePush.sendTestNotification({
title: 'Заголовок',
body: 'Содержимое',
});Лицензия
MIT