Серверные методы API

Серверный метод. Отправляет уведомления пользователям от имени приложения

Параметры:

								   api_id   - версия используемого api, в данный момент 1
								   method   - имя вызываемого метода, параметр должен принимать значение
								              sendNotification
								   format   - формат ответа, в данный момент только json
								   rnd      - любое случайно сгенерированное значение. Используется
								              для предотвращения кеширования запросов
								   app_id   - идентификатор приложения на сервере EXE.RU
								   user_ids - кому предназначено сообщение. Может быть нескольких видов:

								      user_ids = all - Cообщение отправляется всем пользователях с
								              установленной игрой, которые заходили в игру за
								              последний месяц. В дальнейшем такой тип запросов
								              называется общим уведомлением.
								      user_ids = id1[,id2,id3...] - Cообщение отправляется одному или
								              нескольким пользователям с перечисленными
								              идентификаторами. В дальнейшем называется групповым
								              уведомлением. Уведомление одному пользователю является
								              частным случаем группового уведомления.

								   message  - текст уведомления в кодировке UTF-8 (максимум 254 символа)
								   type     - тип нотификации. Задается разработчиком для статистики
								              (1-15, 0 - все типы)
								   test_mode- тестовый режим. При включенном тестовом режиме должен принимать
								              значение 1. В боевом режиме должен отсутствовать. Позволяет
								              выключенным приложениям отправлять тестовые нотификации
								              пользователям. Тестовые нотификации отправляются только
								              администрации(владелец, администраторы, тестировщики)
								              приложения.
								   sig      - подпись запроса. Формируется по следующему алгоритму:
								              Все параметры запроса сортируются по имени параметра в
								              естественном(натуральном) порядке, затем конкатенируются
								              в одну строку, в виде параметр1=значение1параметр2=значение2.
								              К полученной строке в конец конкатеникуется секретный ключ
								              приложения. Вся строка хешируется по алгоритму md5.
							

Для общих уведомлений ( user_ids=all ) сервер возвращает только результат принятия запроса на рассылку, или сообщение о произошедшей ошибке.

На все отправляемые уведомления от приложения накладываются следующие ограничения:

  1. Пользователь видит только одно уведомление от приложения. Все уведомления, отправленные ранее, не показываются.
  2. Общее уведомление обладает большим приоритетом. Если было отправлено общее и групповое уведомление, то показано будет только общее, не зависимо от очередности отправки.
  3. В течении 24 часов от одного приложения может быть отправлено только одно общее уведомление.
  4. Одному пользователю от одного приложения в течении одного часа может быть отправлено только одно уведомление.
  5. От одного приложения одному пользователю может быть отправлено не более 3-х уведомлений в сутки.
  6. Не будет отправлено повторное уведомление с тем же содержанием, что и предыдущее. (Нельзя отправить пользователю два сообщения подряд с одинаковым содержанием)

Уведомления, отправленные с параметром test_mode = 1, не изменяют лимиты приложения на отправку уведомлений, не изменяют лимиты пользователей, которым были отправлены уведомления.

Пример:

<?php
                    			   $appKey = 'W7kVvxVxZ4';

							 	   $params = [
							 		      'api_id' => 1,
                             		      'app_id' => 1,
                             		      'format' => 'json',
                             		      'message' => 'test message',
                             		      'method' => 'sendNotification',
                             		      'rnd' => rand(),
                             		      'type' => 1,
							 		      'user_ids' => 'all'
							 	   ];
 
								   ksort($params);
							
								   $paramsString = '';

								   array_walk($params, function($value, $key) use (&$paramsString) {
								      $paramsString .= $key . '=' .$value;
								   });

								   // Обратите внимание, подписываемая строка не url-кодирована!

								   $params['sig'] = md5($paramsString . $appKey);
 
								   $queryString = http_build_query($params);
 
								   // ?api_id=1&app_id=1&format=json&message=test+message&method=
								   // sendNotification&rnd=480392365&type=1&user_ids=all&sig=
								   // 74c0859c8c29407f6c25d172b9b802ea
							

Пример ответа, сервер принял запрос на проведение рассылки:

{
							   "response":true
							}

Пример ответа, сервер отказался принимать запрос на рассылку:

{
							   "response":false
							}

Для групповых уведомлений, ответ представляет собой список идентификаторов пользователей, которым уведомление было отправлено успешно, или сообщение о произошедшей ошибке.

Пример запроса:

<?php
						       $appKey = 'W7kVvxVxZ4';

							   $params = [
							      'api_id' => 1,
							      'app_id' => 1,
							      'format' => 'json',
						          'message' => 'test message 2',
							      'method' => 'sendNotification',
							      'rnd' => rand(),
							      'type' => 1,
							      'user_ids' => '1,2,3,4,5,6,7,8,9,10'
							   ];
 
							   ksort($params);
 
							   $paramsString = '';
 
							   array_walk($params, function($value, $key) use (&$paramsString) {
							      $paramsString .= $key . '=' .$value;
							   });

   							   // Обратите внимание, подписываемая строка не url-кодирована!

							   $params['sig'] = md5($paramsString . $appKey);
 
							   $queryString = http_build_query($params);
 
							   // ?api_id=1&app_id=1&format=json&message=test+message+2&method=
							   // sendNotification&rnd=1863846795&type=1&user_ids=
							   // 1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10&sig=
							   // 6b67ef56ec2c6a763fd2bf9a3cc0ed58
							

Пример ответа, сервер отправил уведомление пользователям 1,3,4,6,7,8,9,10

{
    						   "response":[1,3,4,6,7,8,9,10]
							}

Пример ответа, сервер не смог отправить уведомления ни одному пользователю:

{
							   "response":[]
							}