Shortcut — сценарий за автоматизация в приложението Shortcuts на Apple, който свързва действията на няколко приложения и услуги без писане на код. Shortcuts се стартират с глас чрез Siri, по график, при влизане или излизане от геозона, чрез натискане на уиджет или докосване на NFC етикет. Сценарият се създава визуално чрез конструктора Actions чрез плъзгане на блокове. Повече — на Shortcuts User Guide.
Основни точки
Shortcut — последователност от действия (Actions), обединени в един сценарий за автоматизиране на задачи на iOS, iPadOS, macOS и watchOS. За разлика от обикновено приложение, Shortcut няма постоянен интерфейс — той се изпълнява на заден план или показва бързи диалози само за въвеждане на данни. Потребителят създава сценария в приложението Shortcuts, комбинирайки блокове от галерията Actions, и го стартира с едно докосване, глас или автоматично чрез тригер.
Приложение Shortcuts — вграденият конструктор за автоматизация на Apple, достъпен на всички устройства с iOS 13+, iPadOS, macOS 12+ и watchOS. Библиотеката Actions включва над 300 вградени блока: системни (изпрати съобщение, обади се, отвори приложение), мултимедийни (снимка, музика, подкасти), интернет (REST API чрез Get Contents of URL), работа с файлове и документи. Галерията съдържа готови сценарии от Apple и общността — от изпращане на ETA на контакт до масово преименуване на файлове.
Библиотеката Actions се допълва от приложения на трети страни чрез App Intents framework. Разработчикът регистрира intent-и в Intents.intentdefinition и те автоматично се появяват в галерията Shortcuts. Например приложението Things 3 добавя Actions „Създай задача" и „Покажи днешните задачи", а CARROT Weather — „Прогноза за днес" с параметри за местоположение.
Shortcuts работи в пясъчната среда на iOS — сценарият се изпълнява във фонов процес shortcuted с ограничени права. Всяко Action е извикване на предефиниран handler, който получава входни параметри, извършва операция и връща резултат. Системата предава изходните данни на едно Action на входа на следващото чрез pipeline — потребителят вижда това като сини точки за свързване на блоковете в редактора.
Поток на изпълнение на Shortcut е линеен: Actions се изпълняват последователно отгоре надолу. Условните преходи се реализират с блокове If — системата изчислява условието и изпълнява съответния клон. Налични са цикли Repeat (повтори N пъти), Repeat with Each (по елементи на списък) и For Each. Грешка в едно Action прекъсва целия сценарий, освен ако не е добавен блок Try/Catch.
import Intents
class OrderCoffeeIntentHandler: NSObject, OrderCoffeeIntentHandling {
func handle(intent: OrderCoffeeIntent,
completion: @escaping (OrderCoffeeIntentResponse) -> Void) {
let order = Order(coffee: intent.coffee, size: intent.size)
placeOrder(order) { success in
let response = success
? OrderCoffeeIntentResponse.success(coffee: intent.coffee)
: OrderCoffeeIntentResponse.failure(error: "Order failed")
completion(response)
}
}
}
Всеки Intents handler се регистрира в Info.plist чрез ключа INIntentsSupported. При стартиране на Shortcut чрез Siri системата намира подходящия IntentHandler и го изпълнява асинхронно. Отговорът се връща под формата на обект INIntentResponse, съдържащ статус, съобщение и опционални данни за показване на потребителя.
Създаване на Shortcut започва с натискане на „+" в галерията на приложението Shortcuts. Потребителят избира Actions от категории: Приложения, Сценарии, Интернет, Файлове, Здраве, Музика и други. Всяко Action се конфигурира — полета за въвеждане, превключватели, списъци. След сглобяване сценарият се тества с бутона Play, а при грешки се откроява проблемният блок. За публикуване Shortcut се експортира във файл .shortcut за изпращане чрез AirDrop или iMessage.
Променливи и магия Shortcuts поддържа променливи — изходните данни на едно Action могат да бъдат предадени на друго. Магическите променливи (Magic Variables) се определят автоматично: ако предишното Action връща изображение, системата го предлага в параметрите на следващото. Потребителят може също да създава именувани променливи чрез блок Set Variable и да ги използва навсякъде в сценария.
import AppIntents
struct CreateTaskIntent: AppIntent {
static var title: LocalizedStringResource = "Create Task"
static var description = IntentDescription(
"Creates a new task in your to-do list"
)
@Parameter(title: "Task Title")
var taskTitle: String
func perform() async throws -> some IntentResult {
let task = TaskModel(title: taskTitle)
try await Database.shared.save(task)
return .result(dialog: "Task created")
}
}
App Intents — модерна рамка от Apple (iOS 16+, SwiftUI), която замени Intents за персонализирани intent-и. За разлика от стария SiriKit, App Intents работи без Objective-C runtime, поддържа асинхронност чрез async/await и автоматично генерира диалози за Siri. Struct CreateTaskIntent се маркира с протокол AppIntent, а параметрите с атрибут @Parameter. Рамката сама създава Action в галерията Shortcuts.
Тригери на Shortcuts — условия, при които сценарият се стартира автоматично. Конфигурацията се извършва в раздела Automation в приложението Shortcuts. Тригерите се делят на лични (време, местоположение, зареждане), сензорни (NFC, разклащане), системни (отваряне на приложение, режим на фокус, свързване с CarPlay) и събитийни (получаване на имейл, календарно събитие, известие). За всеки тригер може да се зададе незабавно изпълнение или с потвърждение.
| Тригер | Условие за стартиране | Пример за използване |
|---|---|---|
| Време | Определено време, изгрев/залез | Включване на режим „Не безпокойте" в 22:00 |
| Геозона | Влизане или излизане от зона | Изпращане „Прибирам се" при излизане от работа |
| NFC | Докосване на NFC етикет | Стартиране на сценарий „Умен дом" при докосване на етикет |
| Приложение | Отваряне или затваряне на приложение | Напомняне за изключване на таймера при затваряне на YouTube |
| Фокус | Промяна на режим Focus | Включване на тъмна тема при активиране на Sleep Focus |
| Зареждане | Свързване/изключване на захранване | Отваряне на уиджет за зареждане при свързване на MagSafe |
Автоматизация — ключова възможност на Shortcuts, недостъпна за обикновени приложения без права на разработчик. Потребителят конфигурира тригера веднъж и забравя — сценарият се изпълнява на заден план без участие. Например автоматизацията „Когато се прибера вкъщи, включи Wi-Fi и изключи безшумния режим" се стартира при влизане в геозоната на дома. Системата изисква разрешение за автоматизация при първата конфигурация и може да я изключи при рядко използване.
Shortcuts на macOS — от macOS 12 Monterey Shortcuts станаха достъпни на Mac. Сценариите се синхронизират чрез iCloud между всички устройства на Apple. На Mac се поддържат системните Actions Finder, Terminal, Automator и AppleScript. Разработчиците на macOS могат да добавят Actions чрез App Intents аналогично на iOS.
App Intents — основната рамка за интеграция на приложение с Shortcuts на iOS 16+ и macOS 13+. Разработчикът създава struct, имплементиращ протокол AppIntent, описва параметри чрез property wrappers и имплементира метод perform(). Системата автоматично регистрира intent-а в Shortcuts, Siri и Spotlight. За поддръжка на стари версии на iOS (10–15) се използва Intents framework с INIntent и IntentHandler.
import Intents
class IntentHandler: INExtension {
override func handler(for intent: INIntent) -> AnyObject? {
if intent is OrderCoffeeIntent {
return OrderCoffeeIntentHandler()
}
return .none
}
}
Тестване на App Intents — отстраняването на грешки в intent-ите се извършва чрез Xcode: изберете схемата на приложението, в Arguments предайте -intents и симулаторът ще предложи списък с регистрирани intent-и за тестване. За проверка на Shortcut в среда, близка до реалната, създайте архив на приложението и инсталирайте на устройство чрез TestFlight. Shortcuts от приложението се появяват в галерията след първото стартиране.
Разширени възможности App Intents поддържа параметри с автоматично довършване (динамични опции), потвърждение преди изпълнение (confirmation), intent-и за Siri (voice shortcuts) и създаване на уиджети с бутони за стартиране. Indexed intents (iOS 17+) — intent-и, които Siri автоматично предлага на потребителя въз основа на контекст: време, местоположение и история на действията.
Често задавани въпроси
Shortcut — е сценарий, който свързва действията на различни приложения, а не самостоятелно приложение. Потребителят не пише код, а сглобява сценарий от готови блокове Actions. Shortcut се стартира от тригер и се изпълнява без отваряне на приложението Shortcuts, докато обикновеното приложение изисква стартиране чрез икона на екрана.
Shortcuts поддържа тригери: време по график, геозона при влизане или излизане от зона, NFC етикет при докосване на iPhone, отваряне на приложение, натискане на уиджет, гласова команда Siri, свързване на зарядно устройство, режим на сън и фокус Focus Mode, както и определени известия от приложения. Конфигурацията се извършва в раздела Automation.
Да, Shortcut се експортира във файл .shortcut и се изпраща чрез AirDrop, iMessage или се публикува в галерията Shortcuts чрез iCloud. Получателят импортира сценария и може да го използва. При изтегляне от интернет iOS изисква потвърждение и предупреждава за стартиране на непроверени сценарии поради потенциални рискове за сигурността.
Приложенията на трети страни добавят Actions чрез App Intents framework на iOS 16+ или Intents framework на по-стари версии. Разработчикът регистрира действията в Intents.intentdefinition и те се появяват в галерията Actions на приложението Shortcuts. Потребителят комбинира Actions на различни приложения — например изпраща връзка от Safari в бележките Bear.
Не, Shortcuts се създават визуално без код. Потребителят плъзга блокове Actions от списъка, конфигурира параметри и ги свързва последователно. За напреднали сценарии са налични блокове Run Script Over SSH, Get Contents of URL и Control Flow If, Repeat, For Each, но опит в програмирането не е задължителен.
Резюме
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също