-
Notifications
You must be signed in to change notification settings - Fork 27
Philosophy
Плагин для AnyBalance (AnyBalance провайдер) представляет собой zip файл, содержащий набор обязательных и необязательных файлов. Структура файлов одноуровневая, то есть подкаталоги в zip файле провайдера не допускаются.
Структура провайдера следующая:
anybalance-manfest.xml
icon.png
main.js
preferences.xml
anybalance-manfest.xml
- манифест, определяет параметры провайдера, его название и описание, версию, счетчики, которые он предоставляет, их тип, в нем также перечислены все файлы, которые провайдер использует, и другое. Этот файл должен называться только так и не иначе, остальные файлы могут называться как угодно, главное, чтобы они были декларированы в манифесте.
icon.png
- файл иконки провайдера, лучше делать разрешением повыше, чтобы хорошо смотрелось на высоких разрешениях. Этот файл декларируется в манифесте под категорией icon
. Может быть только одна иконка этой категории.
main.js
- провайдер должен иметь как минимум один JavaScript файл с определенной в нем функцией function main(){ ... }
. Называться сам файл может как угодно, можно также подключить несколько js
файлов, но все они должны быть декларированы в манифесте под категорией js
.
preferences.xml
- описание пользовательских настроек провайдера, которые нужны ему для работы. Настройки описываются аналогично настройкам в Android, но с упрощениями. Если хочется попроще познакомиться с оригиналом, то есть неплохая статья на эту тему. Этот файл должен быть декларирован в манифесте под категорией preferences
. Может быть только один файл настроек.
Чтобы узнать подробности о формате каждого файла, перейдите по соответствующим ссылкам.
Когда провайдер инсталлируется в AnyBalance, содержимое архива распаковывается во внутреннюю файловую систему AnyBalance и сам исходный архив больше не используется.
Инсталлированный провайдер доступен для создания аккаунтов на его базе. Каждый провайдер в манифесте декларирует счетчики (например, баланс на телефоне), значения которых он предоставляет. Чтобы их получить, могут понадобиться некоторые настройки, например, логин и пароль к сайту оператора. При создании аккаунта пользователь заполняет настройки провайдера, включая те, которые описаны в файле preferences
провайдера (при его наличии). Таким образом, в каждом аккаунте собраны все настройки провайдера, которые необходимы для получения значений счетчиков.
Каждый аккаунт может быть настроен на периодическое обновление. При обновлении AnyBalance запускает JavaScript провайдера с настройками из аккаунта. И запускает функцию main(). В этой функции провайдер должен получить значения счетчиков, используя AnyBalance API, и вернуть их значения с помощью функции AnyBalance.setResult.
При настройке аккаунта пользователь может захотеть получать не все счетчики, а только часть. Для экономии ресурсов провайдер должен учесть это с помощью функции AnyBalance.isAvailable и не извлекать счетчик, для которого эта функция возвращает false
.
После возврата счетчиков их обрабатывает уже AnyBalance, ведя статистику по их изменению и показывая её пользователю.