Push-уведомления

Материал из PayControl Wiki
Версия от 12:41, 17 марта 2021; D.bizyukov (обсуждение | вклад) (Новая страница: «Push-сообщения могут отправляться через PCIS Internal, либо через pcwiki:PayControl Inform|P…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Push-сообщения могут отправляться через PCIS Internal, либо через PayControl Inform.

Настройка отправки через PayControl Interaction Server (Internal)

Настройки производятся в БД PCIS. Шаблон push-сообщений определяется в формате JSON. Существует два варианта настройки push-сообщений:

Переменные

Доступны следующие переменные для использования в шаблоне:

Переменная Значение
%PUSH_TEXT% PUSH_TEXT
%PUSH_TITLE% PUSH_TITLE
%PUSH_SOUND% PUSH_IOS_SOUND либо PUSH_ANDROID_SOUND, в зависимости от устройства, на которое отправляется пуш
%PUSH_ICON% PUSH_ICON
%PUSH_IOS_BADGE% PUSH_IOS_BADGE
%PUSH_TYPE% "PayControl"
%USER_ID% userId
%SYSTEM_ID% systemId
%TRANSACTION_ID% transactionId
%DEVICE_TOKEN% deviceId

Шаблоны для разных версий PCIS

До версии PCIS 3.5 включительно

При создании транзакции отправляется одно push сообщение.

Версия PCIS 3.5.5

При отправке оповещения о созданной транзакции на android отправляются два push-сообщения - Notification и Silent. Такая модификация потребовалась в связи с тем, что некоторые устройства не будят приложение для отрисовки уведомления. Для этого в БД PCIS Internal добавлено поле android_second_push_template.

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

Поле Значение
android_push_template
{"to":"%DEVICE_TOKEN%","notification":{"tag":"%USER_ID%","title":"PayControl","body":"%PUSH_TEXT%","icon":"paycontrol_push","sound":"default"},"data":{"type":"PayControl_v2"}}
android_second_push_template
{"to":"%DEVICE_TOKEN%","data": {"type": "PayControl_v2", "userid": "%USER_ID%"}}

С версии PCIS 3.6

Шаблон push-сообщений определяется как массив шаблонов сообщений в формате JSON, которые отправляются последовательно (количество элементов в массиве - от 1):

{"messages":[массив объектов шаблонов push-сообщений, который будет отправлен PayControl]}

Пример:

  • android_push_template
    {"messages":[{"to":"%DEVICE_TOKEN%","notification":{"tag":"%USER_ID%","title":"PayControl","body":"%PUSH_TEXT%","icon":"paycontrol_push","sound":"default"},"data":{"type":"PayControl_v2"}},{"to":"%DEVICE_TOKEN%","data": {"type": "PayControl_v2", "userid": "%USER_ID%"}}]}
    
  • ios_push_template
    {"messages":[{"aps":{"alert":"%PUSH_TEXT%","sound":"%PUSH_SOUND%","badge":%PUSH_IOS_BADGE%},"type":"%PUSH_TYPE%","userid":"%USER_ID%"}]}
    

Для мобильных приложений версии 3.7 и выше

На Android стало достаточно отправки одного data-пуша. При этом можно указать следующие типы (type) (регистр не имеет значения):

  • paycontrol и payconfirm - звук и вибрация;
  • PayControl-v2 - использовать не стоит, т.к. в этом случае звука или вибрации не будет. Применяется в случае, если отправляется 2 пуша - notification и data.
{"messages":[{"to":"%DEVICE_TOKEN%","data": {"type": "paycontrol", "userid": "%USER_ID%"}}]}

Тем не менее, шаблон следующий:

{
   "messages":[
      {
         "to":"%DEVICE_TOKEN%",
         "notification":{
            "tag":"%USER_ID%",
            "title":"PayControl",
            "body":"%PUSH_TEXT%",
            "icon":"paycontrol_push",
            "sound":"default"
         },
         "data":{
            "type":"PayControl_v2"
         }
      },
      {
         "to":"%DEVICE_TOKEN%",
         "data":{
            "type":"PayControl_v2",
            "userid":"%USER_ID%"
         }
      }
   ]
}

Установка новых шаблонов в БД

Обновление шаблонов

update pc_push_credentials set android_push_template='{"messages":[{"to":"%DEVICE_TOKEN%","notification":{"tag":"%USER_ID%","title":"PayControl","body":"%PUSH_TEXT%","icon":"paycontrol_push","sound":"default"},"data":{"type":"PayControl_v2"}},{"to":"%DEVICE_TOKEN%","data": {"type": "PayControl_v2", "userid": "%USER_ID%"}}]}' where systemid='bef89e01-f248-4841-bd62-8b08056e6fea';
update pc_push_credentials set ios_push_template='{"messages":[{"aps":{"alert":"%PUSH_TEXT%","sound":"%PUSH_SOUND%","badge":%PUSH_IOS_BADGE%},"type":"%PUSH_TYPE%","userid":"%USER_ID%"}]}' where systemid='bef89e01-f248-4841-bd62-8b08056e6fea';

Удаление шаблона второго push-сообщения:

update pc_push_credentials set android_second_push_template = NULL;

Одним запросом:

update pc_push_credentials set android_push_template='{"messages":[{"to":"%DEVICE_TOKEN%","notification":{"tag":"%USER_ID%","title":"PayControl","body":"%PUSH_TEXT%","icon":"paycontrol_push","sound":"default"},"data":{"type":"PayControl_v2"}},{"to":"%DEVICE_TOKEN%","data": {"type": "PayControl_v2", "userid": "%USER_ID%"}}]}', ios_push_template='{"messages":[{"aps":{"alert":"%PUSH_TEXT%","sound":"%PUSH_SOUND%","badge":%PUSH_IOS_BADGE%},"type":"%PUSH_TYPE%","userid":"%USER_ID%"}]}', android_second_push_template = NULL;

Добавление новой записи

Указать верные:

  • google_api_key
  • apns_key_file
  • apns_key_id
  • apns_team_id

Уточнить:

  • apns_app_id
INSERT INTO pc_push_credentials (systemid, android_push_template, google_api_key, ios_push_template, use_ios_fcm, apns_app_id, apns_key_file, apns_key_id, apns_team_id)  VALUES  ('e33affa9-1ff8-4d2a-aa42-856fb59309e0', '{"messages":[{"to":"%DEVICE_TOKEN%","notification":{"tag":"%USER_ID%","title":"PayControl","body":"%PUSH_TEXT%","icon":"paycontrol_push","sound":"default"},"data":{"type":"PayControl_v2"}},{"to":"%DEVICE_TOKEN%","data": {"type": "PayControl_v2", "userid": "%USER_ID%"}}]}', 'AAAAZJTm6y0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', '{"messages":[{"aps":{"alert":"%PUSH_TEXT%","sound":"%PUSH_SOUND%","badge":%PUSH_IOS_BADGE%},"type":"%PUSH_TYPE%","userid":"%USER_ID%"}]}', '0','ru.safe-tech.PayControl.v3','/opt/wildfly/safetech-apns-JVBQX52N5Z.p8','JVXXXXXXXXX','48XXXXXXX');