Шорткаты на Айфоне

Пардон, это заметка типа «поток сознания». Макс, не читай.

В 12-м Ай-ОСе появилось приложение Шорткаты. На самом деле это Эплы купили давно существовавшее приложение Воркфлоу и переименовали его, но не суть. Типа ура, пришла автоматизация в Ай-ОС, можно научить телефон чему-то умному!

На компьютере у меня есть пара десятков скриптов, которые автоматизируют разные штуки: наводят порядок в тегах мп3-файла, изменяют размер окна точно до нужного, расставляют подписи в уголках кучки фотографий перед публикацией. Поэтому мне, конечно, было интересно понять, что можно автоматизировать на телефоне.

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

Я прочитал штук пять статей разных авторов про то, как они классно используют Шорткаты, и на каждый их пример мне оставалось только пожать плечами. Они все какие-то вымышленные, таких задач не бывает в моей жизни. Например, один автор, уезжая с работы, запускает шорткат, который смотрит, сколько ему ехать до дома с учётом пробок, и отправляет жене эсемеску «милая, я буду через %t». Надеюсь, его жена настроила автоответ «жду, любимый!», и вся эта коммуникация не доставляет никаких хлопот обоим.

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

Пример с музыкой оказался мне полезен — я люблю, бывало, скинуть кому-нибудь название трека, который слушаю. Но это не имеет никакого отношения к автоматизации, это просто костыль для добавления фичи, которая и так должна была быть в приложении. И я смог сделать этот шорткат только потому, что Эплы предусмотрели для этого экшен. То есть Эплы прям подумали: «наверное людям может быть полезно скопировать название песни в буфер», но вместо того, чтобы добавить всплывашку сюда:

Они добавили экшен в «Шорткаты»! Как, почему? В итоге этой фичей смогут воспользоваться в лучшем случае один процент из тех, кому она понадобится. Точнее, даже из того одного гипотетического процента, кто это найдёт, большинство не смогут составить сам шорткат. Дело в том, что экшен Get Current Song нужно ещё пропустить через экшен с феноменально бессмысленным названием Text, и только потом копировать в буфер. В результате у меня есть вот такой шорткат:

То есть как программист ты можешь догадаться, что, видимо, Get Current Song возвращает объект, у которого несколько полей, и который не умеет автоматически преобразовываться в тип string, а Copy To Clipboard ожидает на входе именно этот тип, и поэтому нужно строку составить вручную из полей объекта. Но как до этого должен догадаться обычный человек я не понимаю. Зато я отлично понимаю, как эта фигня озадачит даже программиста.

Вот как то же самое выглядело бы в коде (язык вымышленный):

Let s = Music: GetCurrentSong
CopyToClipboard s.Artist ": " s.Title

Как этот текст может быть менее понятен, чем та хрень, которая у меня на скриншоте? Экшен Text даже не глаголом называется! Что такое Local Only я не представляю. В программировании есть хотя бы документация по функциям, а тут нет нихрена. Это похоже на паззл.

В общем, однажды мне пришло в голову, как использовать шорткаты. Так устроена моя банковская жизнь, что часть месяца мне выгоднее рассчитываться одной карточкой, а вторую часть — другой. А чтобы переключить дефолтную карточку в Эпл-пее, нужно идти в какие-то адские дебри настройки. И я подумал: «О! Сделаю себе шорткат, который будет по команде включать нужную карточку. Пусть сам идёт в нужные дебри настройки и жмёт нужные кнопки!» Это-то должно быть возможно?

Хрен. Оказалось, что нельзя сделать шорткат, который меняет что-то в настройке.

И вот тогда я подумал, что надо будет написать этот пост и объявить «Шорткаты» полностью бесполезным говном.

Но как раз в это время я засобирался к родителям на дачу; — и тут в истории наступает неожиданный поворот (оцените также невероятную пунктуацию в этом предложении).

Зимой дачу постоянно топить дорого, а учитывая, что там не каждые выходные кто-то появляется, это просто глупо. Поэтому в отсутствие посетителей там лишь поддерживается плюсовая температура, чтобы трубы не полопались. Чтобы не приезжать в ледяной дом и не ждать полдня, пока станет тепло, несколько лет назад мы установили штуку, которая позволяет удалённо включать и выключать батареи. И это не хипстерская какая-нибудь хрень с красивым приложением для айфона, а приборчик с сим-картой, которому надо отсылать эсемески с командами.

В общем, процедура поездки на дачу зимой такая, что за несколько часов до выезда нужно отправить серию эсемесок, чтобы включить несколько батарей. Также при отъезде нужно не забыть отправить серию эсемесок, возвращающих всё в исходное положение. И вот делать это — бесит, даже несмотря на то, что мне, может, раз пять за зиму это надо. Так что я сделал шорткат:

И аналогичный для отъезда. Даже в Сири добавил. Теперь говорю: «Сири, нагрей дачу!» и она греет. Это круто. Что такое Show When Run я, разумеется, не знаю.

Зацените ещё, как совершенно бесчеловечные смс-команды завёрнуты в красивые прямоугольнички с тенями! Вот оно, программирование будущего по версии Эпла.

Конечно, из-за того, что вместо нормального кода я должен составлять это из тупых блоков, эта штука совершенно неповоротлива. Скажем, я рассказал про эту штуку папе — он порадовался, попросил меня скинуть экшен ему. Ну я разобрался, как это сделать (конечно, просто скопировать код и вставить в чат в телеграме я не могу). И что толку? У папы он не заработал, потому что у него в Контактах дачная симка называется не так, как у меня, а отредактировать он ничего не может. Почему эти экшены добавились как нередактируемые, я понятия не имею.

А вот как это могло бы выглядеть, если бы это был код:

Messages: Send "Temp.R1=+20 XXXXX" To "Dacha Uvildy Ksytal"
Messages: Send "Temp.R2=+20 XXXXX" To "Dacha Uvildy Ksytal"
Messages: Send "Temp.R3=+20 XXXXX" To "Dacha Uvildy Ksytal"

Но нет, ведь для того, чтобы сделать программирование «доступным простым людям» нужно усложнить его настолько, что даже программист не разберётся.

Дальше
13 комментариев
Dmitry Kononov 2018

Чтобы поменять карточку по-умолчанию можно в Wallet пальцем вытащить карточку поверх стопки.
Так как в Москве Walletом уже вполне можно пользоваться для хранения карточек от программ лояльности я его все равно вынес на основной экран.

Vadim Kraev 2018

потому что у него в Контактах дачная симка называется не так, как у меня, а отредактировать он ничего не может.

Шорткаты можно настроить так, чтобы при добавлении оно спрашивало у пользователя какие-то вводные параметры, в данном случае номер дачи. После этого нужный контакт в виде переменной подставляется в нужные поля

combdn 2018

Перед нормальным программированием есть только два плюса:

  1. Браузер «классов», который позволяет плсмотреть, что, вообще, есть. (Хотя, похоже на среды разработки скриптов для приложений Адоби, и, если я не ошибаюсь, на Смолток.)
  1. «Скругленные углы» пытаются обмануть потенциального пользователя и обойти его страх перед программированием.
Илья Бирман 2018

Ничё не мешает дать интерфейс для просмотра библиотеки объектов, полей и действий. И автодополнение при вводе умное предусмотреть.

Vadim Kraev 2018

Почему эти экшены добавились как нередактируемые, я понятия не имею.

Только сейчас заметил ещё. На скриншотах использованы нередактируемые экшены, которые предлагаются айосом на основе часто выполняемых действий. Паттерны такие. Чтобы иметь возможность указать другой номер телефона, надо использовать голые экшены с полями, куда можно добавлять инфу самостоятельно. Вот как раз туда можно скормить нужный контакт при импорте, либо не заморачиваться с импортом, а изменить потом на другом телефоне всё руками — обычные экшены (не предложенные айосью на основе предыдущих действий) редактируются на любом айфоне. Но тупо, да.

не тот Радченко 2018

Я пробовал прикручивать шорткаты вроде «прочитать статью из Pocket», но этим я пользовался только при тестировании.

Это Полевой 2018

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

Илья Бирман 2018

Дайте ссылку тогда :-)

Mikhail K. 2018

В Шорткатах есть очень мощная функция — работа с веб-API. Так, например, я написал себе шорткат, который ищет название песни через API Яндекс-Музыки и копирует оттуда ссылку, чтобы отправлять её друзьям, которые не пользуются Эпл-Музыкой.
Но сам интерфейс для создания шорткатов ужасен, ему точно нужна какая-то «продвинутая» версия в виде текстового редактора. Надеюсь, его будут развивать в эту сторону.

Павел Супрунюк 2018

Слава богу, что хоть появилась отправка СМС без подтверждения. В Ворклоу нужно было вручную отправлять каждое сообщение (т. е. нажимать кнопку Отправить).

Кстати, с 1 декабря Сири почему-то вместо отправки смс, начала по этой команде включать плейлист «ПЕСНИ. КОНЦЕРТ #5 на ТНТ», которого у меня нет в библиотеке, а когда я поменял фразу — начал включать Жванецкого «Все на охрану социалистической собственности (Live)». После того, как я снова поставил старую фразу — снова начало работать.

Из полезного я, например, настроил шорткат, который по SSH подключаются к серверу, где запускается MySQL-запрос, который проверяет очередь неразмещенных заказов (про небезопасность понимаю); второй — проверяет загрузку сервера; третий — записывает вес в программу «Здоровье», если я взвешиваюсь не дома; четвертый — создает в программе «Посылка» новое отправление из буфера.

Вообще штука полезная, и я бы все понял, если бы у всего этого был альтернативный вариант редактирования — на каком-то языке. Чтобы там были нормальные условия, функции и т. д. Например, Эксель умеет записывать макросы — нажал Запись и делаешь, что тебе надо. А на выходе — VBA-код, который можно изучать, редактировать, дополнять. Вот это и есть программирование будущего.

Kamil 2018

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

Приложение:
https://itunes.apple.com/us/app/id1405459188

Документация:
https://docs.scriptable.app/

Это Полевой 2018

SMD 3.5.8
Скачивает видео с инстаграма, твиттера, ютуба в галерею. Только iOS 12+
https://www.icloud.com/shortcuts/a8dfe15e6872473d8393bf5feb3feaa3

Hellbot 2018

С какой-то версии iOS буфер обмена синхронизируется между устройствами. Local only сразу очевиден в этом контексте.
Но кто бы ещё поместил в этот контекст.

Current Song работает через системную оповещалку текущей песни — ему все равно в каком проигрывателе играет эта песня. Хотя с преобразованием в текст все таки мутно, просто программистов недожали на нормальный интерфейс.

Кстати, почему это похоже на спам?

Илья Бирман 2018

Про спам: не знаю, а как вы это обошли?

Filipp Riabchun 2018

Не сразу понял, что «mun string» это не мун, а тип

Artem Shatilov 2018

В Shortcuts очень сильно напрашивается ещё галерея топ-шорткатов (по типу как в IFTTT). Вот в комментах люди делятся как они сделали такие прикольные и полезные шорткаты, а воспроизводить их — надо либо самому думать, либо спрашивать. Легче добавить какой-нибудь браузинг шорткатов по фильтрам и упорядочить по популярности.

Мои книги