Flutter RuStore push SDK для подключения пуш уведомлений.
Для того, чтобы узнать как правильно интегрировать пакет для работы с push-уведомлениями, рекомендуется ознакомиться с приложением-примером
Для работы push-уведомлений необходимо соблюдение следующих условий:
- На устройстве пользователя должен быть установлен RuStore.
- RuStore должен поддерживать функциональность push-уведомлений.
- Приложению RuStore разрешён доступ к работе в фоновом режиме.
- Пользователь должен быть авторизован в RuStore.
- Подключение в проект
- Для подключения пакета к проекту нужно выполнить команду
flutter pub add flutter_rustore_push
Эта команда добавит строчку в файл pubspec.yaml
dependencies:
flutter_rustore_push: ^6.1.1
Для инициализации сервиса пуш-уведомлений необходимо добавить значение в AndroidManifest вашего проекта.
<meta-data
android:name="ru.rustore.sdk.pushclient.project_id"
android:value="your_project_id_from_rustore_console" />
Для настройки ProGuard вам необходимо добавить следующее правило:
-keep public class com.vk.push.** extends android.os.Parcelable
И в файле android/app/build.gradle добавьте:
buildTypes {
release {
// ...
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
// ...
}
Для работы push-уведомлений необходимо соблюдать несколько условий:
- На устройстве пользователя должен быть установлен RuStore.
- RuStore должен поддерживать функциональность push-уведомлений.
- Приложению RuStore разрешён доступ к работе в фоновом режиме.
- Пользователь должен быть авторизован в RuStore.
- Для проверки вышеперечисленных условий можно воспользоваться методом
RustorePushClient.available()
RustorePushClient.available().then((value) {
print("available success: ${value}");
}, onError: (err) {
print("available error: ${err}");
});
После инициализации библиотеки вы можете использовать метод RustorePushClient.getToken()
, для получения текущего push-токена пользователя. Если у пользователя отсутствует push-токен, то метод создаст и вернёт новый push-токен .
RustorePushClient.getToken().then((value) {
print("get token success: ${value}");
}, onError: (err) {
print("get token error: ${err}");
})
Вы можете использовать метод RustorePushClient.deleteToken()
, для удаления текущего push-токена пользователя.
RustorePushClient.deleteToken().then(() {
print("delete success:");
}, onError: (err) {
print("delete error: ${err}");
})
Периодически старый токен может становиться невалидным. Токен может выписываться заново. Чтобы понять, что выписался новый токен, нужно использовать коллбек RustorePushClient.onNewToken()
RustorePushClient.onNewToken((value) {
print("on new token success: ${value}");
}, error: (err) {
print("on new token err: ${err}");
});
Для получения информации из push-уведомления необходимо добавить коллбек RustorePushClient.onMessageReceived()
RustorePushClient.onMessageReceived((value) {
print("on message received success: id=${value.messageId}, data=${value.data}, notification.body: ${value.notification?.body}");
}, error: (err) {
print("on message received error: ${err}");
});
Для удвления push-уведомления необходимо добавить коллбек RustorePushClient.onDeletedMessages()
RustorePushClient.onDeletedMessages(() { print("deleted messages"); }, error: (err) { print("on message received error: ${err}"); });
Для обработки ошибок необходимо использовать коллбек RustorePushClient.onError()
RustorePushClient.onError((err) {
print("on error: ${err}");
});
Структура Message
:
class Message {
String? messageId;
int priority;
int ttl;
String? collapseKey;
Map<String?, String?> data;
Notification? notification;
}
- messageId - уникальный ID сообщения. Является идентификатором каждого сообщения.
- priority - (на данный момент не учитывается) возвращает значение приоритетности. Сейчас заложены следующие варианты:
- 0 - UNKNOWN.
- 1 - HIGH.
- 2 - NORMAL.
- ttl - время жизни push-уведомления типа Int в секундах.
- collapseKey - (на данный момент не учитывается) идентификатор группы уведомлений.
- data - словарь, в который можно передать дополнительные данные для уведомления.
- notification - объект уведомления.
Структура Notification
:
class Notification {
String? title;
String? body;
String? channelId;
String? imageUrl;
String? color;
String? icon;
String? clickAction;
}
- title - заголовок уведомления.
- body - тело уведомления.
- channelId - возможность задать канал, в который будет отправлено уведомление (актуально для Android 8.0 и выше).
- imageUrl - прямая ссылка на изображение для вставки в уведомление (изображение должно быть не более 1 мегабайта).
- color - цвет уведомления (Notification.color). Цвет необходимо передать в hex-формате, строкой (Пример: “#A52A2A”).
- icon - иконка уведомления. Иконка должна лежать в ресурсах приложения (res/drawable). Значение параметра - строка, которая совпадает с названием ресурса.
- Пример: в res/drawable лежит иконка small_icon.xml, которая в коде доступна через R.drawable.small_icon. Для отображения данной иконки в уведомлении сервер должен поместить в параметр “icon” значение “small_icon”.
- clickAction - intent action, с помощью которого будет открыта активити при клике на уведомление.