Перейти к основному содержимому

API iRidium. Система

Функции, методы, свойства объектов, используемых для работы с приложением в контексте его запуска, выполнения, завершения и изменения операционной системой Объект IR - глобальный объект, содержащий в себе все функции и константы API iRidium. Методы объекта IR для управления системными событиями приложения iRidium.

Методы

IR.ShowSystemMenu

открыть системное меню. Выполнив команду, откроется системное меню.

Синтаксис

IR.ShowSystemMenu();

на входезначениеописание
-
на выходе
-

Пример

function ShowMenu () {
IR.ShowSystemMenu();
};

IR.SetEnableSystemMenu

Запретить / разрешить открытие системного меню.

Синтаксис

IR.SetEnableSystemMenu();

на входезначениеописание
modetruetype: boolean
* true - разрешить открытие системного меню.
* false - запретить открытие системного меню.
на выходе
-

Пример

function SystemMenu()
{
IR.SetEnableSystemMenu(true);
}

IR.GetEnableSystemMenu

Проверяет возможность открытия системного меню.

Синтаксис

IR.GetEnableSystemMenu();

на входезначениеописание
-
на выходе
modetruetype: boolean
* true - разрешение на открытие системного меню .
* false - запрет на открытие системного меню.

Пример

`IR.Log(IR.GetEnableSystemMenu());`

IR.SetEnableProjectMenu

Запретить / разрешить открытие меню проектов i3 Pro.

Синтаксис

IR.SetEnableProjectMenu();

на входезначениеописание
-
на выходе
modetruetype: boolean
* true - разрешить открытие меню проектов i3 Pro.
* false - запретить открытие меню проектов i3 Pro.

Пример

function ProjectMenu()
{
IR.SetEnableProjectMenu(true);
}

IR.GetEnableProjectMenu

Проверяет возможность открытия системного меню.

Синтаксис

IR.GetEnableSystemMenu();

на входезначениеописание
modetruetype: boolean
* true - разрешение на открытие меню проектов i3 Pro .
* false - запрет на открытие меню проектов i3 Pro.
на выходе
-

Пример

`IR.Log(IR.GetEnableProjectMenu());`

IR.ShowSettingsMenu

открыть боковое меню выбора проектов i3 pro на указанной вкладке

Синтаксис

IR.ShowSettingsMenu();

на входезначениеописание
-
на выходе
-

Пример

function ShowMenu () {
IR.ShowSettingsMenu();
};

IR.SetFullScreen

Перевести приложение в полноэкранный режим(или свернуть в окно)

Синтаксис

IR.SetFullScreen(mode);

на входезначениеописание
modetruetype: boolean
включить\выключить полноэкранный режим
* true - включить полноэкранный режим
* false - выключить полноэкранный режим
на выходе
-

Пример

`IR.SetFullScreen(true);`

Примечания

Подсказка
  • метод работает только на Windows

IR.IsFullScreen

Проверяет включен ли полноэкранный режим

Синтаксис

IR.IsFullScreen;

на выходе
modetruetype: boolean
* true - полноэкранный режим включен
* false - полноэкранный режим выключен
-

Пример

`IR.Log(IR.IsFullScreen);`

Примечания

Подсказка
  • метод работает только на Windows

IR.HWID

свойство объекта IR, хранит HWID панели управления, на которой запущено приложение i3 pro.

Синтаксис

IR.HWID

на входезначениеописание
-
на выходе
hwidff2c...1958type: string
HWID панели управления

Пример

IR.AddListener(IR.EVENT_START,0,function()
{
IR.Log("Panel HWID: "+IR.HWID); // Panel HWID: ff2c589a2879c0fe1158697d5d4c1958
});
Подсказка

Примечания

  • чтобы получить символ из HWID, используйте функцию charAt(symbol). Нумерация символов начинается с нуля: IR.Log(IR.HWID.charAt(0));

IR.Exit

закрыть приложение. Доступно только на Andorid и Windows

Синтаксис

IR.Exit();

на входезначениеописание
-
на выходе
-

Пример

function CloseApp () {
IR.Exit();
};
Подсказка

Примечания

  • доступно только на Andorid и Windows

IR.ShowKeyboard

показать системную клавиатуру iOS или Android устройства

Синтаксис

IR.ShowKeyboard(type, ok_text, color, capitalization)

на входезначениеописание
type1type: Number
тип клавиатуры, он же может закрыть клавиатуру (значение 0):
сработает на iOS и Android:
0 - Hide
1 - Regular
2 - URL address
3 - Numeric
4 - Phone number
5 - E-mail address
6 - Decimal
7 - Text
8 - Twitter
9 - Web search
10 - Numeric
11 - Password
сработает только на Android:
12 - Date and Time
13 - Date
14 - Time
15 - Numeric signed
16 - Numeric password
17 - Text characters
18 - Text sentences
19 - Text words
20 - Text ime multi line
21 - Text multi line
22 - Text suggestions
23 - Text email subject
24 - Text filter
25 - Text long message
26 - Text password
27 - Text phonetic
28 - Text postal address
29 - Text short message
30 - Text visible password
31 - Text web email address
32 - Text web password
33 - Smart
34 - Voice
ok_text0type: Number
текст, который будет отображаться на кнопке return:
1 - default
2 - go
3 - google
4 - join
5 - next
6 - route
7 - search
8 - send
9 - yahoo
10 - done
11 - call
12 - continue
color0type: Number
цвет клавиатуры:
1 - выбрать автоматически
2 - темная
3 - светлая
capitalization0type: Number
авто-капитализация текста:
1 - none
2 - первые буквы слов
3 - первые буквы предложений
4 - все символы
на выходе
---------
-

Пример

IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Item 1"), function()
{
IR.ShowKeyboard(1); // regular
IR.ShowKeyboard(1, 1, 1, 1); // regular, default, default, no capitalization
});
Подсказка

Примечания

  • На iOS для скрытия клавиатуры можно использовать команду IR.ShowKeyboard(0), на Android это не сработает.
  • Для открытия клавиатуры, все другие клавиатуры должны быть скрыты. Если клавиатура уже открыта, например числовая, то команда открыть клавиатуру с алфавитом будет не удачной.
  • Для открытия клавиатуры на Windows, используйте команду IR.Execute("osk").

IR.Execute

выполнить произвольную URL схему (команду операционной системе), которая поддерживается устройством. К таким командам относятся: открытие гиперссылку в браузере, отправить СМС, совершить звонок по номеру телефона, написать email, запустить приложение по имени, запустить приложение по указанному пути и др.

Синтаксис

IR.Execute(scheme)

на входезначениеописание
schemehttp://iridiummobile.nettype: string
команда, которую необходимо выполнить
на выходе
-

Пример

IR.AddListener(IR.EVENT_START, 0, function() {
IR.Execute('http://iridiummobile.net');
});
Подсказка
  • примеры URL схем
// All
IR.Execute("http://iridiummobile.net"); // open link
IR.Execute("mailto:support@iridiummobile.ru"); // send email
// Windows
IR.Execute("cmd"); // command string
IR.Execute("ping","-t ya.ru"); //launch ping with link
IR.Execute("calc"); // calculator
IR.Execute("c:\\Program Files\\iRidium\\iRidium.exe"); // launch app
// iOS, Android
IR.Execute("music:"); // open Music
IR.Execute("videos:"); // open Videos
IR.Execute("ibooks://"); // open iBooks
IR.Execute("fb://feed"); //open Facebook
IR.Execute("twitter://"); // open Twitter
// iPhone, Android smartphone
IR.Execute("tel://+1234567890"); // call to
IR.Execute("sms://+1234567890"); // send SMS
  • Windows: для запуска приложения на Windows каждый одинарный слеш в пути к файлу должен быть заменен на двойной обратный слеш

IR.GetSystemInfo

получить информацию о памяти и кэше приложения

Синтаксис

IR.GetSystemInfo("GC_MEMORY_INFO").property

на входезначениеописание
propertyUsedMemorytype: object
свойство, которое необходимо вернуть:
* .UsedMemory
* .TotalMemory
* .ChunkHeaps
* .ChunkCache
* .MemoryHeaps
* .MemoryBusyBlocks
* .MemoryFreeBlocks
на выходе
propertytype: string
значение в свойстве

Пример

IR.AddListener(IR.EVENT_START,0,function() {
IR.Log(IR.GetSystemInfo("GC_MEMORY_INFO").UsedMemory);
});

IR.GetCurrentWlanInfo

получить информацию о беспроводной сети, к которой подключена панель управления.Список сетей объединяется в массив. Каждая сеть - элемент массива, включающий фиксированный список свойств.

Синтаксис

IR.GetCurrentWlanInfo()[element].property

на входезначениеописание
element0...ntype: number
номер элемента массива, соответствующий порядковому номеру сетевого подключения
propertyNametype: object
свойство, которое необходимо вернуть:
* .Name - тип сетевого подключения
* .SSID - имя сети
на выходе
propertytype: string
значение в свойстве

Пример

`IR.Log(IR.GetCurrentWlanInfo()[0].SSID)`

IR.AddListener(IR.EVENT_START,0,function()
{
var l_aWlanInfo = IR.GetCurrentWlanInfo();
if (l_aWlanInfo.length) {
IR.Log("Name = " + l_aWlanInfo[0].Name);
IR.Log("SSID = " + l_aWlanInfo[0]['SSID']);
} else {
IR.Log("There is no network connections found");
}
});
Подсказка
  • Проверяйте длину массива, чтобы убедиться в наличии хотя бы одной сети

IR.GetCurrentLocalIPInfo

получить сетевые настройки панели управления, на которой работает i3 pro

