Материал из for iRidium developers
Перейти к: навигация, поиск
Other languages:
English • ‎русский

API iRidium. Push уведомления

методы для отправки Push уведомлений на iOS и Android устройства

читать инструкцию

смотреть видео-инструкцию

скачать пример


Методы

IR.SendPush

Только для iRidium Server! Отправить Push уведомление группе панелей управления

Синтаксис

IR.SendPush(title, js_data, group_id, [status_callback], [this_ptr], [sound_type]);

на входе значение описание
title "text of notify" type: string
текст уведомления
js_data "data" type: string, JSON
данные для передачи в скрипты приложения-клиента, получившего Push
group_id 1 type: number
идентификатор Группы устройств, которые получат уведомление. Группы настройте в личном кабинете на сайте, вкладка объекта "Пользователи и панели"
status_callback status type: function
функция обработки статуса Push. На входе функция получает объект, в котором хранятся код и текстовое описание результата отправки Push
this_ptr this type: this
указатель на окружение, будет доступен в status_callback как this
sound_type 0 type: number
тип звукового сигнала, который будет воспроизведен при получении устройством Push уведомления. 0 - короткий сингал (по умолчанию), 1 - длинный сигнал
на выходе

-


Пример

// simple Push (send a text)
IR.SendPush("Hello World!", "Data", 1);
 
 
// advanced Push (with data to JS and status processing)
function status (object) {
	IR.Log('Status of Push: ' + object.Error + ' - ' + object.ErrorDescription);
}
IR.SendPush("Hello World!", "data for JS", 1, status, this, 0);

объем текста и данных, которые можно отправить в Push, ограничен, и зависит от устройства, на которое вы посылаете уведомление (2 Кб для iOS, 4 Кб для Android). Если допустимый объем данных превышен, метод вернет ошибку отправки
символы & и # не поддерживаются в тексте сообщений и данных скрипта


Группы устройств

Чтобы панель управления получила уведомление, ее нужно поместить в Группу. Группа создается на сайте, во вкладке "Пользователи и панели" настроек облачного объекта. Группа присваивается сочетанию "пользователь+проект". Т.е. каждый проект одного пользователя может входить в разные группы и получать разные уведомления.

AttachPushGroup.png

1 Присвоить Группу пользователю и проекту. Группа будет автоматически присвоена любой панели управления, на которой пользователь авторизуется и скачает этот проект
2 Присвоить Группу панели управления по HWID. Можно убрать или добавить Группы для отдельных панелей

CreateOrEditPushGroup.png

1 Создать новую Группу (для отправки Push вы будете использовать Group ID)
2 Группы, в которые входит панель управления (пользователь и проект)
3 Группы, в которые панель управления не входит


Функция обработки статуса Push

Только для iRidium Server! Срабатывает при каждой отправке Push уведомления и получает результат отправки: успех или ошибку.

function status (object)
{
	IR.Log("Status of Push (Code): " + object.Error);
	IR.Log("Status of Push (Text): " + object.ErrorDescription);
}
IR.SendPush("Hello World!", "Data", 1, status, this, 0);
  • object.Error - код события, результата отправки Push. Код события:
    • 0 (Success) - успешная отправка
    • 1-10 (Error) - код ошибки
  • object.ErrorDescription - текстовое описание события


События

IR.EVENT_RECEIVE_PUSH_NOTIFY

Только для i3 pro! обработчик данных, полученных с Push уведомлением. В него придет текст уведомления, данные, предназначенные для JS и ID группы, которой предназначено уведомление.

Синтаксис

IR.AddListener(IR.EVENT_RECEIVE_PUSH_NOTIFY, 0, function (text, data, group) {}, [pointer]);

на входе значение описание
function function() {} type: function
не именованная функция или обращение к функции
pointer - type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе

-


Пример

IR.AddListener(IR.EVENT_RECEIVE_PUSH_NOTIFY, 0, function(text, data, group)
{
      IR.Log("EVENT_RECEIVE_PUSH_NOTIFY:" + text + " data:" + data + " group:" + group);
 
      if(data == "do the action")
      { 
            IR.Log("Ok I do"); 
      }         
      if(data.indexOf("{") == 0)
      {
         var obj = JSON.Parse(data);
         if(typeof(obj) != "undefined")
         {
            IR.Log("Json:OK");
            IR.Log(JSON.Stringify(obj));
         }
      }
});