Реализованные AppIntents iOS не отображаются в ярлыках
Я пытаюсь протестировать новый API AppIntents, который в настоящее время находится в бета-версии iOS16. Глядя на документацию, реализация кажется довольно простой, но после ее реализации я не вижу свой AppIntent в приложении «Ярлыки». Устройство работает под управлением iOS 16.0.
Вот как я реализовал AppIntent:
import AppIntents
struct DoSomethingIntent: AppIntent {
static var title: LocalizedStringResource = "This will do something"
static var description = IntentDescription("Does something")
func perform() async throws -> some PerformResult {
return .finished(value: "Done")
}
}
Согласно документации, приложение «Ярлыки» должно найти мой AppIntent после установки моего приложения, но я вижу, что это не так. Кто-нибудь знает, чего не хватает в моей реализации?
3 ответа
API-интерфейсы AppIntents немного новы и имеют странное поведение, а документация очень плохая.
В моем случае я смог заставить их работать, добавив\(.applicationName)
параметр фразы. Попробуй это:
struct LibraryAppShorcuts: AppShortcutsProvider {
@AppShortcutsBuilder static var appShortcuts: [AppShortcut] {
AppShortcut(intent: DoSomethingIntent(), phrases: ["Do something with \(.applicationName)"])
}
}
Сначала вам нужно выбрать Xcode-beta.app через xcode-select
Чистые производные данные
Убейте свое приложение и ярлык приложения
Добавьте библиотеку ярлыков в свой код
struct LibraryAppShorcuts: AppShortcutsProvider {
@AppShortcutsBuilder static var appShortcuts: [AppShortcut] {
AppShortcut(intent: DoSomethingIntent(), phrases: ["My something phrase"])
}
}
- Строить
API очень глючный. Используйте старый SiriKitIntents.intentdefinition
файл (CMD+N для его создания), чтобы настроить свои намерения с помощью специального пользовательского интерфейса, затем выберите опциюConvert to App Intent
генерировать намерения приложения с помощью реализации, которая действительно работает, и настраивать ее в соответствии с вашими потребностями.
Затем в поставщике ярлыков используйте эти намерения и не забудьте интерполировать фразы с помощью.applicationName
в противном случае он не появится в приложении «Ярлыки».
struct Shortcuts: AppShortcutsProvider {
static var shortcutTileColor: ShortcutTileColor = .navy
static var appShortcuts: [AppShortcut] {
AppShortcut(intent: SomeIntent(),
phrases: ["Do something with \(.applicationName)"],
shortTitle: "Just do it",
systemImageName: "magnifyingglass")
}
}