примечание
  • На iOS 7 и выше нет возможности получить MAC адрес сетевого интерфейса с помощью этого метода.

Синтаксис

IR.GetCurrentLocalIPInfo()[element].property

на входезначениеописание
element0...ntype: number
номер элемента массива, соответствующий порядковому номеру сетевого подключения
propertyNametype: object
свойство, которое необходимо вернуть:
* .Name - имя сетевого соединения
* .IP - IP адрес панели управления
* .Mask - маска подсети
* .MAC - MAC адрес
на выходе
propertytype: string
значение в свойстве

Пример

IR.AddListener(IR.EVENT_START,0,function()
{
var l_aIPInfo = IR.GetCurrentLocalIPInfo();
IR.Log("Name = " + l_aIPInfo[0].Name);
IR.Log("IP = " + l_aIPInfo[0].IP);
IR.Log("Mask = " + l_aIPInfo[0].Mask);
IR.Log("MAC = " + l_aIPInfo[0].MAC);
});
Подсказка

Начиная с версии Android 11 и выше - MAC адрес будет не доступен.

IR.SetStatusAutoUpdateProject

Включить / выключить автообновление проекта.

Синтаксис

IR.SetStatusAutoUpdateProjects(mode););

на входезначениеописание
modetruetype: boolean
включить/выключить автообновление проекта:
* true - включить автообновление проекта;
* false - отключить автообновление проекта.
на выходе
-

Пример

function AutoUpdate()
{
IR.SetStatusAutoUpdateProjects(true);
};

IR.Log

вывести данные в консоль отладки приложения i3 pro (консоль на Windows открывается клавишей F4)

Синтаксис

IR.Log(data);

на входезначениеописание
datatype: object
данные для вывода в лог, string, number, array
на выходе
datatype: string
строковые данные в логе приложения

Пример

IR.AddListener(IR.EVENT_START,0,function() {
IR.Log("Hello World!");
});
Подсказка
  • данные, отправленные в консоль, конвертируются в строку
  • В ОС Windows 7 максимальный размер одной строки, выводимой в консоль, 30 кбайт.

IR.SetInterval

повторять действия в цикле, с установленным интервалом (мс)

Синтаксис

IR.SetInterval(time, action)

на входезначениеописание
time500type: number
(мс) интервал выполнения функции
actionfunction() { }type: number
не именованная функция или имя функции, которая содержит список действий для выполнения в цикле
на выходе
-

Пример

function actions()
{
IR.Log("do action");
}
IR.SetInterval (2000, actions);


IR.SetInterval (2000, function()
{
IR.Log("do action");
});


var Inv = IR.SetInterval (2000, function()
{
IR.Log("do action");
});
IR.ClearInterval(Inv);


function action()
{
IR.Log("do action");
for(var i in this)
{
IR.Log(this + "=" + this[i]);
};
IR.ClearInterval(Id);
}
var param = {a:1, b:2, c:3};
var Id = IR.SetInterval(2000, action, param);
Подсказка
  • запущенный IR.SetInterval будет работать, пока открыт проект, если его не остановить с помощью IR.ClearInterval
  • Интервал можно остановить, только обратившись к нему по имени переменной. Поэтому при создании интервала нужно присвоить его переменной
  • Не рекомендуется использовать в объемных проектах
  • JavaScript в iRidium работает в одном потоке. Это значит, что все функции в нем выполняются последовательно. Для функции IR.SetInterval это приводит к тому, что каждый цикл выполнения скрипта может занять разное время. Это приводит к погрешности выполнения интервалов, которая зависит от количества и типа выполняемых операций. Система компенсирует погрешность автоматически для сохранения точности в больших промежутках времени (чтобы избежать накопления временных ошибок), поэтому интервалы могут отличаться на величину от десятков до сотен миллисекунд в большую и меньшую сторону. Учитывайте это при создании команд, минимальный интервал между которыми может быть критичен - указывайте большее значение интервала или используйте функцию IR.SetTimeout, которая не использует механизм компенсации.

IR.SetTimeout

выполняет функцию после задержки (мс)

Синтаксис

IR.SetTimeout(time, action)

на входезначениеописание
time500type: number
(мс) задержка выполнения функции
actionfunction() { }type: number
не именованная функция или имя функции, которая содержит список действий для выполнения с задержкой
на выходе
-

Пример

function actions()
{
IR.Log("do action");
}
IR.SetTimeout(2000, actions);


IR.SetTimeout(2000, function()
{
IR.Log("do action");
});


var Tmr = IR.SetTimeout(2000, function()
{
IR.Log("do action");
});
IR.ClearInterval(Tmr);

Примечания

Подсказка
  • запущенный IR.SetTimeout можно остановить с помощью IR.ClearInterval (отдельной функции IR.ClearTimeout не существует).
  • Таймер можно остановить, только обратившись к нему по имени переменной. Поэтому при создании интервала нужно присвоить его переменной
  • Не рекомендуется использовать в объемных проектах

IR.ClearInterval

удаляет таймеры IR.SetInterval и IR.SetTimeout по идентификатору. Чтобы получить идентификатор, сохраните его в переменную. Это возможно только при создании таймера.

Синтаксис

IR.ClearInterval(timer_id)

на входезначениеописание
timer_idvar timertype: object
идентификатор таймера, который нужно удалить
на выходе
-

Пример

var id = IR.SetTimeout (10000, function ()
{
IR.Log("do something");
});
IR.SetTimeout(5000, function () // stop after 5000 ms
{
IR.ClearInterval(id);
});
Подсказка
  • используется для удаления IR.SetInterval и IR.SetTimeout

  • получить идентификатор для удаления можно только при создании таймера

IR.AddListener

создает слушатель - функцию, которая выполняется в случае срабатывания указанного ей события. Событие - процесс, проброшенный в скрипты и имеющий идентификатор для отслеживания. Список событий, разделенный по типам, доступен в справочнике.

Синтаксис

IR.AddListener(event, input, function, [pointer]);

на входезначениеописание
eventtype: object
идентификатор события, за которым следит слушатель
inputtype: object
входной параметр, необходимый для создания слушателя. Если параметра нет, укажите 0
functionfunction() {}type: function
не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия
pointertype: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
-

Пример

IR.AddListener(IR.EVENT_START,0,function()
{
IR.Log("app started");
});
IR.AddListener(IR.EVENT_ITEM_PRESS,IR.GetItem("Page 1").GetItem("Item 61"),function()
{
IR.Log("button 61 pressed");
});


**Пример 2:**

for(var i = 0; i < IR.GetItem("Page 1").ItemsCount; i++){
// объявление слушателя и добавление pointer'а
IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem(i), press, IR.GetPage("Page 1").GetItem(i) );
}
function press(){
//выводим в лог имя сработавшей кнопки, используя this как ссылку на объект
IR.Log(this.Name);
}
Подсказка
  • О выполнении скрипта с помощью слушателей читайте в Руководстве

IR.RemoveListener

удаляет слушатель созданный с помощью IR.AddListener. Функции необходимо передать те же параметры, что были указаны при создании слушателя.

Синтаксис

IR.RemoveListener(event, input, function, [pointer]);

на входезначениеописание
eventtype: object
идентификатор события, за которым следит слушатель
inputtype: object
входной параметр, необходимый для создания слушателя. Если параметра нет, укажите 0
functionfunction() {}type: function
именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия
pointertype: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
-

Пример

function pressed ()
{
IR.Log("action");
}
// add listener
IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Item 61"), pressed);
// remove listener
IR.RemoveListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Item 61"), pressed);


var l_pressed;
// add listener
IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Item 61"), l_pressed = function ()
{
IR.Log("action");
});
// remove listener
IR.RemoveListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Item 61"), l_pressed);

IR.SetGlobalListener

создает глобальный слушатель - функцию, которая выполняется в случае срабатывания указанного ей события. Может работать только с двумя событиями: IR.EVENT_GLOBAL_TAG_CHANGE (срабатывает при изменении любого тега в iRidium).

В отличие от IR.AddListener, глобальный слушатель в можно объявить только 1 раз. При повторном объявлении, работать будет только последний слушатель, созданный интерпретатором при запуске скрипта.

Чтобы слушатель сработал при изменении тега в проекте iRidium, на это изменение нужно подписаться методом IR.SubscribeTagChange

Синтаксис

IR.SetGlobalListener(event, function, [pointer]);

на входезначениеописание
eventIR.EVENT_GLOBAL_TAG_CHANGEtype: object
идентификатор события, за которым следит глобальный слушатель:IR.EVENT_GLOBAL_TAG_CHANGE - срабатывает при изменении любого тега в iRidium
functionfunction(name, value) {}type: function
не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия. В функцию передаются имя тега, на который есть подписка, и измененное значение
pointertype: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
-

Пример

// Set global listener
IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
{
IR.Log("Active Global Listener: " + name + "\tValue: " + value);
});
// Subscribe
IR.SubscribeTagChange("Drivers.KNX.Online"); // driver token
IR.SubscribeTagChange("Drivers.KNX.Address 1"); // driver feedback
IR.SubscribeTagChange("Global.Token 1"); // project token
IR.SubscribeTagChange("UI.Page 1.Item 1.Text"); // item property
IR.SubscribeTagChange("System.Time.Hour"); // system time, hours
IR.SubscribeTagChange("System.Time.Minutes"); // system time, minutes


