iOS 16 Siri AppIntents работает при произнесении «Привет, Siri», но не при удерживании кнопки питания телефона
У меня есть простое приложение со списком под названием «SiriTest», в которое я могу добавлять элементы, говоря: «Привет, Siri, добавь в SiriTest». Мне будет предложено произнести элемент, и элемент будет добавлен, Siri произнесет подтверждение и закроется. .
Если вместо этого я активирую Siri, удерживая нажатой кнопку питания, мне будет предложено произнести элемент, элемент будет добавлен в список, но диалоговый экран Siri останется открытым с надписью «Один момент…» или «Одна секунда». ...", и никакого подтверждения, пока я не нажму в другом месте экрана.
Как получить подтверждение от Siri и закрыть диалог Siri при использовании Siri, удерживая кнопку питания на боковой панели телефона?
import AppIntents
import SwiftUI
@available(iOS 16, *)
struct AddItemIntent: AppIntent {
static var title: LocalizedStringResource = "Add item"
@Parameter(title: "Item name")
var itemName: String
@MainActor
func perform() async throws -> some ProvidesDialog {
DispatchQueue.main.async {
ItemModel.shared.addItem(itemName: itemName)
}
return .result(
dialog: "Added to your list."
)
}
}
@available(iOS 16.0, *)
struct ListShortcuts: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] {
AppShortcut(
intent: AddItemIntent(),
phrases: [
"Add item to \(.applicationName)",
"Add to \(.applicationName)",
]
)
}
}
import Foundation
class ItemModel: ObservableObject {
static let shared: ItemModel = ItemModel()
@Published var list: [String] = []
init() {
dummyItems()
}
func addItem(itemName: String) {
list.append(itemName)
}
func dummyItems() {
list.append(contentsOf: ["One", "Two", "Three"])
}
}
import SwiftUI
struct ContentView: View {
@EnvironmentObject var itemModel: ItemModel
var body: some View {
List(itemModel.list, id: \.self) {item in
Text(item)
}
}
}
import SwiftUI
@main
struct SiriTestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(ItemModel.shared)
}
}
}