Автоматизация работы в iPhone

Безопасность iOS

Недавно я как и многие другие обновил свой iPhone до версии iOS 13 и обратил внимание на новую иконку, появившийся на главном экране телефона, — приложения «Команды». Исследовательский дух не позволил мне пройти мимо этого удивительного явления, не изучив возможности нового функционала. Среди них оказалось несколько весьма интересных и полезных фишек, о которых я сейчас и расскажу.

До релиза iOS 13 программа распространялась в App Store под названием «Быстрые команды», но в новой версии ОС она вошла в базовый набор приложений. На сайте Apple функциональность «Команд» описана весьма расплывчато и туманно: дескать, программа позволяет создавать «персонализированные шаблоны автоматизации, которые помогут вам выполнять повседневные действия проще и быстрее». Не знаю, кто обучил копирайтеров из Купертино излагать свои мысли подобным образом, но сдается мне, что в данном конкретном случае краткость в родственных отношениях с талантом явно не состоит.

РЕКОМЕНДУЕМ:
Как используя checkra1n сделать джейлбрейк iOS 13.0

Возможности

На самом деле программа «Команды» умеет объединять несколько простых действий пользователя в одно. Например, если ты каждое утро узнаешь температуру окружающей среды за окном, включаешь на мобильном любимый трек, а затем отправляешь SMS-сообщение с пожеланием доброго дня своему начальнику, то всю эту рутину можно выполнять нажатием одной кнопки или голосовой командой. Приложение умеет работать с браузером Safari и другими программами iOS через API, поэтому подобным же образом нетрудно, например, подгрузить разные плей-листы в «Музыку» под настроение, установить или отключить будильник, применить фильтр к набору фотографий или отправить текущую геопозицию в ответ на сообщение друзей «Ну где тебя черти носят, пиво уже остыло!». «Команды» с этим справляются без особых проблем.

Интерфейс приложения «Команды»
Интерфейс приложения «Команды»

Интерфейс «Команд», судя по всему, разрабатывали инопланетяне, которых держат взаперти в подвалах кампуса Apple еще со времен старины Джобса. Но после небольшой практики привыкнуть к нему все-таки можно. Логика работы программы на первый взгляд очень проста: нужно указать действие, которое ты хочешь выполнить, а потом передать это действие в приложение и обработать полученный результат. Например, выбрав в списке приложений «Калькулятор», мы получим перечень возможных действий с ним — «Сосчитать», «Округлить число» и так далее. Для раздела «Интернет» действия будут иными: «Показать веб-страницу», «Открыть несколько URL», причем тут собраны варианты не только для Safari, но и для других приложений. Помедитировав с полчаса на этот список, можно даже отыскать в нем какую-то логику.

Команды для разделов «Калькулятор» и «Интернет»
Команды для разделов «Калькулятор» и «Интернет»

Вкладка «Автоматизация» в нижней части окна «Команд» позволяет привязать выполнение команды к определенному условию. Например, запланировать на выбранное время (наконец-то в iOS появился аналог cron и «Планировщика задач», внедренного парнями из Microsoft еще в Windows 98). Но существуют и менее очевидные триггеры: прибытие в какую-то географическую точку по данным GPS или убытие из нее, переключение режима работы телефона или запуск программы. Например, можно настроить автоматическое выполнение команды при выходе из дома, приезде на работу или в момент, когда айфон переключается в режим пониженного энергопотребления.

Выполнение команд можно автоматизировать
Выполнение команд можно автоматизировать

Одна из самых любопытных, на мой взгляд, фишек «Команд» — наличие в арсенале программы простого набора переключателей, с помощью которых можно настраивать триггеры еще более гибко. Прячутся они под значком «Скрипты» в разделе «Логика управления» (кто найдет с первого раза — тому конфетка!). Здесь нам предлагается набор логических операторов вида «если — иначе — закончить действие», «повторить», «ожидать возврата». То есть с помощью этого инструмента можно написать несложный скрипт, отрабатывающий какой-то примитивный алгоритм. Негусто, конечно, но на безрыбье и червяк — Python.

«Команды» позволяют программировать действия не только для встроенных приложений iOS 13, но и для некоторых сторонних приложений, установленных на твоем устройстве. Например, если ты используешь какую-нибудь программу для чтения лент новостей в формате RSS, можно создать команду, которая станет искать адрес RSS-канала на открытом в Safari сайте и при обнаружении автоматически подпишется на него.

Готовую команду можно добавить в список внутри самого приложения или вывести в виде ярлыка на домашний экран iOS. И на этом можно было бы закончить наш сегодняшний обзор, если бы статья предназначалась для публикации в журнале «Мурзилка». Но поскольку наше издание называется немного иначе, давай посмотрим, как это работает и можно ли вытащить из «Команд» что-нибудь интересное и недокументированное, а потом использовать нестандартным образом.

Под капотом