// resend the data from KNX Address 1 to Address 2 on change (for iRidium Server)
IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
{
if (name == "Server.Channels.KNX.Address 1")
IR.SetVariable("Server.Channels.KNX.Address 2", value);
});
IR.SubscribeTagChange("Server.Channels.KNX.Address 1");
Подсказка
  • в слушатель будет приходить полное имя тега, на который вы подписались (name)
  • Глобальный слушатель можно создать в проекте только 1 раз, иначе работать будет только последний
  • Слушатель реагирует на изменение тега, только если подписан на этот тег методом IR.SubscribeTagChange
  • Слушатель реагирует только на изменение тега (не сработает, если пришло значение, равное текущему)
  • Максимальное число подписок на глобальный слушатель практически не ограничено (близко к млн)
  • Отписаться от тега: IR.UnsubscribeTagChange

IR.SubscribeTagChange

подписаться на изменение тега iRidium через глобальный слушатель на событие IR.EVENT_GLOBAL_TAG_CHANGE. Теги, на которые подписан слушатель, возвращают свое значение при каждом изменении.

Синтаксис

IR.SubscribeTagChange(name);

на входезначениеописание
name"Drivers.AV (TCP).Feedback 1"type: string
полное имя тега, на который нужно подписаться с помощью глобального слушателя IR.EVENT_GLOBAL_TAG_CHANGE
на выходе
-

Пример

//Set global listener
IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
{
IR.Log("Global Listener Activated: " + name + "\tValue: " + value);
});
// Subscribe
IR.SubscribeTagChange("Drivers.KNX IP Router.Address 1");
IR.SubscribeTagChange("Drivers.AV & Custom Systems (TCP).Online");
IR.SubscribeTagChange("UI.Page 1.Item 1.Text");
IR.SubscribeTagChange("System.Time.24");


// resend the data from KNX Address 1 to Address 2 on change (for iRidium Server)
IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
{
if (name == "Server.Channels.KNX.Address 1")
IR.SetVariable("Server.Channels.KNX.Address 2", value);
});
IR.SubscribeTagChange("Server.Channels.KNX.Address 1");
Подсказка

IR.UnsubscribeTagChange

отписаться от тега iRidium, изменение которого отслеживается глобальным слушателем на событие IR.EVENT_GLOBAL_TAG_CHANGE. Подписка на тег осуществляется методом IR.SubscribeTagChange

Синтаксис

IR.UnsubscribeTagChange(name);

на входезначениеописание
name"Drivers.AV (TCP).Feedback 1"type: string
полное имя тега, от которого нужно отписаться
на выходе
-

Пример

//Set global listener
IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
{
IR.Log("Global Listener Activated: " + name + "\tValue: " + value);
});
// Subscribe
IR.SubscribeTagChange("UI.Page 1.Item 1.Text");
// Unsubscribe
IR.UnsubscribeTagChange("UI.Page 1.Item 1.Text");
Подсказка

IR.CopyToClipboard

копировать строку в буфер обмена устройства на базе iOS, Android, Windows

Синтаксис

IR.CopyToClipboard(text)

на входезначениеописание
text'data'type: string
строка, которую нужно поместить в буфер обмена
на выходе
-

Пример

IR.AddListener(IR.EVENT_START, 0, function()
{
IR.CopyToClipboard(IR.GetVariable("System.Device.Name") + " HWID: " + IR.HWID);
});

IR.PasteFromClipboard

Вставить текст из буфера обмена в активный Editbox. Текст будет вставлен только если в буфере действительно находится Текст (а не изображение или др. контент). Курсор позиционируется после вставленного текста

Синтаксис

IR.PasteFromClipboard()

на входезначениеописание
-
на выходе
-

Пример

IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Paste Button"),function()
{
IR.PasteFromClipboard();
});
Подсказка
  • применение - клавиша вставки текста (можно расположить ее рядом с полем ввода)

IR.GetClipboard

Получить текст из буфера обмена

Синтаксис

IR.GetClipboard()

на входезначениеописание
-
на выходе
-

Пример

`var clipboard = IR.GetClipboard();`
Подсказка
  • применение - передать текст из буфера в скрипт

IR.ShowPasteHelper

над курсором в активном EditBox этот метод отобразит нативное, масштабируемое в соответствии с разрешением проекта всплывающее окно: "PasteHelper" c надписью Paste, аналогично инструменту вставки на iOS и Android устройствах. По нажатию на это всплывающее окно, выполяется команда IR.PasteFromClipboard();. Нажатие на окно вставки, повторное нажатие на поле ввода или смена фокуса сразу закрывают PasteHelper

Синтаксис

IR.ShowPasteHelper()

на входезначениеописание
-
на выходе
-

Пример

IR.AddListener(IR.EVENT_ITEM_HOLD, IR.GetItem("Page 1").GetItem("EditBox"),function()
{
IR.ShowPasteHelper();
});
Подсказка

Поведение инструмента вставки (элемент EditBox):

  • Windows:
    • при нажатии Ctrl+V, автоматически срабатывает IR.PasteFromClipboard();, если буфер не пустой и в нем находится текст
    • по нажатию правой кнопкой мыши на поле ввода, отображается стандартный диалог "Вставить"
    • курсор перемещается в конец строки
  • iOS, Android:
    • при удержании пальца на поле ввода в течение 1 секунды, автоматически срабатывает IR.ShowPasteHelper();, диалог Paste будет скрыт при нажатии на любой элемент
    • курсор перемещается в конец строки

IR.GetDesignsCount

подсчитывает число проектов визуализации в памяти приложения.

Синтаксис

IR.GetDesignsCount();

на входезначениеописание
-
на выходе
number1type: number
число проектов, загруженных в память панели управления

Пример

IR.AddListener(IR.EVENT_START, 0, function() {
var l_iCount = IR.GetDesignsCount();
IR.Log("Designs Count = " + l_iCount);
IR.Log("Current Project: " + IR.ProjectName);
for(var i = 0; i < l_iCount; i++) {
var l_sName = IR.GetDesignByIndex(i);
IR.Log("Design(" + i + "): " + l_sName.Name);
}
});
Подсказка

Использованы дополнительно:

  • IR.ProjectName - свойство объекта IR, хранит имя проекта, который сейчас открыт в i3 pro
  • IR.GetDesignByIndex(i) - получить ссылку на проект, как объект, обратившись к нему по индексу в списке загруженных проектов

IR.DesignSwitch

переключает между проектами визуализации в памяти панели.

Синтаксис

IR.DesignSwitch(name,[id]);

на входезначениеописание
name"Welcome"type: string
имя проекта в панели или облаке, на который нужно переключиться
id116897type: number
идентификатор проекта в облаке, на который нужно переключиться (опционально, обязательно для указания проектов в облаке)
на выходе
-

Пример

var ID;
IR.AddListener(IR.EVENT_START, 0, function() {
var l_iCount = IR.GetDesignsCount();
IR.Log("Designs Count = " + l_iCount);
IR.Log("Current Project: " + IR.ProjectName);
for(var i = 0; i < l_iCount; i++) {
var l_sName = IR.GetDesignByIndex(i);
IR.Log("Design(" + i + "): " + l_sName.OriginalName + ", ID "+l_sName.CloudID);
if (l_sName.OriginalName == "ProjectName") //project name
ID = l_sName.CloudID
}
});
function switch_to() {
//IR.DesignSwitch("Welcome"); // local project name .irpz you want to switch to
IR.DesignSwitch("ProjectName", ID); // project name and id in Iridium Cloud you want to switch to
IR.Log("test");
}
Подсказка

в примере, по нажатию кнопки мы переключаемся на стартовую страницу приложения (проект Welcome.irpz). Использованы дополнительно:

  • IR.GetDesignsCount() - получить количество проектов, загруженных в i3 pro
  • IR.ProjectName - свойство объекта IR, хранит имя проекта, который сейчас открыт в i3 pro
  • IR.GetDesignByIndex(i) - получить ссылку на проект, как объект, обратившись к нему по индексу в списке загруженных проектов
  • IR.GetDesignByIndex().OriginalName - оригинальное имя проекта, которое указано для него в панели или в облаке
  • IR.GetDesignByIndex().CloudID - уникальный идентификатор проекта в облаке
Подсказка

Пример: DesignSwitch

IR.AndroidSendIR

отправить ИК команду через встроенный ИК-эмиттер Android устройства (IRDA)

Синтаксис

IR.AndroidSendIR(frequency, command);

на входезначениеописание
frequency38000type: number
(Гц) частота отправки ИК команды
command[67,67,44,...,55,53,13]type: array
ИК команда в виде массива, включающего пульсы и паузы ИК сигнала
на выходе
-

Пример

`IR.AndroidSendIR(38000, [67,67,67,67,67,66,67,67,67,67,67,67,66,67,66,66,66,66,66,66,44,50,49,44,55,53,54,13]);`
Подсказка
  • если у вас команда в HEX формате, ее можно преобразовать в формат для отправки с помощью программы iConvert от Global Cache

IR.CalculateCRC

Подсчитать контрольную сумму строки (CRC) по алгоритму CRC8, CRC16 или CRC32

Синтаксис

IR.CalculateCRC(algorithm, string);

на входезначениеописание
algorithmIR.CRC_16type: object
алгоритм подсчета CRC:
* IR.CRC_8
* IR.CRC_16
* IR.CRC_32
string"Test"type: string
строка, для которой нужно подсчитать CRC
на выходе
CRC7205type: number
результат подсчета CRC

Пример

var crc8 = IR.CalculateCRC(IR.CRC_8,  "Test");
var crc16 = IR.CalculateCRC(IR.CRC_16, "Test");
var crc32 = IR.CalculateCRC(IR.CRC_32, "Test");
IR.Log(crc8) // 207
IR.Log(crc16) // 7205
IR.Log(crc32) // 2018365746

IR.CalculateHash

