что такое shortcuts в айфоне
Команды (Shortcuts) в iOS 12
Кирилл Сергеев
В марте прошлого года стало известно о сделке между Apple и компанией DeskConnect – разработчиком приложения для автоматизации рутинных процессов Workflow. Согласно условиям соглашения, все права на этот программный продукт перешли к Apple, а команда разработчиков присоединялась к гиганту из Купертино в качестве внутреннего подразделения. В тот момент стало понятно, что функциональность Workflow рано или поздно будет интегрирована в iOS, и это случилось спустя почти полтора года.
Вместе с выходом финальной версии iOS 12 в App Store появилось новое приложение от Apple – “Команды”. Точнее даже не появилось, а заменило собой Workflow, которое с момента сделки между Apple и DeskConnect можно было установить бесплатно (ранее за 229 рублей).
Итак, давайте разбираться, что это за приложение, что оно умеет и что в этом всем полезного.
Что такое “Команды”?
“Команды” – это приложение, которое позволяет автоматизировать различные процессы, производимые как встроенными инструментами iOS, так и сторонними приложениями. Список этих действий может быть поистине бесконечным, о примерах мы поговорим немного позже.
По своей сути, команда – это некое действие или последовательность действий, результатом которых будет выполнение какой-либо конкретной задачи.
Крайне любопытный факт заключается в том, что с помощью команд энтузиасты уже научились не только автоматизировать то, что устройства на iOS умели делать раньше, но дополнять iOS 12 теми функциями, которых ранее по тем или иным причинам в системе не было. Хоть фанаты Android и усмехнутся, с помощью каких “костылей” (а расширение функциональности iOS с помощью команд и есть самый настоящий “костыль”) теперь, например, можно скачивать файлы, но владельцам iOS-устройств станет жить чуточку проще.
Что касается запуска этих самых команд, то он может осуществляться одним из пяти способов:
Я уверен, что многим из вас до сих пор до конца не понятно, как это работает, поэтому приступим к обзору самого приложения “Команды” и примерам команд, которые там доступны.
Интерфейс приложения и встроенная Галерея команд
Одной из главных задач разработчиков после присоединения к команде Apple было переосмысление интерфейса с точки зрения простоты и интуитивности использования. Workflow всегда был довольно “гиковским” продуктом, и признаюсь, что даже мне было лениво в нем разбираться, хотя пару-тройку попыток в разное время я все же предпринимал.
Получилось ли у них это сделать? Думаю да. Но несмотря на это, мне кажется, что этот продукт пока так и останется нишевым. По крайней мере в том виде, в котором он существует сейчас.
Итак, главный экран “Команд” состоит из двух вкладок: Библиотека и Галерея. На первой хранятся сохраненные вами команды, а вторая представляет из себя архив готовых “рецептов”, разделенных на категории и подборки.
К слову, создавать команды можно и самостоятельно, однако для этого потребуются хотя бы базовые знания программирования и его терминов: переменные, операторы, функции и так далее; а также свободное время. Лично я в этом не силен, но уверен, что знающие люди разберутся самостоятельно. А остальные будут пользоваться уже готовыми командами, которые найдут либо во встроенной Галерее, либо на сторонних ресурсах.
Давайте смотреть, что есть в Галерее, доступной в самом приложении “Команды”, так как изучение возможностей команд я рекомендую начать именно с нее.
Открыв Галерею, сверху мы увидим различные подборки. Ниже я перечислил те, которые там есть на момент написания статьи, а также дополнил примерами, чтобы у вас сложилось понимание, какие команды могут быть вообще, и как их можно применить в повседневной жизни.
Команды для открытия общего доступа. Примеры: поделиться геопозицией через Сообщения, отправить последний скриншот по AirDrop, поделиться текущей песней в Instagram, конвертация Live Photo в видео для Twitter.
Команды для виджета. Примеры: таймер для стирки, быстрый набор номера, напомнить на работе, отправить время прибытия домой, найти ближайшую АЗС, воспроизвести определенный плейлист.
Команды для сторонних приложений. Примеры: произнести текст статьи в Safari, создать PDF из сайта, просмотреть исходный код страницы, добавить ссылку в Pocket, поделится статьей в Bear.
Команды для Apple Music. Примеры: таймер выключения музыки, воспроизведение недавно добавленных треков, включение радио с музыкой определенного жанра.
После подборок идут категории: Основное, Утренние задачи, Быстрые команды, Избранное, Действия в Apple Music и еще с десяток других категорий.
Я рекомендую вам самостоятельно и внимательно пройтись по всем категориям и выбрать то, что будет полезно именно вам. Советовать какие-то конкретно команды здесь я не буду, так как каждый пользуется смартфоном по-своему, и список полезных команд для разных людей может отличаться более, чем полностью.
Где еще можно найти команды и как их добавить?
В связи с тем, что команды можно создавать самостоятельно, на просторах Сети уже появились энтузиасты, которые делают их не только для себя, но и выкладывают свои творения на всеобщее обозрение. Как правило, такие команды функциональнее того, что можно найти в Галерее.
Здесь не лишним будет вас предупредить о том, что под видом других действий, команды в фоновом режиме могут “сливать” ваши данные на сторону и даже воровать деньги с банковских карт. Хорошо, что определить это можно беглым просмотром алгоритма работы той или иной команды: для этого нажмите на многоточие в правом верхнем углу карточки команды и посмотрите “код” команды на предмет того, нет ли среди её структуры подозрительных действий.
Вот один из примеров воровства средств с карт Сбербанка.
Источник изображения Telegram-канал @iOSshortcut
Будьте внимательны, проверяйте команды и скачивайте их только из проверенных источников.
Что касается сторонних ресурсов, на которых можно найти и скачать пользовательские команды, то одним из первых ожидаемо стал ресурс reddit.com. По ссылке доступна большая ветка, в которой каждый день появляются десятки команд. Если владеете английским языком, то можете следить за ней, а также за англоязычным агрегатором команд, который доступен по ссылке sharecuts.app.
Русскоязычный сегмент Сети не остался в стороне от новых возможностей iOS, и вскоре после релиза iOS 12 появился Telegram-канал @iOSshortcut. Там создатели выкладывают локализованные команды, найденные на западных ресурсах, а также свои собственные наработки. Еще один ресурс для русскоязычных пользователей – сайт siricmd.ru.
Ниже я приведу несколько примеров полезных пользовательских команд, которые можно найти на этих ресурсах. Чтобы их добавить в свою Библиотеку, необходимо просто открыть ссылку на iOS-устройстве и выбрать пункт “Получить быструю команду”. Также по такой ссылке можно посмотреть алгоритм действий, которые команда совершает. Сами примеры и превью работы команд взяты с Telegram-канала @iOSshortcut.
Калькулятор дат. Эта команда поможет определить количество дней между датами, какая будет дата через выбранное количество дней или количество рабочих дней в указанном периоде.
Случайный Фильм (Кинопоиск). Команда для тех, кто часто задается вопросом “что посмотреть?”
Игра 2048. Играйте в легендарный “убиватель времени” без установки игры.
Буфер обмена с 5 слотами. Команда позволяет сохранить текстовую информацию в 5 слотов буфера обмена с возможностью предпросмотра.
WiFi QR. Эта команда создаёт QR-код для подключения к вашим точкам доступа, либо показывает пароль от них.
Media Grabber. Команда для загрузки медиафайлов с разных ресурсов, например, ВКонтакте, Vimeo, Soundcloud, YouTube. Полный список поддерживаемых ресурсов здесь.
YouTube Видео. Для тех, кому нужна загрузка видео только из YouTube. Умеет скачивать видео в разрешении до 1080p или только звуковую дорожку в mp3.
InstaSave. Умеет скачивать фотографии из Instagram, фотографии профилей в высоком разрешении, а также фотографии из Историй и Highlights.
Заключение
Само приложение “Команды” и те вещи, которые с помощью него можно делать, стали своеобразным “тюнингом” для закрытой операционной системы, коей и является iOS. Но зачем он понадобился Apple в виде собственной команды разработчиков и собственного приложения? Посмею предположить, что этот шаг был вынужденной мерой для улучшения собственных позиций в конкуренции с Android. Таким образом Apple дала чуть больше свободы пользователям (о которой постоянно твердят владельцы Android-устройств) и, конечно же, она это сделала в своем “неповторимом” стиле.
А как вы отнеслись к этому нововведению iOS 12? Нашли что-то полезное для себя?
Быстрые команды Siri
Одна из полезных (по моему мнению) фич iOS 12, представленных на WWDC 2018 — Siri Shortcuts.
Шорткат (англ. shortcut) — быстрая команда, короткий способ совершить какое-либо действие в обход стандартному сценарию.
В своих приложениях вы можете привязывать шорткаты для некоторых действий. Обучаясь на том, как и когда пользователь их выполняет, Siri начинает по-умному, в нужное время и место, предлагать ему эти шорткаты и, что самое крутое, пользователь сможет их вызывать фразами, которые сам к ним привяжет! Под катом подробнее.
Как это работает
Мы используем приложения, которые при определенных действиях, создают и доставляют шорткаты в систему.
Посмотреть эти шорткаты можно в «Настройки → Siri и поиск«.
На скриншоте выше отображаются последние три шортката, которые словила система с разных приложений. Если мы нажмем на кнопку “More shortcuts”, то увидим все шорткаты, доставленные в систему каждым приложением.
При определенных настройках в коде создания шортката, Siri будет предлагать эти шорткаты пользователю на заблокированном экране, в центре уведомлений и поиске, ориентируясь на то, как часто мы пользуемся этими действиями, в какое время, по каким дням недели, где и на другие факторы.
Например, если в пятницу вечером вы обычно ищите банкоматы, то обучившись, по вечерам пятницы Siri будет предлагать вам шорткат с этим действием.
К каждому шорткату мы можем добавить свою голосовую команду, если нажмем на иконку «+«.
Произносим голосовую команду, нажимаем «Done», и теперь мы можем выполнять действие, стоящее за шорткатом, с помощью голоса через Siri. Получается, что чать функциональности вашего приложения пользователь сможет выполнять через Siri, не открывая само приложение. Шорткат с фразой сохранился в «My shortcuts».
Создание шорткатов
Для разработки нам понадобятся XCode 10 и iOS 12. На момент написания статьи оба они на стадии Beta.
Пользователь нажимает на шорткат, который передает команду с параметрами ( NSUserActivity ) нашему приложению, а оно само решает, как эту команду следует обработать (открыть окно текущего курса USD, или окно заказа нашей любимой пиццы). Это старый-добрый Spotlight shortcut, который мы все знаем, но по-умному предлагаемый Siri.
Шорткаты, созданные через Intent интереснее — они позволяют выполнить команду сразу в интерфейсе Siri, не запуская вашего приложения. Раньше набор Intent ‘ов был жестко задан Apple: перевод денег, отправка сообщений, и прочих. Теперь же, у нас, разработчиков, появилась возможность создавать свои Intent ‘ы!
Независимо от того, как создавался шорткат — он проходит 3 стадии жизненного цикла:
Мое исследование показало, что одно приложение может доставить в систему не более 20 шорткатов.
Дальше рассмотрим, как одарить наше приложение способностью создавать шоркаты и как с ними работать внутри него.
Создание шорткатов через NSUserActivity
Например, в приложение мобильного банка у нас есть экран поиска банкоматов и я часто их ищу. Для того чтобы попасть на экран с картой банкоматов, мне приходится запустить приложение, перейти на таб «Еще» в таббаре, выбрать раздел «Инфо» и уже там нажать на кнопку «Банкоматы».
Если мы создадим шорткат, который сразу ведет на этот экран — пользователь сможет попасть в него в одно касание, когда Siri предложит ему его, например, на заблокированном экране.
Объявляем шорткат (Declare)
Первым шагом будет объявление типа нашей NSUserActivity (можно сказать, что это ее идентификатор) в info.playlist:
Доставляем шорткат в систему (Donate)
После объявления мы можем создать NSUserActivity в коде нашего приложения с типом, который мы задали выше в info.playlist:
Огонь! NSUserActivity есть, чтобы доставить ее в систему, осталось сделать последний шаг.
Как только эта строка выполнится, из этой активити создастся шорткат. Он доставится в систему и отобразится в настройках Siri (Настройки → Siri и поиск). После чего Siri сможет предлагать его пользователю, а пользователь сможет назначить ему свою голосовую команду.
Next, call the becomeCurrent() method on the user activity object to mark it as current, which donates the activity to Siri. Alternatively, you can attach the object to a UIViewController or UIResponder object, which also marks the activity as current.
Чтобы проверить, что все сработало, открываем Настройки > Siri и поиск — шорткат на базе нашей активити должен быть в списке.
Обработка шортката приложением (Handle)
Когда пользователь перешел по шорткату из центра уведомлений или активировал его голосом, запускается приложение, и мы должны обработать этот шорткат.
activity пробросится нам в методе AppDelegate ‘a:
Итого
Шорткат на базе NSUserActivity создается следующим образом:
Создание голосовых команд из приложения
Итак, если пользователь откроет Настройки > Siri и поиск, то увидит список своих шорткатов, который создавался различиными приложениями, и нашим в том числе. Нажав на «+«, пользователь сможет создать любую голосовую команду и связать ее с выбранным шорткатом. Однако каждый раз заходить в настройки неудобно для пользователя, многие даже не догадываются о такой возможности.
Круто, что можно привязать голосовую команду к определенному действию прям внутри приложения.
Допустим, пользователь совершил какое-то действие, оно доставилось в систему, он хочет его сохранить. Мы можем добавить кнопку «добавить действие в Siri«(назвать и нарисовать кнопку можете как угодно) на экран нашего приложения, тогда пользователь, нажав на нее, сможет связать это действие с голосовой командой изнутри приложения, не заходя в настройки.
Так, выглядят экраны добавления и редактирования голосовой команды для шортката Siri:
Также мы должны реализовать делегатные методы этих viewController’ов, в которых их нужно спрятать dismiss(animated: true, completion: nil) и, если необходимо, обновить текущий экран. Например, если раньше на экране была кнопка «добавить голосовую команду», то после добавления голосовой команды эта кнопка должна либо исчезнуть либо измениться на «редактировать голосовую команду».
Шорткаты, созданные при помощи Intent
Представим, пользователь заказывает свою любимую пиццу. Он будет заказывать ее много раз, когда захочет, и он даже добавил голосовую команду на шорткат этой пиццы — и это упрощает его жизнь. Но мы можем сделать для него больше — мы можем сделать так, чтобы подав голосовую команду Siri, система не кидала его в приложение, а показала информацию о заказе и заказала пиццу сразу в интерфейсе Siri! Это как раз тот случай, когда пользователю не понадобится открывать само приложение, чтобы совершить какое-то действие.
Сначала заходим в настройки проекта, выбираем главный таргет, вкладку Capabilities и включаем доступ к Siri.
Наше приложение может взаимодействовать c Siri, но происходит это не в основном коде приложения, а в отдельном таргете-расширении Intents Extensions
Для начала этот таргет необходимо создать: File → New → Target, выбираем Intents Extensions. XCode предложит создать еще target-расширение для окошка отображения вашего действия в Siri, если есть в этом потребность, то соглашаемся.
Объявляем шорткат (Declare)
Для этого нужно создать новый файл: File → New → File, выбрав из секции Resource тип SiriKit Intent Definition File.
Теперь пару строк фрустрации:
Пользователь не сможет передавать одной и той же сохраненной голосовой команде разные параметры. Увы!
Для чего параметры:
Допустим, вы создаете сущность «Покажи курс %currency «, где currency — это параметр сущности. Это не значит, что пользователь может говорить фразы «Покажи курс доллара», «Покажи курс биткойна» и т.д. Из коробки это не будет работать так. Но это означает, что если пользователь просмотрел курс доллара — то создался шорткат «Покажи курс USD», потом, когда он просмотри курс биткойна, создается шорткат «Покажи курс BTC» и т.д. Иными словами у него может быть несколько шоркатов, которые базируются на одной и той же intent, но с разными параметрами. Каждому из шорткатов пользователь сможет задать свою голосовую команду.
Хорошо, создав интент в файле .intentdefinition, XCode автоматически сгенерирует класс для этого интента (прим.: он не отобразится в файлах проекта, но будет доступен для использования) Этот автосгенерированный файл будет только в тех таргетах, которым принадлежит .intentdefinition файл.
После создания интента в файле .intentdefinition мы можем создавать наши интенты в коде.
Доставляем шорткат в систему (Donate)
После выполнения этого кода шорткат на базе интента доставится в систему и отобразится в Настройках Siri.
Обрабатываем шорткат приложением (Handle)
Следующий шаг — это обработать интент, когда пользователь нажмет на него в садджестах сири или вызовет его голосовой командой.
Прим.: Если компилятор не видит класс вашего интента, значит вы не добавили файл .intentdefinition таргет-расширение для Siri.
Оба этих метода обязательно должны вызвать completion c ответом OrderPizzaIntentResponse (он тоже автосгенерирован), иначе Siri просто будет долго ждать после чего выдаст ошибку.
Более подробные ответы от Siri
Теперь мы можем сообщать пользователю более информативные ошибки и ответы:
Отрисовка Intent ‘а
В зависимости от дизайна вашей вьюшки в Siri и от interaction.intent ‘а, который попал в метод, вы можете нарисовать эту вьюшку так, как хотите. Ниже скришоты, как выглядит наш интент в Siri, в поиске и на заблокированном экране.
Итого
Шорткат на базе Intent может отрисовать в интерфейсе сири или в центре уведомлений и выполнить действие не открывая приложение. Чтобы его создать нужно:
Рекомендации
Общий код в таргете-расширении Siri и в основном приложении
Если у вас есть код, который используется и в таргете для Siri и в таргете основного проекта — есть 2 способа решить этот вопрос:
Общие ресурсы можно шарить между таргетами через App Groups
Отладка
Тестировать шорткаты помогут помочь:
Нажать на этот таргет, нажать Edit Scheme.
В поле Siri Intent Query ввести фразу, с которой Siri уже запустится, как будто вы уже сказали ее.
Итого
Предлагаю остановиться и резюмировать, что у нас получилось:
В документации Apple есть ссылка на Demo проект, который полезно скачать и ориентироваться на него при разработке.
Добавление быстрой команды на экран «Домой» на iPhone или iPad
Можно добавлять быстрые команды на экран «Домой» и при необходимости группировать их в папки.
В списке «Мои команды» в приложении «Быстрые команды» на устройстве iOS или iPadOS коснитесь
на быстрой команде, чтобы открыть ее, затем коснитесь
, чтобы открыть экран «Подробнее».
Коснитесь «Добавить на экран «Домой»».
По желанию. Чтобы использовать произвольное фото в качестве значка на экране «Домой», коснитесь этого значка (в области значка и названия для экрана «Домой»), затем выберите один из следующих вариантов.
Сделать фото. Снимите новое фото на камеру устройства.
Выбрать фото. Выберите существующее фото из медиатеки Фото.
Выбрать файл. Выберите фото из приложения «Файлы».
По желанию. Чтобы изменить название, отображаемое на экране «Домой», коснитесь этого названия (в области значка и названия для экрана «Домой»), коснитесь , введите новое название, затем коснитесь клавиши Return.
Быстрая команда будет добавлена на экран «Домой».