«Команды» работают с API операционной системы, а именно позволяют принимать на вход различные параметры и динамический ввод. Эти параметры могут обрабатываться приложениями iOS в фоновом режиме, то есть без необходимости запуска, а результат передается в саму программу «Команды» или в Siri. В этом и кроется основное отличие обновленных «Команд» от механизма ярлыков Siri, реализованного в iOS 12, — команды больше не представляют собой фиксированную последовательность действий, они обрели некую интерактивность. То есть если раньше интерфейс взаимодействия операционной системы и приложений строился на механизме x-callback-url на уровне самой iOS, то теперь все действия обрабатываются приложением «Команды» или Siri, в зависимости от того, что это за команда. С точки зрения безопасности такой подход более продуктивен и предоставляет как программистам, так и пользователю больше возможностей.

X-callback-url — это схема взаимодействия приложений в iOS, обмена информацией и параметрами между ними. Подробную спецификацию этого стандарта можно отыскать здесь.

Про фоновый режим я упомянул неспроста. Поясню этот механизм на простом примере. Положим, ты решил автоматизировать какие-то процессы на своем iPhone или iPad с помощью языка JavaScript, для чего используешь специальную программу для iOS Scriptable. Эта программа позволяет писать, отлаживать и запускать сценарии на JavaScript, а также содержит подробный справочник по языку с описанием функций, поддерживаемых iOS. Ко всему прочему, она бесплатна.

Приложение Scriptable позволяет автоматизировать iOS c помощью JavaScript
Приложение Scriptable позволяет автоматизировать iOS c помощью JavaScript

Итак, ты подготовил несколько полезных скриптов, сохранил их в Scriptable, после чего решил создать команду для их выполнения при наступлении определенного условия, например по расписанию. Выбрав в программе «Команды» вариант «Запустить скрипт», ты получишь список всех сохраненных в Scriptable скриптов, в котором можно указать нужный. При этом само приложение Scriptable не запускается — программа «Команды» запрашивает из него требуемые данные в фоновом режиме. Кроме того, в самом интерфейсе окна «Команды» есть специальный переключатель, с помощью которого можно настроить заранее, как отработает скрипт: в запустившейся при его вызове программе Scriptable или в фоновом режиме. Здорово, правда?

«Команды» позволяют выбрать скрипт для запуска, не запуская сам Scriptable
«Команды» позволяют выбрать скрипт для запуска, не запуская сам Scriptable

Неочевидный, но интересный хак: с помощью Scriptable можно кастомизировать сообщения об ошибках при выполнении сценариев JavaScript. Это довольно удобно, особенно на этапе отладки скриптов.

На уровне пользователя «Команды» представляют собой набор редактируемых полей в контексте функций приложения, в которые можно передавать те или иные данные — значения или переменные. Когда команда срабатывает, она получает данные из полей, обрабатывает их по выбранному пользователем алгоритму и возвращает результат, который можно сохранить или куда-нибудь переслать. Очевидно также, что «Команды» способны полноценно взаимодействовать только с теми приложениями iOS 13, разработчики которых предусмотрели такую возможность.

«Команды» могут работать с различными типами данных — это числовые значения, текст, URL, содержимое буфера обмена, файлы. Кроме того, разработчик может предусмотреть в своем приложении поддержку собственных типов данных и параметров, которые способна обработать программа «Команды».

Примечательно, что в iOS 12 ярлыки Siri не могли полноценно использовать вводимые пользователем данные: если голосовая команда требовала ввести что-то с клавиатуры или выбрать опцию из списка, выполнение команды прерывалось и запускалось соответствующее приложение. При этом от пользователя ожидалось нужное действие или соответствующая команда, отданная голосом. С интеграцией в iOS программы «Команды» все изменилось: если при выполнении алгоритма требуется взаимодействие с пользователем, оно идет на уровне приложения без прерывания основного сценария. А сама программа «Команды» интегрирована с языковой средой Siri и поддерживает голосовое управление. Например, если команда вызывается в Siri и подразумевает ввод текста, то этот текст можно надиктовать.

Таким образом, функциональность «Команд» отнюдь не ограничивается набором инструментов самой этой программы. Можно смело сказать, что он не ограничивается вообще ничем: ничто не мешает тебе собрать на iPhone нужный набор приложений конкретно под твои задачи, а потом брать данные из одной программы, преобразовывать их в другом приложении и передавать в третье с помощью инструментария «Команд».

Скажем, можно получить текущие курсы валют из интернета, сравнить их стоимость с помощью программы, умеющей работать с таким типом данных (например, для этой цели подойдет калькулятор PCalc), а потом передать результат вычислений в «Заметки» или отправить их сообщением в телеграм. Можно настроить команду таким образом, что она будет автоматически обновлять курсы валют при каждом подключении к интернету или ежедневно в заданное время.