Подсчитать хеш-сумму строки (hash) по алгоритму MD5, SHA1, SHA256, SHA384, SHA512, HMACSHA1, HMACSHA256, HMACSHA384, HMACSHA512 или HMACMD5.

IR.CalculateCRC(algorithm, string, type, key);

на входезначениеописание
algorithmIR.HASH_MD5type: object
алгоритм подсчета хеш-суммы

(используют только параметры algorithm и string):
IR.HASH_MD5,
IR.HASH_SHA1,
IR.HASH_SHA256,
IR.HASH_SHA384,
IR.HASH_SHA512

(используют все 4 параметра):
IR.HASH_HMACSHA1,
IR.HASH_HMACSHA256,
IR.HASH_HMACSHA384,
IR.HASH_HMACSHA512,
IR.HASH_HMACMD5
string"Test"type: string
строка, для которой нужно подсчитать хеш-сумму
type0type: number
формат вывода данных:
0 - строка,
1 - байтовый массив.
key"6af02e...286d2"type: string
ключ шифрования данных.
на выходезначениеописание
hash0cbc66...5a615btype: number
результат подсчета хеш-суммы

Пример для алгоритмов MD5, SHA1, SHA256, SHA384, SHA512:

var hashMD5 = IR.CalculateHash(IR.HASH_MD5, "Test");
var hashSHA1 = IR.CalculateHash(IR.HASH_SHA1, "Test");
var hashSHA256 = IR.CalculateHash(IR.HASH_SHA256, "Test");
var hashSHA384 = IR.CalculateHash(IR.HASH_SHA384, "Test");
var hashSHA512 = IR.CalculateHash(IR.HASH_SHA512, "Test");

IR.Log(hashMD5); // 0cbc6611f5540bd0809a388dc95a615b
IR.Log(hashSHA1); // 640ab2bae07bedc4c163f679a746f7ab7fb5d1fa
IR.Log(hashSHA256); // 532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25
IR.Log(hashSHA384); // 7b8f4654076b80eb963911f19cfad1aaf4285ed48e826f6cde1b01a79aa73fadb5446e667fc4f90417782c91270540f3
IR.Log(hashSHA512); // c6ee9e33cf5c6715a1d148fd73f7318884b41adcb916021e2bc0e800a5c5dd97f5142178f6ae88c8fdd98e1afb0ce4c8d2c54b5f37b30b7da1997bb33b0b8a31

Пример для алгоритмов HMACSHA1, HMACSHA256, HMACSHA384, HMACSHA512, HMACMD5:

var textData = 'iRidi';
var secretKey = '9212a1010dde4d4fbcb0';
var HASH_HMACSHA256 = IR.CalculateHash(IR.HASH_HMACSHA256, textData, 1, secretKey);
var HASH_HMACSHA = IR.CalculateHash(IR.HASH_HMACSHA1, textData, 1, secretKey);
var HASH_HMACSHA384 = IR.CalculateHash(IR.HASH_HMACSHA384, textData, 1, secretKey);
var HASH_HMACSHA512 = IR.CalculateHash(IR.HASH_HMACSHA512, textData, 1, secretKey);
var HASH_HMACMD5 = IR.CalculateHash(IR.HASH_HMACMD5, textData, 1, secretKey);

IR.Log(HASH_HMACSHA256); // 14,70,95,95,20,12,211,73,234,5,235,195,81,174,41,46,156,92,193,71,9,81,240,87,16,228,88,130,224,193,151,95
IR.Log(HASH_HMACSHA); // 244,101,165,67,222,85,108,145,20,89,16,231,57,40,39,48,136,49,151,163
IR.Log(HASH_HMACSHA384); // 92,90,124,178,158,199,230,160,28,34,156,136,1,248,177,174,191,32,82,108,124,107,203,61,203,204,14,141,143,132,175,104,20,46,227,3,100,3,30,66,110,240,4,194,120,85,187,66
IR.Log(HASH_HMACSHA512); // 106,247,151,52,13,155,173,249,228,182,129,10,4,56,118,233,176,26,104,200,65,250,133,35,229,1,201,249,143,8,125,234,72,16,202,211,119,121,28,173,3,23,206,137,69,159,196,221,53,90,43,222,142,20,254,56,210,122,152,229,132,150,189,25
IR.Log(HASH_HMACMD5); // 253,150,247,65,231,140,184,168,151,164,208,197,253,148,230,104

IR.UrlDecode

заменяет UTF-8 управляющие последовательности соответствующими символами (декодирует UTF-8)

Синтаксис

IR.UrlDecode(url);

на входезначениеописание
url'http://www.google.com/search?&q=%D0%BE%D0%BA'type: string
строка UTF-8, обычно ссылка, которую нужно декодировать
на выходе
urlhttp://www.google.com/search?&q=окtype: string
результат

Пример

IR.AddListener(IR.EVENT_START,0,function()
{
var utf8_encode = encodeURI('http://www.google.com/search?&q=ок');
IR.Log(utf8_encode); // http://www.google.com/search?&q=%D0%BE%D0%BA
var decode = IR.UrlDecode(utf8_encode);
IR.Log(decode); // http://www.google.com/search?&q=ок
});

IR.HtmlDecode

раскодировать спецсимволы (ссылки-мнемоники) в HTML структуре

Синтаксис

IR.HtmlDecode(text)

на входезначениеописание
text"&gt;"type: string
исходный текст
на выходе
text>type: string
раскодированный текст

Пример

IR.AddListener(IR.EVENT_START, 0, function() {
var data = IR.HtmlDecode("&gt;");
IR.Log(data); // >
});
Подсказка

Функция декодирует не все стандартные мнемоники. Полный перечень декодируемых мнемоник:

&lt; &gt; &quot; &amp; &nbsp; &iexcl; &cent; &pound; &curren; &yen; &brvbar; &sect; &uml;
&copy; &ordf; &laquo; &raquo; &not; &shy; &reg; &macr; &deg; &plusmn; &sup2; &sup3;
&acute; &micro; &para; &middot; &cedil; &sup1; &ordm; &frac14; &frac12; &frac34;
&iquest; &Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; &AElig;
&Ccedil; &Egrave; &Eacute; &Ecirc; &Euml; &Igrave; &Iacute; &Icirc; &Iuml; &ETH; &Ntilde;
&Ograve; &Oacute; &Ocirc; &Otilde; &Ouml; &times; &Oslash; &Ugrave; &Uacute; &Ucirc; &Uuml;
&Yacute; &THORN; &szlig; &agrave; &aacute; &acirc; &atilde; &auml; &aring; &aelig; &ccedil;
&egrave; &eacute; &ecirc; &euml; &igrave; &iacute; &icirc; &iuml;
&eth; &ntilde; &ograve; &oacute; &ocirc; &otilde; &ouml; &divide;
&oslash; &ugrave; &uacute; &ucirc; &uuml; &yacute; &thorn; &yuml;
&apos; &OElig; &oelig; &Scaron; &scaron; &Yuml; &circ; &tilde;
&ndash; &mdash; &lsquo; &rsquo; &sbquo; &ldquo; &rdquo; &bdquo;
&dagger; &Dagger; &permil; &lsaquo; &rsaquo; &euro;

IR.Base64Encode

закодировать строку / массив в формате Base64. Синтаксис

IR.Base64Encode(data, data_type)

на входезначениеописание
data"Hello"type: string
исходные данные. / array
data_type0 / 1type: number
тип данных:
0 - строка,
1 - массив.
на выходе
code"SGVsbG8="type: string
закодированный текст Base64

Пример

<translate><!--T:372-->
//Пример 1:</translate>
IR.Log(IR.Base64Encode([0x48, 0x65, 0x6c, 0x6c, 0x6f], 1)); // <translate><!--T:373-->
зашифровать массив данных</translate>
<translate><!--T:374-->
//Пример 2:</translate>
IR.Log(IR.Base64Encode("Hello", 0)); // <translate><!--T:375-->
зашифровать строку</translate>
//Пример 3:
IR.Log(IR.Base64Encode("Hello")); // <translate><!--T:376-->
зашифровать строку (устаревший метод)</translate>

IR.Base64Decode

раскодировать строку/ массив в формате Base64. Синтаксис

IR.Base64Decode(code, data_type)

на выходе
data"Hello"type: string / array
исходный текст / массив данных
на выходе
data"Hello"type: string / array
исходный текст / массив данных

Пример

<translate><!--T:382-->
//Пример 1:</translate>
IR.Log(IR.Base64Decode("SGVsbG8=", 1)); // <translate><!--T:383-->
расшифровать массив</translate>
<translate><!--T:384-->
//Пример 2:</translate>
IR.Log(IR.Base64Decode("SGVsbG8=", 0)); // <translate><!--T:385-->
расшифровать строку</translate>
<translate><!--T:386-->
//Пример 3:</translate>
IR.Log(IR.Base64Decode("SGVsbG8=")); // <translate><!--T:387-->
расшифровать строку (устаревший метод)</translate>

IR.IsModuleLicensed

метод, применимый для коммерциализации уникальных скриптов. Позволяет узнать, есть ли в лицензии iRidium конкретный "продукт". Продукты включаются в коммерческие лицензии iRidium mobile по специальной договоренности с разработчиком скрипта. Принцип использования:

  1. Создайте скрипт, который хотите зашифровать и распространять на коммерческой основе
  2. Свяжитесь с менеджером iRidium mobile, чтобы получить уникальный ID для своего продукта - скрипта
  3. Добавьте в скрипт проверку ID методом IR.IsModuleLicensed(id), чтобы скрипт не начал работать, пока проект не получит соответствующую лицензию
  4. Защитите файл скрипта паролем, чтобы распространять его другим пользователям
  5. Свяжитесь с менеджерами, чтобы согласовать процедуру включения ID вашего продукта в коммерческие лицензии

