API iRidium. Система
Функции, методы, свойства объектов, используемых для работы с приложением в контексте его запуска, выполнения, завершения и изменения операционной системой Объект IR - глобальный объект, содержащий в себе все функции и константы API iRidium. Методы объекта IR для управления системными событиями приложения iRidium.
Методы
IR.ShowSystemMenu
открыть системное меню. Выполнив команду, откроется системное меню.
Синтаксис
IR.ShowSystemMenu();
| на входе | значение | описание |
|---|---|---|
| - |
| на выходе | ||
|---|---|---|
| - |
Пример
function ShowMenu () {
IR.ShowSystemMenu();
};
IR.SetEnableSystemMenu
Запретить / разрешить открытие системного меню.
Синтаксис
IR.SetEnableSystemMenu();
| на входе | значение | описание |
|---|---|---|
| mode | true | type: boolean * true - разрешить открытие системного меню. * false - запретить открытие системного меню. |
| на выходе | ||
|---|---|---|
| - |
Пример
function SystemMenu()
{
IR.SetEnableSystemMenu(true);
}
IR.GetEnableSystemMenu
Проверяет возможность открытия системного меню.
Синтаксис
IR.GetEnableSystemMenu();
| на входе | значение | описание |
|---|---|---|
| - |
| на выходе | ||
|---|---|---|
| mode | true | type: boolean * true - разрешение на открытие системного меню . * false - запрет на открытие системного меню. |
Пример
`IR.Log(IR.GetEnableSystemMenu());`
IR.SetEnableProjectMenu
Запретить / разрешить открытие меню проектов i3 Pro.
Синтаксис
IR.SetEnableProjectMenu();
| на входе | значение | описание |
|---|---|---|
| - |
| на выходе | ||
|---|---|---|
| mode | true | type: boolean * true - разрешить открытие меню проектов i3 Pro. * false - запретить открытие меню проектов i3 Pro. |
Пример
function ProjectMenu()
{
IR.SetEnableProjectMenu(true);
}
IR.GetEnableProjectMenu
Проверяет возможность открытия системного меню.
Синтаксис
IR.GetEnableSystemMenu();
| на входе | значение | описание |
|---|---|---|
| mode | true | type: 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);
| на входе | значение | описание |
|---|---|---|
| mode | true | type: boolean включить\выключить полноэкранный режим * true - включить полноэкранный режим * false - выключить полноэкранный режим |
| на выходе | ||
|---|---|---|
| - |
Пример
`IR.SetFullScreen(true);`
Примечания
- метод работает только на Windows
IR.IsFullScreen
Проверяет включен ли полноэкранный режим
Синтаксис
IR.IsFullScreen;
| на выходе | ||
|---|---|---|
| mode | true | type: boolean * true - полноэкранный режим включен * false - полноэкранный режим выключен |
| - |
Пример
`IR.Log(IR.IsFullScreen);`
Примечания
- метод работает только на Windows
IR.HWID
свойство объекта IR, хранит HWID панели управления, на которой запущено приложение i3 pro.
Синтаксис
IR.HWID
| на входе | значение | описание |
|---|---|---|
| - |
| на выходе | ||
|---|---|---|
| hwid | ff2c...1958 | type: 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)
| на входе | значение | описание |
|---|---|---|
| type | 1 | type: 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_text | 0 | type: 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 |
| color | 0 | type: Number цвет клавиатуры: 1 - выбрать автоматически 2 - темная 3 - светлая |
| capitalization | 0 | type: 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)
| на входе | значение | описание |
|---|---|---|
| scheme | http://iridiummobile.net | type: 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
| на входе | значение | описание |
|---|---|---|
| property | UsedMemory | type: object свойство, которое необходимо вернуть: * .UsedMemory * .TotalMemory * .ChunkHeaps * .ChunkCache * .MemoryHeaps * .MemoryBusyBlocks * .MemoryFreeBlocks |
| на выходе | ||
|---|---|---|
| property | type: string значение в свойстве |
Пример
IR.AddListener(IR.EVENT_START,0,function() {
IR.Log(IR.GetSystemInfo("GC_MEMORY_INFO").UsedMemory);
});
IR.GetCurrentWlanInfo
получить информацию о беспроводной сети, к которой подключена панель управления.Список сетей объединяется в массив. Каждая сеть - элемент массива, включающий фиксированный список свойств.
Синтаксис
IR.GetCurrentWlanInfo()[element].property
| на входе | значение | описание |
|---|---|---|
| element | 0...n | type: number номер элемента массива, соответствующий порядковому номеру сетевого подключения |
| property | Name | type: object свойство, которое необходимо вернуть: * .Name - тип сетевого подключения * .SSID - имя сети |
| на выходе | ||
|---|---|---|
| property | type: 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
| на входе | значение | описание |
|---|---|---|
| element | 0...n | type: number номер элемента массива, соответствующий порядковому номеру сетевого подключения |
| property | Name | type: object свойство, которое необходимо вернуть: * .Name - имя сетевого соединения * .IP - IP адрес панели управления * .Mask - маска подсети * .MAC - MAC адрес |
| на выходе | ||
|---|---|---|
| property | type: 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););
| на входе | значение | описание |
|---|---|---|
| mode | true | type: boolean включить/выключить автообновление проекта: * true - включить автообновление проекта; * false - отключить автообновление проекта. |
| на выходе | ||
|---|---|---|
| - |
Пример
function AutoUpdate()
{
IR.SetStatusAutoUpdateProjects(true);
};
IR.Log
вывести данные в консоль отладки приложения i3 pro (консоль на Windows открывается клавишей F4)
Синтаксис
IR.Log(data);
| на входе | значение | описание |
|---|---|---|
| data | type: object данные для вывода в лог, string, number, array |
| на выходе | ||
|---|---|---|
| data | type: string строковые данные в логе приложения |
Пример
IR.AddListener(IR.EVENT_START,0,function() {
IR.Log("Hello World!");
});
- данные, отправленные в консоль, конвертируются в строку
- В ОС Windows 7 максимальный размер одной строки, выводимой в консоль, 30 кбайт.
IR.SetInterval
повторять действия в цикле, с установленным интервалом (мс)
Синтаксис
IR.SetInterval(time, action)
| на входе | значение | описание |
|---|---|---|
| time | 500 | type: number (мс) интервал выполнения функции |
| action | function() { } | 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)
| на входе | значение | описание |
|---|---|---|
| time | 500 | type: number (мс) задержка выполнения функции |
| action | function() { } | 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_id | var timer | type: 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]);
| на входе | значение | описание |
|---|---|---|
| event | type: object идентификатор события, за которым следит слушатель | |
| input | type: object входной параметр, необходимый для создания слушателя. Если параметра нет, укажите 0 | |
| function | function() {} | type: function не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия |
| pointer | type: 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]);
| на входе | значение | описание |
|---|---|---|
| event | type: object идентификатор события, за которым следит слушатель | |
| input | type: object входной параметр, необходимый для создания слушателя. Если параметра нет, укажите 0 | |
| function | function() {} | type: function именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия |
| pointer | type: 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]);
| на входе | значение | описание |
|---|---|---|
| event | IR.EVENT_GLOBAL_TAG_CHANGE | type: object идентификатор события, за которым следит глобальный слушатель:IR.EVENT_GLOBAL_TAG_CHANGE - срабатывает при изменении любого тега в iRidium |
| function | function(name, value) {} | type: function не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия. В функцию передаются имя тега, на который есть подписка, и измененное значение |
| pointer | type: 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
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.SubscribeTagChange
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();
| на входе | значение | описание |
|---|---|---|
| - |
| на выходе | ||
|---|---|---|
| number | 1 | type: 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 имя проекта в панели или облаке, на который нужно переключиться |
| id | 116897 | type: 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);
| на входе | значение | описание |
|---|---|---|
| frequency | 38000 | type: 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);
| на входе | значение | описание |
|---|---|---|
| algorithm | IR.CRC_16 | type: object алгоритм подсчета CRC: * IR.CRC_8 * IR.CRC_16 * IR.CRC_32 |
| string | "Test" | type: string строка, для которой нужно подсчитать CRC |
| на выходе | ||
|---|---|---|
| CRC | 7205 | type: 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);
| на входе | значение | описание |
|---|---|---|
| algorithm | IR.HASH_MD5 | type: 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 строка, для которой нужно подсчитать хеш-сумму |
| type | 0 | type: number формат вывода данных: 0 - строка, 1 - байтовый массив. |
| key | "6af02e...286d2" | type: string ключ шифрования данных. |
| на выходе | значение | описание |
| hash | 0cbc66...5a615b | type: 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, обычно ссылка, которую нужно декодировать |
| на выходе | ||
|---|---|---|
| url | http://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 | ">" | type: string исходный текст |
| на выходе | ||
|---|---|---|
| text | > | type: string раскодированный текст |
Пример
IR.AddListener(IR.EVENT_START, 0, function() {
var data = IR.HtmlDecode(">");
IR.Log(data); // >
});
Функция декодирует не все стандартные мнемоники. Полный перечень декодируемых мнемоник:
< > " & ¡ ¢ £ ¤ ¥ ¦ § ¨
© ª « » ¬ ­ ® ¯ ° ± ² ³
´ µ ¶ · ¸ ¹ º ¼ ½ ¾
¿ À Á Â Ã Ä Å Æ
Ç È É Ê Ë Ì Í Î Ï Ð Ñ
Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü
Ý Þ ß à á â ã ä å æ ç
è é ê ë ì í î ï
ð ñ ò ó ô õ ö ÷
ø ù ú û ü ý þ ÿ
' Œ œ Š š Ÿ ˆ ˜
– — ‘ ’ ‚ “ ” „
† ‡ ‰ ‹ › €
IR.Base64Encode
закодировать строку / массив в формате Base64. Синтаксис
IR.Base64Encode(data, data_type)
| на входе | значение | описание |
|---|---|---|
| data | "Hello" | type: string исходные данные. / array |
| data_type | 0 / 1 | type: 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 по специальной договоренности с разработчиком скрипта. Принцип использования:
- Создайте скрипт, который хотите зашифровать и распространять на коммерческой основе
- Свяжитесь с менеджером iRidium mobile, чтобы получить уникальный ID для своего продукта - скрипта
- Добавьте в скрипт проверку ID методом IR.IsModuleLicensed(id), чтобы скрипт не начал работать, пока проект не получит соответствующую лицензию
- Защитите файл скрипта паролем, чтобы распространять его другим пользователям
- Свяжитесь с менеджерами, чтобы согласовать процедуру включения ID вашего продукта в коммерческие лицензии
Синтаксис
IR.IsModuleLicensed(id)
| на входе | значение | описание |
|---|---|---|
| id | 57599 | type: number уникальный ID продукта, предоставленный разработчику компанией iRidium mobile, хранится в лицензии |
| на выходе | ||
|---|---|---|
| success | true | type: 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_number | 1 | type: number 1...4 - номер пароля (сами пароли настраиваются в свойствах проекта), с которым нужно сравнить проверяемый пароль |
| check_string | "password" | type: string пароль, который будет сравнен с настроенным в свойствах проекта |
| на выходе | ||
|---|---|---|
| result | true | type: 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 текст не отображается, можно передать любую строку, например, пустую. |
| на выходе | ||
|---|---|---|
| status | true | type: 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 текст не отображается, можно передать любую строку, например, пустую. |
| на выходе | ||
|---|---|---|
| status | true | type: 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();
| на входе | значение | описание |
|---|---|---|
| на выходе | ||
|---|---|---|
| result | true | type: 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();
| на входе | значение | описание |
|---|---|---|
| на выходе | ||
|---|---|---|
| result | true | type: 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-адрес адресата, получающего файл |
| Port | 8457 | type: number порт адресата, получающего файл |
| SSL | IR.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) |
| function | function(resultObj){} | type: function не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия |
| на выходе | ||
|---|---|---|
| uploadResult | true | type: boolean результат попытки выгрузки файла: false - ошибка, выгрузка не выполняется, true - успех, выгрузка началась |
| resultObj | - | type: object объект, содержащий результаты выгрузки файла |
| resultObj.State | IR.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.Size | 10000 | type: 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();
| на входе | значение | описание |
|---|---|---|
| на выходе | ||
|---|---|---|
| result | true | type: boolean результат: true - метод поддерживается операционной системой, false - метод не поддерживается. |
Пример
{
IR.EnableProximity(this.Value == 1);
}
IR.OnTop()
Метод выводит окно поверх остальных окон в системе по оси Z.
Синтаксис
IR.OnTop();
| на входе | значение | описание |
|---|---|---|
| на выходе | ||
|---|---|---|
| succes | true | type: 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) |
| function | cmd_result | type: function экземпляр функции-слушателя, куда будут возвращены результаты выполнения команды |
| на выходе | ||
|---|---|---|
| line | .onRecieve | type: string данные, которые генерирует команда в процессе выполнения. Событие .OnReceive срабатывает в контексте Popen и получает строку line как входной параметр. Строку можно вывести в лог или записать в переменную iRidium Server |
| result | .onEnd | type: 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)
| на входе | значение | описание |
|---|---|---|
| object | type: object JSON объект |
| на выходе | ||
|---|---|---|
| mode | true | type: boolean * true - выводить дубликаты объектов.* false - не выводить дубликаты объектов (по умолчанию false). |
| text | type: 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)
| на входе | значение | описание |
|---|---|---|
| text | type: string строка |
| на выходе | ||
|---|---|---|
| object | type: 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)
| на входе | значение | описание |
|---|---|---|
| text | type: string строка, хранящая XML сообщение |
| на выходе | ||
|---|---|---|
| object | type: 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()
| на входе | значение | описание |
|---|---|---|
| object | type: object XML объект |
| на выходе | ||
|---|---|---|
| string | type: 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)
| На входе | Значение | Описание |
|---|---|---|
| imax | 1 - 4 | type: Number |
| brightness | 0 - 255 | type: Number яркость подсветки. |
| color | 0 - выключена, 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]);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | 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]);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | 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]);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | 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);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | 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]);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | type: function не именованная функция или обращение к функции |
| pointer | - | type: object указатель на объект, который обслуживает функцию (опционально) |
| на выходе | ||
|---|---|---|
| orientation_id | 1 | type: 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]);
| на входе | значение | описание |
|---|---|---|
| function | function(id) {} | type: function не именованная функция или обращение к функции |
| pointer | - | type: object указатель на объект, который обслуживает функцию (опционально) |
| на выходе | ||
|---|---|---|
| id | true | type: 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]);
| на входе | значение | описание |
|---|---|---|
| function | function | type: 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]);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | 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.EVENT_RECEIVE_PHOTO_FROM_GALLERY
событие, вызываемое при выборе изображения из галереи, инициированное методом IR.OpenPhotoGallery().
Синтаксис
IR.AddListener(IR.EVENT_RECEIVE_PHOTO_FROM_GALLERY, 0, function(filename, filepath) { }, [pointer]);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | 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]);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | 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));
| на входе | значение | описание |
|---|---|---|
| function | type: 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 путь к файлу проекта |
| mode | 0 | type: 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 текст уведомления |
| delay | 0 | type: number (cек) задержка появления уведомления |
| sound_id | 1 | type: number идентификатор звука, с которым будет вызвано уведомление: * 0 - без звука * 1 - стандартный звук уведомления iOS * 2 - стандартный рингтон iOS |
| badge_increment_num | 1 | type: 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]);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | 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]);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | 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]);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | 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]);
| на входе | значение | описание |
|---|---|---|
| function | function() {} | type: function не именованная функция или обращение к функции |
| pointer | - | type: object указатель на объект, который обслуживает функцию (опционально) |
| на выходе | ||
|---|---|---|
| - |
Пример
IR.AddListener(IR.EVENT_APP_WILL_TERMINATE, 0, function()
{
IR.Log("app will be closed right now");
});
- событие не сработает при аварийном завершении приложения