react-native-rustore-push
v0.9.2
Published
Имплементация RuStore SDK пуш-уведомлений для React Native
Downloads
2
Maintainers
Readme
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