Синтаксис

IR.IsModuleLicensed(id)

на входезначениеописание
id57599type: number
уникальный ID продукта, предоставленный разработчику компанией iRidium mobile, хранится в лицензии
на выходе
successtruetype: boolean
результат проверки:
* true - если продукт есть в лицензии
* false - если нет

Пример

function RunProtectedModule  () {
// protected content
}
// unique module ID = 65537;
if (IR.IsModuleLicensed(65537)) RunProtectedModule ();
Подсказка
  • Trial лицензия и тестовый режим всегда возвращают true на проверку ID модуля, это обусловлено принципом бесплатного использования продуктов iRidium в тестовом режиме

  • Для драйвера AV & Custom Systems ID = 6, для AV & Custom HTTP ID = 14.

IR.ValidatePassword()

Метод позволяет использовать из скриптов стандартную 4-уровневую систему паролей проекта. Это может понадобиться, например, если вы хотите создать собственное окно запроса пароля, или запрашивать пароль по произвольному событию. Метод позволяет сравнить введенный пароль с настроенным в проекте, обеспечивает использование одного набора паролей для всех операций и возможность замены пароля в процессе работы.

Синтаксис

IR.ValidatePassword(pwd_number, check_string)

на входезначениеописание
pwd_number1type: number
1...4 - номер пароля (сами пароли настраиваются в свойствах проекта), с которым нужно сравнить проверяемый пароль
check_string"password"type: string
пароль, который будет сравнен с настроенным в свойствах проекта
на выходе
resulttruetype: boolean
результат проверки, true - пароль верный, false - не верный

Пример

var editbox = IR.GetItem("Page 1").GetItem("Item 1"); // editbox item on page
IR.AddListener(IR.EVENT_ITEM_CHANGE, editbox, function (action, key) // listen to changes in Editbox
{
if (action == 2) { // when press Enter in Editbox item
var confirm = IR.ValidatePassword(1, editbox.Text) // check the password from Editbox
if (confirm) {
IR.Log("Access confirmed!");
// any action have to be activated by correct password
} else {
IR.Log("Access denied!");
}
}
});
Подсказка
  • если в настройках проекта пароль не задан, метод всегда будет возвращать true

IR.TouchIDStart()

Метод вызывает системную функцию, запрашивающую у пользователя отпечаток пальца.

Важно
  • Метод работает только на iOS 11 и выше, Android и на устройствах со сканером отпечатка пальца.
  • На устройствах iOS отображается системное окно, запрашивающее отпечаток пальца, в ОС Android системное окно не отображается, системная функция работает в фоновом режиме.

Синтаксис

IR.TouchIDStart(function(status){}, {}, reason)

на входезначениеописание
reason"Place your finger on the
fingerprint scanner to authorize."
type: string
текст, отображаемый пользователю в системном окне и объясняющий причину запроса отпечатка пальца. Только для iOS. В случае ОС Android текст не отображается, можно передать любую строку, например, пустую.
на выходе
statustruetype: boolean
результат сканирования отпечатка пальца:
true - успешно,
false - сканирование отменено.
function()-type: function
функция-обработчик результата сканирования отпечатка пальца

Пример

var button = IR.GetPage("Page 1").GetItem("Button");
var result = IR.GetPage("Page 1").GetItem("Result");
IR.AddListener(IR.EVENT_ITEM_RELEASE, button, function() {
IR.TouchIDStart(function(status) {
IR.Log("STATUS: " + status);
result.Value = status;
}, {}, "reason");
});
Подсказка
  • На устройствах iOS на время открытия системного окна TouchID приложение i3 pro сворачивается и соответственно не работает.
  • Если отпечаток пальца не распознается, то пользователю будет предложено ввести пароль входа в операционную систему. При вводе правильного пароля функция-обработчик также получит значение true. скачать :
  • пример с TouchID

IR.BiometricAuthStart()

Метод вызывает системную функцию, запрашивающую у пользователя сканирование лица или отпечаток пальца.

Важно
  • Метод работает только на iOS (версии 11 и выше) и Android устройствах со сканером отпечатка пальца или распознаванием лица.
  • При первом использовании распознавания лица в приложении i3 Pro, необходимо дать приложению разрешение на использование face id, иначе функция работать не будет.

Синтаксис

IR.BiometricAuthStart( function(status) {} , {}, reason)

на входезначениеописание
reason"Place your finger on the
fingerprint scanner to authorize."
type: string
текст, отображаемый пользователю в системном окне и объясняющий причину запроса отпечатка пальца или сканирования лица (только для iOS). В случае ОС Android текст не отображается, можно передать любую строку, например, пустую.
на выходе
statustruetype: boolean
результат сканирования биометрических данных:
true - успешно,
false - сканирование отменено.
function()-type: function
функция-обработчик результата сканирования.

Пример

var button = IR.GetPage("Page 1").GetItem("Item 1");
IR.AddListener(IR.EVENT_ITEM_RELEASE, button, function()
{
IR.BiometricAuthStart(function(status) {
if(status)
IR.ShowPopup("Popup 1"); //action, when status is true
},{}, "For opening popup");
});
Подсказка
  • На устройствах iOS на время открытия системного окна, приложение i3 pro сворачивается и соответственно не работает.
  • При возникновении ошибок (нет face id или ios не поддерживает face id и другие), пользователю будет предложено ввести пароль входа в операционную систему. При вводе правильного пароля функция-обработчик также получит значение true. скачать :
  • пример BiometricAuthStart

IR.OpenPhotoGallery()

запускает системную функцию выбора файла изображения. Результат работы метода - имя выбранного файла и файловый путь к нему, которые передаются слушателю по событию IR.EVENT_RECEIVE_PHOTO_FROM_GALLERY.

примечание
  • Метод работает на панелях Windows, iOS и Android. Сервер не поддерживается.

Синтаксис

var result = IR.OpenPhotoGallery();

на входезначениеописание
на выходе
resulttruetype: boolean
результат:
true - метод поддерживается операционной системой,
false - метод не поддерживается.

Пример

if (IR.OpenPhotoGallery()) {
IR.AddListener(IR.EVENT_RECEIVE_PHOTO_FROM_GALLERY, 0, function(filename, filepath) {
IR.Log("Photo selected.\n Filename: " + filename + "\n Filepath: " + filepath);
})
};
Подсказка

Пример: PhotoGallery.irpz

IR.OpenPhotoCamera()

Метод вызова системной камеры для снимка с последующей передачей в iRidium. Для получения снимка используйте слушатель IR.EVENT_RECEIVE_PHOTO_FROM_CAMERA.

Синтаксис

IR.OpenPhotoCamera();

на входезначениеописание
на выходе
resulttruetype: boolean
результат:
true - метод поддерживается операционной системой,
false - метод не поддерживается.

Пример

IR.AddListener(IR.EVENT_ITEM_RELEASE,IR.GetPage("Page 1").GetItem("Item 2"),function()
{
IR.OpenPhotoCamera();
})
Подсказка

Метод работает на панелях iOS и Android.

IR.UploadFile()

Метод выгружает файл по HTTP-протоколу.

примечание
  • Метод работает как в панельных, так и серверных проектах.

Синтаксис

