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)
        }
    }
}

0 ответов

Другие вопросы по тегам