Что нового
- С версии 5.2 для Pusher'а не требуется БД.
- Поддержка отправки на устройства Huawei.
Аутентификационные данные и шаблоны пушей
Аутентификационные данные и шаблоны для отправки пушей на приложения PC зашиты в модуль сервера. Таким образом, для типового использования с приложением PC конфигурирование модуля не требуется.
Состояния отправленных пушей
Состояния отправленных пушей хранится в памяти модуля сервера. Размер кольцевого буфера для хранения статусов пушей равен 1000. Место пуша в очереди не меняется от момента создания.
Конфигурирование
В параметры конфигурации входит:
- общие параметры модуля;
- аутентификационные данные для приложения (дифференцируются по application/bundle id);
- шаблоны для прикладных систем (дифференцируются по systemid).
Поиск параметров конфигурации осуществляются в следующих директориях последовательно, до нахождения первой из перечисленных:
- /opt/wildfly/pc_pusher
- /opt/pc/pc_pusher
- C:\\pc\\pc_pusher
- C:\\wildfly\\pc_pusher
Структура директории
.
├── apps
│ ├── com.example.corp.dev.json
│ ├── com.example.cort.json
│ ├── com.example.retail.dev.json
│ └── com.example.retail.json
├── systems
│ └── 3550fa38-5d17-4fbf-a660-506227a2ed0e.json
└── pusher.conf.json
Общие параметры
Свойство | Описание |
---|---|
debug_info | Включение вывода отладочной информации. |
proxy | Параметры для подключения через прокси. |
notification_status_buffer_size | Размер очереди для хранения статусов транзакций. |
core_size | Первоначальное количество воркеров. |
queue_size | Если до этого значения вырастает очередь, то количество воркеров увеличивается до max_core_size. |
max_core_size | Максимальное количество воркеров. Если очередь заполнилась максимально, то возвращается Exception "TASKS_QUEUE_IS_FULL" (HTTP 400, PC_Error 313). |
performance_log | При включении debug_info, то в этом случае запустится демон-процесс, который с периодом performance_log_period будет подсчитывать производительность пушера и выводить результаты в лог. |
Пример конфигурационного файла
Приведённые значения установлены по-умолчанию
{
"debug_info": false,
"notification_status_buffer_size": 1000,
"proxy": {
"host": null,
"port": 3128,
"username": null,
"password": null
},
"push_tasks_pool": {
"core_size": 5,
"max_core_size": 50,
"queue_size":500
},
"performance_log": false,
"performance_log_period": 1000
}
Аутентификационные данные для приложений
Аутентификационные данные для отправки push-уведомлений в приложения задаются в файлах с именем %app_id%.json
в директории apps
(где %app_id%
— application/bundle ID).
Для iOS достаточно только одного из перечисленных вариантов аутентификации (p8/p12/firebase).
Пример файла с аутентификационными данными:
{
"android": {
"google_api_key": "AAAAoZ7vyz4:APA91bFqLfNe... ...DbKBCGCXk"
},
"ios": {
"apns_p8": {
"use_dev_gate": false,
"apns_key_id": "JVBQX52N5Z",
"apns_team_id": "48HZH4RWJD",
"apns_key": "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgE... ...tRHxUI6\n-----END PRIVATE KEY-----"
},
"apns_p12": {
"use_dev_gate": false,
"p12_file": "/opt/pc/apns_keyfile.p12",
"p12_pass": "Pa$$w0rd"
},
"firebase": {
"google_api_key": "AAAAoZ7vyz4:APA91bFqLfNe... ...DbKBCGCXk"
}
},
"huawei": {
"client_secret": "0a5be... ...f04bec3a",
"client_id": "10... ...79"
}
}
Шаблоны push-уведомлений
Шаблоны push-уведомлений в приложения задаются в файлах с именем %systemid%.json
, либо default.json
в директории systems
. Приоритет имеет файл с указанным SystemID. Пример файла с шаблонами:
{
"android": {
"templates": {
"transaction": [
{
"to": "%DEVICE_TOKEN%",
"notification": {
"tag": "%USER_ID%",
"title": "PayControl",
"body": "Новая операция для подтверждения",
"icon": "paycontrol_push",
"sound": "default"
},
"data": {
"type": "PayControl_v2"
}
},
{
"to": "%DEVICE_TOKEN%",
"data": {
"type": "PayControl_v2",
"userid": "%USER_ID%",
"transactionid": "%TRANSACTION_ID%"
}
}
]
}
},
"ios": {
"use_dev_gate": false,
"templates": {
"transaction": [
{
"aps": {
"alert": "Новая операция для подтверждения",
"sound": "default",
"badge": 1,
"mutable-content": 1,
"category": "NEW_OPERATION"
},
"type": "PayControl",
"userid": "%USER_ID%",
"transactionid": "%TRANSACTION_ID%",
"pc_notification_type": "alert",
"pc_notification_priority": 10,
"pc_notification_timeout": 600,
"pc_collapse_id": "%USER_ID%"
}
]
}
},
"huawei": {
"templates": {
"transaction": [
{
"validate_only": false,
"message": {
"android": {
"notification": {
"tag": "%USER_ID%",
"title": "PayControl",
"body": "Новая операция для подтверждения",
"icon": "paycontrol_push",
"click_action": {
"type": 3
}
}
},
"token": [
"%DEVICE_TOKEN%"
]
}
},
{
"validate_only": false,
"message": {
"android": {
"collapse_key": -1,
"urgency": "HIGH",
"ttl": "86400",
"data": "{\"type\": \"PayControl_v2\",\n\"userid\": \"%USER_ID%\",\"transactionid\": \"%TRANSACTION_ID%\"}"
},
"token": [
"%DEVICE_TOKEN%"
]
}
}
]
}
}
}