var uploadResult = IR.UploadFile({
Host: host,
Port: port,
SSL: ssl,
UrlPath: urlpath,
FilePath: filepath,
Disposition: disposition,
Headers: headers,
Params: params,
<other>,
Callback: function(resultObj){}
на входезначениеописание
Host"192.168.1.2"type: string
IP-адрес адресата, получающего файл
Port8457type: number
порт адресата, получающего файл
SSLIR.SSL_CONTEXT_
_TYPE_NONE
type: number
тип шифрования:
IR.SSL_CONTEXT_TYPE_NONE - без шифрования
IR.SSL_CONTEXT_TYPE_TLS_V12 - TLS v1.2
IR.SSL_CONTEXT_TYPE_SSL_V23 - SSL v2.3
IR.SSL_CONTEXT_TYPE_SSL_V30 - SSL v3.0
UrlPath"/bin"type: string
url-путь адресата, получающего файл
FilePath"C:/images/face01.jpg"type: string
файловый путь и имя файла для выгрузки
Disposition"image"type: string
тип вложения (определяет HTTP-заголовок Content-Disposition)
Headers{Connection: Keep-Alive,
Content-Length: 100,
Accept: /}
type: object
объект - заголовки для POST-запроса
Params{param1: value1,
param2: value2}
type: object
объект - параметры для POST-запроса
<other>-type: прочие параметры, которые применимы к драйверу AV & Custom Systems (HTTP)
functionfunction(resultObj){}type: function
не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия
на выходе
uploadResulttruetype: boolean
результат попытки выгрузки файла:
false - ошибка, выгрузка не выполняется,
true - успех, выгрузка началась
resultObj-type: object
объект, содержащий результаты выгрузки файла
resultObj.StateIR.UPLOADER_MANAGER_
_NOTIFY_STEP
type: number
текущее состояние выгрузки файла:
IR.UPLOADER_MANAGER_NOTIFY_START - начало
IR.UPLOADER_MANAGER_NOTIFY_STEP - выгрузка в процессе, возвращаемая функция вызывается ежесекундно
IR.UPLOADER_MANAGER_NOTIFY_END - окончание
IR.UPLOADER_MANAGER_NOTIFY_ERROR - ошибка
resultObj.Size10000type: number
текущий выгруженный размер файла в байтах. В начальный момент выгрузки resultObj.Size равен размеру всего файла.
resultObj.Answer"{Status: 0}"type: string
содержимое ответа на HTTP-запрос, полученного от адресата по окончании выгрузки файла

Пример

IR.UploadFile({
Host: "192.168.0.21",
Port: 8587,
SSL: IR.SSL_CONTEXT_TYPE_NONE,
UrlPath: "/api/upload/plain",
FilePath: "C:/image.png",
Disposition: "image",
Headers: {
"Cache-Control": "no-cache",
"Pragma": "no-cache",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
"Accept-Language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
"Accept-Encoding": "gzip, deflate, br"
},
Callback: function(obj) {
switch(obj.State) {
case IR.UPLOADER_MANAGER_NOTIFY_START:
IR.Log("UPLOADER_MANAGER_NOTIFY_START: " + obj.Size + " bytes to load");
break;
case IR.UPLOADER_MANAGER_NOTIFY_STEP:
IR.Log("UPLOADER_MANAGER_NOTIFY_STEP: " + obj.Size + " bytes loaded");
break;
case IR.UPLOADER_MANAGER_NOTIFY_END:
IR.Log("UPLOADER_MANAGER_NOTIFY_END");
var data = JSON.Parse(obj.Answer);
IR.Log("Answer Status: " + data.Status);
break;
case IR.UPLOADER_MANAGER_NOTIFY_ERROR:
IR.Log("UPLOADER_MANAGER_NOTIFY_ERROR");
break;
}
}
});

IR.EnableProximity()

Метод включает мониторинг датчика приближения на устройстве.

Синтаксис

var result = IR.EnableProximity();

на входезначениеописание
на выходе
resulttruetype: boolean
результат:
true - метод поддерживается операционной системой,
false - метод не поддерживается.

Пример

{
IR.EnableProximity(this.Value == 1);
}

IR.OnTop()

Метод выводит окно поверх остальных окон в системе по оси Z.

Синтаксис

IR.OnTop();

на входезначениеописание
на выходе
succestruetype: boolean
true

Пример

IR.TimeOut(5000, function() {
IR.OnTop();
});
Подсказка

Работает только на платформе Windows.

Popen

Popen - процесс, позволяющий iRidium Server выполнить команду в командной строке Windows и Linux. Popen не работает в приложении-клиенте i3 pro. Выполнение Popen открывает файловый указатель процесса и позволяет передать информацию о работе команды в указанный экземпляр функции - слушателя. Для того, чтобы выполнять несколько команд и различать информацию о их работе, мы создаем экземпляры Popen.

Синтаксис

var cmd_process = new Popen (command, function);

на входезначениеописание
command'ping 192.168.0.1'type: string
команда для выполнения в командной строке (cmd.exe)
functioncmd_resulttype: function
экземпляр функции-слушателя, куда будут возвращены результаты выполнения команды
на выходе
line.onRecievetype: string
данные, которые генерирует команда в процессе выполнения. Событие .OnReceive срабатывает в контексте Popen и получает строку line как входной параметр. Строку можно вывести в лог или записать в переменную iRidium Server
result.onEndtype: number
код, который генерирует команда при завершении. Событие .onEnd срабатывает в контексте Popen и получает result как входной параметр. Код можно вывести в лог или записать в переменную iRidium Server:
* 0 - команда успешно завершена
* 259 и др. числа - ошибка. Код ошибки будет генерироваться при выполнении метода .Stop() - досрочном завершении команды, и в случае негативного результата (например, когда IP адрес недоступен для команды ping)
.Stop().Stop()type: method
команда принудительной остановки процесса Popen. Процесс не нужно завершать, если сработало событие .onEnd, но обязательно нужно завершить, если команда сама по себе не прерывается (как, например, бесконечный пинг)

Пример

function Listener (cmd)
{
this.onRecieve = function(line)
{
IR.Log(line);
}
this.onEnd = function(result)
{
IR.Log('Command: '+ cmd + " Result: " + result);
}
}
function stop()
{
cmd_process.Stop();
}
var cmd_result = new Listener ('ping 192.168.0.1');
var cmd_process = new Popen ('ping 192.168.0.1', cmd_result);
Подсказка
  • чтобы завершить процесс, используйте метод .Stop(). Команды, которые не завершаются сами, нужно останавливать принудительно, т.к. каждая из низ использует ресурсы ОС и влияет на быстродействие
  • popen работает только в iRidium Server на Windows и Linux. Не работает в i3 pro

iDate (object)

iDate - это представление даты в виде 64 битного числа с плавающей запятой. Может оперировать датами и временем в диапазоне от 1 января 100 года до 31 декабря 9999 года.

Целая часть означает количество дней с 30 декабря 1899 года, т.е. число 2 будет означать 1 января 1900 года. Чтобы указать даты до 30 декабря 1899 года, используйте отрицательное число, например -1 будет обозначать 29 января 1899 года.

Дробная часть определяет время. Чтобы увеличить время на 1 час нужно прибавить 1/24, чтобы прибавить 1 минуту: 1/1440. Недостатком объекта является низкая точность при работе с миллисекундами, погрешность составляет +/-150 миллисекунд.

iDate без аргументов

При создании без аргументов, создается объект, который инициализируемый текущей датой и временем.

var date = new iDate();
IR.Log("Date " + date.year + "." + date.month + "." + date.day);
IR.Log("Time " + date.hours + ":" + date.minutes + ":" + date.seconds + "." + date.ms);
IR.Log("Value " + date.value);
/*
result:
Date 2014.11.29
Time 20:49:20.778
Value 41972.86760159722
*/

iDate c 1 аргументом

Аргументом является value - число с плавающей запятой, обозначающее совмещенное представление даты и времени.

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

// создадим объект iDate, передав ему целое положительное число.
var d1 = new iDate(16384);
IR.Log("Date 1 " + d1.year + "." + d1.month + "." + d1.date);
IR.Log("Time 1 " + d1.hours + ":" + d1.minutes + ":" + d1.seconds + "." + d1.ms);
IR.Log("Value 1" + d1.value);
/*
result:
Date 1 1944.11.8
Time 1 0:0:0.0
Value 1 16384
*/
// создадим объект iDate, передав ему целое отрицательное число.
var d2 = new iDate(-16384);
IR.Log("Date 2" + d2.year + "." + d2.month + "." + d2.date);
IR.Log("Time 2" + d2.hours + ":" + d2.minutes + ":" + d2.seconds + "." + d2.ms);
IR.Log("Value 2" + d2.value);
/*
result:
Date 2 1855.2.20
Time 2 0:0:0.0
Value 2 -16384
*/

iDate более чем с 1 аргументом

Аргументы:

  • year - год
  • month - месяц
  • date - день
  • hours - часы
  • minutes - минуты
  • seconds - секунды
  • ms - миллисекунды

При создании объекта происходит раздельное заполнение года, месяца, даты, часов, минут, секунд и миллисекунд. Если заполнены не все параметры, оставшиеся заполняются текущим значением.

// создание  объекта iDate, с текущими значениями даты и времени.
var cur = new iDate();
IR.Log("Cur Date " + cur.year + "." + cur.month + "." + cur.date);
IR.Log("Cur Time " + cur.hours + ":" + cur.minutes + ":" + cur.seconds + "." + cur.ms);
IR.Log("Cur Value" + cur.value);
/*
result:
Cur Date 2014.11.29
Cur Time 21:6:45.128
Cur Value41972.879688981484
*/
// создание объекта iDate, с указанием года, месяца и числа
var date2 = new iDate(1999, 1, 21);
IR.Log("Date 2 " + date2.year + "." + date2.month + "." + date2.date);
IR.Log("Time 2 " + date2.hours + ":" + date2.minutes + ":" + date2.seconds + "." + date2.ms);
IR.Log("Value 2 " + date2.value);
/*
result:
Date 2 1999.1.21
Time 2 21:6:45.133
Value 2 36181.87968903935
*/
// создание объекта iDate, с указанием года, месяца, числа, часа и минуты
var date4 = new iDate(1999, 1, 21, 4, 16);
IR.Log("Date 4 " + date4.year + "." + date4.month + "." + date4.date);
IR.Log("Time 4 " + date4.hours + ":" + date4.minutes + ":" + date4.seconds + "." + date4.ms);
IR.Log("Value 4 " + date4.value);
/*
result:
Date 4 1999.1.21
Time 4 4:16:45.138
Value 4 36181.17830020833
*/
// создание объекта iDate, с указанием года, месяца, числа, часа, минуты, секунды и миллисекунды
var date6 = new iDate(1999, 1, 21, 4, 16, 12, 400);
IR.Log("Date 6 " + date6.year + "." + date6.month + "." + date6.date);
IR.Log("Time 6 " + date6.hours + ":" + date6.minutes + ":" + date6.seconds + "." + date6.ms);
IR.Log("Value 6 " + date6.value);
/*
result:
Date 6 1999.1.21
Time 6 4:16:12.400
Value 6 36181.177921296294
*/

Для класса iDate добавлены методы toTimeString() и toDateString(), которые повторяют поведение одноименных методов класса Date. Вывод при использовании этих методов учитывает локальное (системное) время сервера.

Пример:

IR.AddListener(IR.EVENT_START, 0, function()
{
function getTime()
{
var currentDate = new iDate(); // Создадим экземпляр класса iDate
var time = currentDate.ToTimeString(); // Преобразуем iDate к строке вида - HH:MM:SS
var date = currentDate.ToDateString(); // Преобразуем iDate к строке вида - Day, DD Mon YEAR
IR.Log("iDate: " + time + " " + date); // Выведем результат

IR.SetTimeout(2000, getTime);
}

IR.SetTimeout(2000, getTime);
});

На выходе:

…INFO SCRIPT iDate: 16:30:28 Thu, 4 Jul

JSON

JSON.Stringify

преобразовать JSON объект с строку

Синтаксис

JSON.Stringify(object, bool)

на входезначениеописание
objecttype: object
JSON объект
на выходе
modetruetype: boolean
* true - выводить дубликаты объектов.* false - не выводить дубликаты объектов (по умолчанию false).
texttype: string
преобразованный в строку JSON объект

Пример

IR.AddListener(IR.EVENT_START,0,function()
{
var object = {"Room" : [{"Floor" : "Ground", "Name" : "Kitchen"}]}
var string = JSON.Stringify(object);
IR.Log(string) // {"Room":[{"Floor":"Ground", "Name":"Kitchen"}]}
});

JSON.Parse

преобразовать строку в JSON объект

Синтаксис

JSON.Parse(text)

на входезначениеописание
texttype: string
строка
на выходе
objecttype: object
JSON объект

Пример

IR.AddListener(IR.EVENT_START,0,function()
{
var string = '{"Room":[{"Floor":"Ground", "Name":"Kitchen"}]}'
var object = JSON.Parse(string);
IR.Log(object) // [object Object]
});

XML

new XML

создать XML объект

Синтаксис

new XML(text)

на входезначениеописание
texttype: string
строка, хранящая XML сообщение
на выходе
objecttype: object
XML объект

Пример

IR.AddListener(IR.EVENT_START,0,function()
{
var xml_string = '<file id="123" quote="true"><name>project 1</name><version>v 1.0</version></file><Panel>"panel #1"</Panel><Panel>"panel #2"</Panel>'
var xml_object = new XML(xml_string); // create XML object
var name = xml_object.file["name"];
var attrib_id = xml_object.file["@id"];
var attrib_quote = xml_object.file["@quote"];
var version = xml_object.file.version;
var panel1 = xml_object.Panel[0];
var panel2 = xml_object.Panel[1];
IR.Log(name+" "+version+" "+panel1+" "+panel2); // project 1 v 1.0 "panel #1" "panel #2"
IR.Log(attrib_id); //view attribute "id"
IR.Log(attrib_quote); //view attribute "quote"
});

.toXMLString

преобразовать XML объект в строку

Синтаксис

string.toXMLString()

на входезначениеописание
objecttype: object
XML объект
на выходе
stringtype: string
строка

Пример

IR.AddListener(IR.EVENT_START,0,function()
{
var xml_string = '<file><name>project 1</name><version>v 1.0</version></file><Panel>panel #1</Panel><Panel>"panel #2"</Panel>'
var xml_object = new XML(xml_string);
var xml_string_from_object = xml_object.toXMLString() // XML object to XML string
IR.Log(xml_string_from_object);
});

IR.SetPanelBacklight()

Управление боковой подсветкой на iRidium Panel 7.

Синтаксис

IR.SetPanelBacklight(imax, brightness, color)

На входеЗначениеОписание
imax1 - 4type: Number
brightness0 - 255type: Number
яркость подсветки.
color0 - выключена,
1 - синий,
2 - зеленый,
3 - голубой,
4 - красный,
5 - сиреневый,
6 - желтый,
7 - белый.
type: Number
цвет подсветки.

Создайте новый скрипт в проекте и добавьте пример для включения боковой подсветки:

//<translate>
<!--T:352-->
пример для зеленого цвета:</translate>
IR.AddListener(IR.EVENT_ITEM_RELEASE, IR.GetPage("Page 1").GetItem("Item 1"), function()
{
IR.SetPanelBacklight(4, 255, 2);
//IR.GetPage("Page 1").GetItem("color_Light").GetState(0).FillColor = 0x0000ffff;
IR.Log("green");
});
Подсказка

Пример: iRidium Panel 7

События

IR.EVENT_START

идентификатор события, которое срабатывает при запуске приложения i3 pro

Синтаксис

IR.AddListener(IR.EVENT_START, 0, function, [pointer]);

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

Пример

IR.AddListener(IR.EVENT_START, 0, function ()
{
IR.Log("app started"); // action
});

IR.EVENT_WORK

идентификатор события, которое срабатывает каждый процессорный такт во время работы приложения.

Синтаксис

IR.AddListener(IR.EVENT_WORK, 0, function, [pointer]);

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

Пример

// IS NOT RECOMMENDED FOR REAL TASKS!
IR.AddListener(IR.EVENT_WORK, 0, function ()
{
IR.Log("app works"); // action
});
Важно
  • Событие не рекомендовано к использованию, т.к. не оптимально использует ресурсы. Вместо него используйте IR.SetInterval() или слушатели изменения драйверов.

IR.EVENT_EXIT

идентификатор события, которое срабатывает при завершении приложения i3 pro. Активируется при получении команды на закрытие приложения.

Синтаксис

IR.AddListener(IR.EVENT_EXIT, 0, function, [pointer]);

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

Пример

IR.AddListener(IR.EVENT_EXIT, 0, function ()
{
IR.Log("app closed"); // action
});
Подсказка
  • Cобытие не будет вызвано при аварийном завершении приложения.
  • Не поддерживается работа с IR.Execute() и работа с драйверами.

IR.EVENT_GLOBAL_TAG_CHANGE

идентификатор события, которое срабатывает при изменении любого тега в приложении iRidium. Теги - это любые свойства элементов интерфейса или драйверов, которые можно запросить. Чтобы система регистрировала изменение тега, на него нужно подписаться с помощью метода IR.SubscribeTagChange

Синтаксис

IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function() {}, [pointer]); IR.SubscribeTagChange(tag);

на входезначениеописание
functionfunction() {}type: function
не именованная функция или обращение к функции
tag"Drivers.AV (TCP).Online"type: string
полное имя тега, на изменение которого вы хотите подписаться с помощью метода IR.SubscribeTagChange. Без подписки, изменение тега не будет отражено в системе
pointer-type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
-

Пример

//Set global listener
IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
{
IR.Log("Global Listener Activated: " + name + "\tValue: " + value);
});
// Subscribe
IR.SubscribeTagChange("Drivers.KNX IP Router.Address 1");
IR.SubscribeTagChange("Drivers.AV & Custom Systems (TCP).Online");
IR.SubscribeTagChange("UI.Page 1.Item 1.Text");
IR.SubscribeTagChange("System.Time.24");
// Unsubscribe
IR.UnsubscribeTagChange("UI.Page 1.Item 1.Text");


