Структура уведомления
Структура полного уведомления
public class RemoteMessage { public string collapseKey; public Dictionary< string , string > data; public string messageId; public Notification notification; public int priority; public sbyte [] rawData; public int ttl; } |
- messageId — уникальный ID сообщения. Является идентификатором каждого сообщения.
- priority — (на данный момент не учитывается) возвращает значение приоритетности. Сейчас заложены следующие варианты:
- 0 — UNKNOWN.
- 1 — HIGH.
- 2 — NORMAL.
- ttl — время жизни push-уведомления типа Int в секундах.
- collapseKey — (на данный момент не учитывается) идентификатор группы уведомлений.
- data — словарь, в который можно передать дополнительные данные для уведомления.
- rawData — словарь data в виде массива байтов.
- notification — объект уведомления.
public class Notification { public string title; public string body; public string channelId; public string imageUrl; public string color; public string icon; public 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, с помощью которого будет открыта активити при клике на уведомление.
Создание канала для отправки уведомления
Для канала, в который будет отправлено уведомление действует следующий порядок приоритета:
1. Если в push-уведомлении есть поле channelId, то SDK отправит уведомление в данный канал. При этом ваше приложение ответственно за то, чтобы создать этот канал заранее.
2. Если поля channelId нет в пуш-уведомлении, но ваше приложение указало параметр с каналом в AndroidManifest.xml, то будет использован канал из AndroidManifest.xml. Ваше приложение ответственно за создание канала.
3. Если поля channelId нет в пуш-уведомлении, и канал по умолчанию не задан в AndroidManifest.xml вашего приложения, то SDK самостоятельно создаст канал и отправит в него уведомление. В дальнейшем все уведомления без заданного канала будут отправляться в этот канал.
Открытие Activity при тапе на уведомление
По умолчанию, при тапе на уведомление SDK открывает активити с action “android.intent.action.MAIN”. Если поле clickAction присутствует, то SDK откроет активити, которая попадает под Intent filter с указанным action.
Чтобы SDK мог открыть активити при тапе на уведомление (это относится и к активити по-умолчанию), в манифесте приложения, в соответствующем элементе <intent-filter> у активити необходимо добавить строку <category android:name=“android.intent.category.DEFAULT” />. Без этой строчки открыть активити SDK не сможет.