Эта страница является
переводом страницы
Systems API. Перевод выполнен на 100%.
API iRidium. Система
функции, методы, свойства объектов, используемых для работы с приложением в контексте его запуска, выполнения, завершения и изменения операционной системой
Объект IR - глобальный объект, содержащий в себе все функции и константы API iRidium. Методы объекта IR для управления системными событиями приложения iRidium.
Методы
IR.ShowSystemMenu
открыть системное меню с предварительным вводом инженерного пароля. Выполнив команду, вы получите окно ввода пароля, после ввода 2007 откроется системное меню.
Синтаксис
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 - выключить полноэкранный режим
|
-
Пример
метод работает только на Windows
IR.IsFullScreen
Проверяет включен ли полноэкранный режим
Синтаксис
IR.IsFullScreen;
| на входе
|
значение
|
описание
|
| mode
|
true
|
type: boolean * true - полноэкранный режим включен
- false - полноэкранный режим выключен
|
Пример
метод работает только на 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("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
Синтаксис
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);
});
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);
запущенный 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 идентификатор события, за которым следит глобальный слушатель:
|
| 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 - уникальный идентификатор проекта в облаке
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
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
|
Пример
//Пример 1:
IR.Log(IR.Base64Encode([0x48, 0x65, 0x6c, 0x6c, 0x6f], 1)); // зашифровать массив данных
//Пример 2:
IR.Log(IR.Base64Encode("Hello", 0)); // зашифровать строку
//Пример 3:
IR.Log(IR.Base64Encode("Hello")); // зашифровать строку (устаревший метод)
IR.Base64Decode
раскодировать строку/ массив в формате Base64.
Синтаксис
IR.Base64Decode(code, data_type)
| на входе
|
значение
|
описание
|
| code
|
"SGVsbG8="
|
type: string закодированный текст Base64
|
| data_type
|
0 / 1
|
type: number тип данных: 0 - строка, 1 - массив.
|
| data
|
"Hello"
|
type: string / array исходный текст / массив данных
|
Пример
//Пример 1:
IR.Log(IR.Base64Decode("SGVsbG8=", 1)); // расшифровать массив
//Пример 2:
IR.Log(IR.Base64Decode("SGVsbG8=", 0)); // расшифровать строку
//Пример 3:
IR.Log(IR.Base64Decode("SGVsbG8=")); // расшифровать строку (устаревший метод)
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 и 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 сворачивается и соответственно не работает.
If a fingerprint is not recognized, a user is asked to enter a password to enter the operation system. When the correct password is entered the processing function gets the true value.
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.
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);
})
};
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()
The method downloads files via HTTP protocol.
The method works both in panel and server projects.
Syntax
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 address of an addressee (who receives a file)
|
| Port
|
8457
|
type: number port of an addressee
|
| 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-запрос, полученного от адресата по окончании выгрузки файла
|
Sample
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)
| на входе
|
значение
|
описание
|
| 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 цвет подсветки.
|
Создайте новый скрипт в проекте и добавьте пример для включения боковой подсветки:
//пример для зеленого цвета:
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");
});
События
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);
}
});
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);
| на входе
|
значение
|
описание
|
| function
|
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");
});
событие не сработает при аварийном завершении приложения