// resend the data from KNX Address 1 to Address 2 on change (for iRidium Server)
IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
{
if (name == "Server.Channels.KNX.Address 1")
IR.SetVariable("Server.Channels.KNX.Address 2", value);
});
IR.SubscribeTagChange("Server.Channels.KNX.Address 1");
Подсказка
  • Глобальный слушатель можно создать в проекте только 1 раз, иначе работать будет только последний
  • Активировать слушатель: IR.SetGlobalListener
  • Слушатель реагирует на изменение тега, только если подписан на этот тег методом IR.SubscribeTagChange
  • Слушатель реагирует только на изменение тега (не сработает, если пришло значение, равное текущему)
  • Отписаться от тега: IR.UnsubscribeTagChange

IR.EVENT_ORIENTATION

идентификатор события, которое срабатывает при повороте панели управления, оснащенной акселерометром. Работу события можно эмулировать на Windows нажатием клавиши F5

Синтаксис

IR.AddListener(IR.EVENT_ORIENTATION, 0, function, [pointer]);

на входезначениеописание
functionfunction() {}type: function
не именованная функция или обращение к функции
pointer-type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
orientation_id1type: number
номер новой ориентации устройства:
*1 - вертикальная, кнопка Home внизу, константа: IR.ORIENTATION_PORTRAIT
*2 - вертикальная, кнопка Home вверху, константа: IR.ORIENTATION_PORTRAIT_UPSIDE_DOWN
*3 - горизонтальная, кнопка Home справа, константа: IR.ORIENTATION_LANDSCAPE_LEFT
*4 - горизонтальная, кнопка Home слева, константа: IR.ORIENTATION_LANDSCAPE_RIGHT

Пример

IR.AddListener(IR.EVENT_ORIENTATION, 0, Message);
function Message(orientation)
{
IR.Log("new orientation id: " + orientation);
switch (orientation) {
case IR.ORIENTATION_PORTRAIT:
IR.Log("Vertical")
break;
case IR.ORIENTATION_PORTRAIT_UPSIDE_DOWN:
IR.Log("Upside down")
break;
case IR.ORIENTATION_LANDSCAPE_LEFT:
IR.Log("Turned to the left");
break;
case IR.ORIENTATION_LANDSCAPE_RIGHT:
IR.Log("Turned to the right");
break;
}
}
Подсказка
  • начальное значение ориентации будет получено при запуске приложения
  • эмулировать поворот на Windows можно нажатием F5

IR.EVENT_KEYBOARD_SHOW

идентификатор события, которое срабатывает в момент открытия или закрытия клавиатуры на iOS или Android устройстве

Синтаксис

IR.AddListener(IR.EVENT_KEYBOARD_SHOW, 0, function(id), [pointer]);

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

Пример

IR.AddListener(IR.EVENT_KEYBOARD_SHOW, 0, function(id)
{
if (id)
{
IR.Log("keyboard showed");
}
else
{
IR.Log("keyboard hidden");
}
});

IR.EVENT_RECEIVE_SCHEME