Установив на телефон FTP-клиент, ты можешь автоматизировать загрузку файлов на сервер, просмотр содержимого серверной папки, перезапись файлов при их изменении и многое другое. Можно получать данные о погоде в твоем текущем местоположении или в заданной географической точке, копировать их в буфер обмена и дальше делать с ними что-нибудь полезное. Причем географическую точку, для которой ты определяешь погоду, необязательно вводить вручную — ее можно получить, скажем, в качестве входного параметра из события, записанного в «Календаре». И это только пара очевидных примеров. Все остальное ограничено только твоей фантазией.

ЛайфHack

Несмотря на то что приложение «Команды» использует собственную идеологию выполнения заданной пользователем последовательности действий, старые добрые принципы x-callback-url никуда не делись и по-прежнему в полной мере поддерживаются приложением. На эту особенность обратил внимание технический специалист и исследователь iOS Федерико Витиччи. Он выяснил, что с помощью специальных URL можно обращаться не только к интернет-ресурсам, но и к системному приложению «Настройки», точнее — к каждому отдельному экрану и даже определенным функциям.

Смысл этого трюка достаточно прост. Некоторые элементы управления iOS зарыты в приложении «Настройки» довольно глубоко, и добраться до них можно, лишь совершив длительное путешествие по нескольким сменяющим друг друга экранам. А можно поступить проще: создать в приложении «Команды» специальный ярлык с адресом нужной тебе настройки и сохранить ее в виде значка на экране телефона. В любой момент ты сможешь получить к ней доступ одним касанием. Удобно? Да не то слово!

У Apple отсутствует документация на этот счет, поэтому Витиччи, по его словам, потратил несколько дней на подбор соответствующих параметров вручную методом проб и ошибок. Мы не станем повторять этот эксперимент и воспользуемся его наработками — с огромной благодарностью к исследователю.

Итак, все команды, открывающие доступ к приложению «Настройки» и его компонентам, начинаются с префикса prefs:root=. Давай разберем простой пример такой команды. Я очень часто пользуюсь на своем айфоне режимом модема — иногда нужно раздать интернет навигатору в автомобиле, чтобы он показал мне пробки и дорожную обстановку, или ноутбуку, на котором я работаю вдали от дома. Но чтобы добраться до этой функции, необходимо запустить программу «Настройки» и перейти в раздел «Режим модема», то есть совершить два действия. Создадим ярлык, который откроет эту настройку в одно касание.

Запусти «Команды» и нажми в окне программы на кнопку «Создать команду». Нажми «Добавить действие», а затем коснись значка «Интернет». Промотай список вниз и выбери в нем пункт «URL-адрес». В панели «URL-адрес» нажми на поле apple.com и введи вместо этого строку prefs:root=INTERNET_TETHERING. Мы создали переменную, хранящую вместо URL-адреса команду настроек, — теперь нужно передать эту переменную в приложение, которое ее обработает.

Нажми кнопку + ниже, снова выбери «Интернет», в открывшемся списке отыщи раздел Safari и выбери в нем «Открыть несколько URL». Эта команда автоматически подцепит адрес из предыдущей строки, ничего менять не нужно. Удивительно, но факт: если мы просто вобьем строку prefs:root=INTERNET_TETHERING в команду Safari → «Открыть несколько URL», система не сможет ее правильно обработать.

Нажми «Далее» и введи произвольное название команды, например Hotspot, — одноименная плитка появится в окне приложения «Команды». Остался последний шаг: нажми и удерживай плитку, выбери в появившемся контекстном меню пункт «Подробнее», а потом нажми ссылку «Добавить на экран домой» и подтверди действие нажатием на надпись «Добавить». Значок Hotspot появится среди других значков приложений на экране iOS. Теперь ты можешь открыть настройку режима модема одним касанием.

Создаем команду для быстрого доступа к настройкам режима модема
Создаем команду для быстрого доступа к настройкам режима модема

Под этой статьей имеется ссылка на веб-страницу, в которой собраны все «волшебные URL», обнаруженные Федерико Витиччи. В этом списке ты можешь найти те команды настройки iOS, которые тебе нужны, и создать для каждой из них значок быстрого запуска.

Выводы

Возможности приложения «Команды» в iOS 13 пока еще до конца не изучены, но уже сейчас понятно, что они весьма широки: с его помощью можно создавать произвольные последовательности действий с программами, обрабатывать данные, а также запускать эти алгоритмы по расписанию или в зависимости от условий. С помощью JavaScript или Python можно еще больше автоматизировать работу в iOS 13, о чем мы обязательно расскажем подробнее в наших следующих статьях.

РЕКОМЕНДУЕМ:
Как избавиться от мерцания на телефоне

Даже в базовой конфигурации «Команды» позволяют проделывать с айфоном или айпадом множество интересных трюков. Если ты придумаешь нетривиальное применение этому приложению, не забудь поделиться своим опытом с нашими читателями!

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (1 оценок, среднее: 5,00 из 5)
Загрузка...
Понравилась статья? Поделиться с друзьями:
Добавить комментарий