Структура уведомления

Структура полного уведомления

public data class RemoteMessage(
    val messageId: String?,
    val priority: Int,
    val ttl: Int,
    val collapseKey: String?,
    val data: Map<String, String>,
    val rawData: ByteArray?,
    val notification: Notification?
)
  • messageId — уникальный ID сообщения. Является идентификатором каждого сообщения;
  • priority — возвращает значение приоритетности;
  • ttl — возвращает время жизни пуш-уведомления типа Int в секундах;
  • collapseKey — идентификатор группы уведомлений;
  • data — словарь, в который можно передать дополнительные данные для уведомления;
  • rawData — словарь data в виде бинарного массива;
  • notification — объект уведомления.

Структура объекта Notification

public data class Notification(
    val title: String?,
    val body: String?,
    val channelId: String?,
    val imageUrl: Uri?,
    val color: String?,
    val icon: String?,
    val clickAction: String?
  )
  • 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, с помощью которого будет открыта активити при нажатии на уведомление.

Создание канала для отправки уведомления

Для канала, в который будет отправлено уведомление действует следующий порядок приоритета:

  1. Если в пуш-уведомлении есть поле channelId, то RuStoreSDK отправит уведомление в данный канал. При этом ваше приложение ответственно за то, чтобы создать этот канал заранее.
  2. Если поля channelId нет в пуш-уведомлении, но ваше приложение указало параметр с каналом в AndroidManifest.xml, то будет использован канал из AndroidManifest.xml. Ваше приложение ответственно за создание канала. 
  3. Если поля channelId нет в пуш-уведомлении, и канал по умолчанию не задан в AndroidManifest.xml вашего приложения, то RuStoreSDK самостоятельно создаст канал и отправит в него уведомление. В дальнейшем все уведомления без заданного канала будут отправляться в этот канал.

Открытие Activity при нажатии на уведомление

По умолчанию при нажатии на уведомление RuStoreSDK открывает активити с action «android.intent.action.MAIN». Если поле clickAction присутствует, то RuStoreSDK откроет активити, которая попадает под Intent filter с указанным action.

Чтобы при нажатии на уведомление (относится и к активити по-умолчанию) в RuStoreSDK открывалась активити, в манифесте приложения в соответствующем элементе <intent-filter> у активити добавьте строку <category android:name="android.intent.category.DEFAULT" />. Без этой строчки в RuStoreSDK активити не откроется.

Was this information helpful?