идентификатор события, которое срабатывает, когда i3 pro на iOS или Android вызывают URL схемой из браузера, почтового клиента или другого приложения. URL схема для вызова i3 pro имеет вид: iridium://script?data1&data2 data1&data2 - строка с данными, которая будет передана в скрипт, в параметр query

Синтаксис

IR.AddListener(IR.EVENT_RECEIVE_SCHEME, 0, function, [pointer]);

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

Пример

// called URL scheme: iridium://script?Page1
IR.AddListener(IR.EVENT_RECEIVE_SCHEME,0,function(query, source)
{
if (query == "Page1")
IR.ShowPage("Page 1");
});

IR.ANDROID_BACK_PRESS

идентификатор события, которое срабатывает при нажатии кнопки Back на Android (кнопка может быть аппаратной или программной). Если вы подписаны на это событие, кнопка Back будет выполнять только действия, запрограммированные в функции, которую выполняет слушатель. Если вы не подписаны на это событие, нажатие на кнопку Back свернет приложение

Синтаксис

IR.AddListener(IR.ANDROID_BACK_PRESS, 0, function, [pointer]);

на входезначениеописание
functionfunction() {}type: function
не именованная функция или обращение к функции
на выходе
-

Пример

var back_subscribe = function ()
{
IR.Log("Back button pressed!");
}
IR.AddListener(IR.ANDROID_BACK_PRESS, 0, back_subscribe);
// to unsunscribe you can call the function back_unsubscribe (); in any moment
function back_unsubscribe ()
{
IR.RemoveListener(IR.ANDROID_BACK_PRESS, 0, back_subscribe);
}
Подсказка
  • Если вы подписаны на это событие, кнопка Back будет выполнять только действия, запрограммированные на входе слушателя. Если вы не подписаны на это событие, нажатие на кнопку Back свернет приложение

событие, вызываемое при выборе изображения из галереи, инициированное методом IR.OpenPhotoGallery().

Синтаксис

IR.AddListener(IR.EVENT_RECEIVE_PHOTO_FROM_GALLERY, 0, function(filename, filepath) { }, [pointer]);

на входезначениеописание
functionfunction() {}type: function
не именованная функция или обращение к функции
на выходе
filename"flower.png"type: string
имя файла изображения
filepath"D:/collection/flower.png"type: string
файловый путь и имя файла изображения
pointer-type: pointer
указатель на контекст слушателя (опционально)

Пример

if (IR.OpenPhotoGallery()) {
IR.AddListener(IR.EVENT_RECEIVE_PHOTO_FROM_GALLERY, 0, function(filename, filepath) {
IR.Log("Photo selected.\n Filename: " + filename + "\n Filepath: " + filepath);
}
});
Подсказка

Пример: PhotoGallery.irpz

IR.EVENT_RECEIVE_PHOTO_FROM_CAMERA

событие, вызываемое при получении изображения с камеры, инициированное методом IR.OpenPhotoCamera().

Синтаксис

IR.AddListener(IR.EVENT_RECEIVE_PHOTO_FROM_CAMERA, 0, function(filename, filepath) { }, [pointer]);

на входезначениеописание
functionfunction() {}type: function
не именованная функция или обращение к функции
на выходе
filename"flower.png"type: string
имя файла изображения
filepath"D:/collection/flower.png"type: string
файловый путь и имя файла изображения
pointer-type: pointer
указатель на контекст слушателя (опционально)

Пример

if (IR.OpenPhotoCamera()) {
IR.AddListener(IR.EVENT_RECEIVE_PHOTO_FROM_CAMERA, 0, function(filename, filepath) {
IR.Log("Photo selected.\n Filename: " + filename + "\n Filepath: " + filepath);
}
});

IR.EVENT_LICENCE_ACCEPT

Слушатель срабатывает при получении лицензии для i3 pro, или iridium server.

Синтаксис

IR.AddListener(IR.EVENT_LICENCE_ACCEPT, 0, [function](#irevent_licence_accept));

на входезначениеописание
functiontype: function() {}
на выходе

Пример

 

Неподдерживаемые

Поддержка ниже перечисленных методов остановлена в iRidium v3

IR.DownLoadProject

загружает на панель управления проект, доступный по HTTP ссылке. При загрузке проекта можно задать ему уникальное имя для работы в режиме Мультипроектность.

Синтаксис

IR.DownLoadProject({type: protocol, host: host, path: path, multiproject: mode, name: name});

на входезначениеописание
protocol'https'type: string
тип протокола: http или https
host'drive.google.com'type: string
IP адрес или доменное имя ресурса
path'/folder/file.irpz'type: string
путь к файлу проекта
mode0type: number
режим мультипроектности, 0 - выключен, 1 - включен
name'Main'type: string
имя проекта, Main - интерфейс по умолчанию
на выходе
object[Object DevicePrototype]type: object
ссылка на драйвер iRidium HTTP Updater, запускающий обновление проекта

Пример

IR.AddListener(IR.EVENT_START, 0, function()
{
IR.DownLoadProject({
type: 'https',
host: 'drive.google.com',
path: '/uc?export=view&id=0B2nsHBulOZWTR2tUaW85Vlo1Yzg',
multiproject: 0,
name: 'Main'
});
});


// regular expression returns the parsed link to Project
function parse_url(url)
{
var pattern = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?");
var matches = url.match(pattern);
return {
scheme: matches[2],
authority: matches[4],
path: matches[5],
query: matches[7],
fragment: matches[9]
};
}
// start the uroject uploading
function HTTPUpdate(url)
{
var parsed_url = parse_url(url);
var downloader = IR.DownLoadProject({
type:parsed_url.scheme,
host:parsed_url.authority,
path:parsed_url.path + '?' + parsed_url.query,
multiproject: 1,
name: "TestNew"
});
}
// call the uploading function and send the URL for parsing
function Update_new()
{
HTTPUpdate('https://drive.google.com/uc?export=view&id=0B2nsHBulOZWTR2tUaW85Vlo1Yzg');
}
Подсказка
  • имя проекта задается в свойстве name: файловая система в момент загрузки проекта получает новое имя, создает файл с новым именем и в этот файл записывает данные. Если включен режим мультипроектности, проект с новым именем будет добавлен к текущему, а не заменит его.

IR.SendNotification

отправить локальное уведомление на то же iOS устройство, где запущено приложение i3 pro (на других ОС не работает)

Синтаксис

IR.SendNotification(text, delay, sound_id, badge_increment_num, id

на входезначениеописание
text"event N"type: string
текст уведомления
delay0type: number
(cек) задержка появления уведомления
sound_id1type: number
идентификатор звука, с которым будет вызвано уведомление:
* 0 - без звука
* 1 - стандартный звук уведомления iOS
* 2 - стандартный рингтон iOS
badge_increment_num1type: number
на сколько увеличить число полученных уведомлений поверх иконки приложения
id"None"type: string
уникальный идентификатор уведомления
на выходе
-

Пример

IR.AddListener(IR.EVENT_APP_ENTER_BACKGROUND, 0, function()
{
IR.SendNotification("iRidium minimized", 0, 1, 1, "None");
});
Подсказка
  • работает только на iOS, не является push-уведомлением

IR.ClearNotification

очистить список локальных уведомлений, сгенерированных i3 pro на iOS устройстве

Синтаксис

IR.ClearNotification()

на входезначениеописание
-
на выходе
-

Пример

IR.AddListener(IR.EVENT_APP_ENTER_FOREGROUND, 0, function()
{
IR.ClearNotification();
});
Подсказка
  • работает только на iOS

IR.EVENT_RECEIVE_NOTIFY

идентификатор события, которое срабатывает, когда приложение получает локальное уведомление

Синтаксис

IR.AddListener(IR.EVENT_RECEIVE_NOTIFY, 0, function, [pointer]);

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

Пример

IR.AddListener(IR.EVENT_RECEIVE_NOTIFY, 0, notify)
function notify (text, id)
{
switch (id)
{
case "Notify 1": // notification ID
IR.ShowPopup("Popup 1");
IR.GetItem("Popup 1").GetItem("Item 1").Text = text; // notification text
break;
case "Notify 2":
IR.ShowPopup("Popup 2");
IR.GetItem("Popup 2").GetItem("Item 1").Text = text;
break;
}
}

IR.EVENT_APP_ENTER_BACKGROUND

идентификатор события, которое срабатывает в момент сворачивания и закрытия приложения на iOS или Android устройстве

Синтаксис

IR.AddListener(IR.EVENT_APP_ENTER_BACKGROUND, 0, function, [pointer]);

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

Пример

IR.AddListener(IR.EVENT_APP_ENTER_BACKGROUND, 0, function()
{
IR.Log("app minimized");
});
Подсказка
  • событие не сработает при аварийном закрытии (падении) приложения

IR.EVENT_APP_ENTER_FOREGROUND

идентификатор события, которое срабатывает в момент разворачивания приложения на iOS или Android устройстве

Синтаксис

IR.AddListener(IR.EVENT_APP_ENTER_FOREGROUND, 0, function, [pointer]);

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

Пример

IR.AddListener(IR.EVENT_APP_ENTER_FOREGROUND, 0, function()
{
IR.Log("app maximized");
});
Подсказка
  • событие не сработает при старте приложения

IR.EVENT_APP_WILL_TERMINATE

идентификатор события, которое срабатывает сразу перед тем, как приложение на iOS или Android будет завершено.

Синтаксис

IR.AddListener(IR.EVENT_APP_WILL_TERMINATE, 0, function, [pointer]);

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

Пример

IR.AddListener(IR.EVENT_APP_WILL_TERMINATE, 0, function()
{
IR.Log("app will be closed right now");
});
Подсказка
  • событие не сработает при аварийном завершении приложения