Как заставить Сири создать заметку? - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь использовать SiriKit для создания заметки.Вот мой код в расширении приложения Intents:

import Intents

class IntentHandler: INExtension {

    override func handler(for intent: INIntent) -> Any {
        // This is the default implementation.  If you want different objects to handle different intents,
        // you can override this and return the handler you want for that particular intent.

        print("IntentHandler.handler(_:)")

        guard let createNoteIntent = intent as? INCreateNoteIntent else {

            return self

        }

        if let textNoteContent = createNoteIntent.content as? INTextNoteContent {

            print(textNoteContent.text as Any)

        }

        return CreateEntry()

    }

}

import UIKit
import Intents

class CreateEntry: NSObject, INCreateNoteIntentHandling {

    func handle(intent: INCreateNoteIntent, completion: @escaping (INCreateNoteIntentResponse) -> Void) {

        print("CreateEntry.handle(_:_:)")

        if let textNoteContent = intent.content as? INTextNoteContent {

            print(textNoteContent.text as Any)

        }

        let note = INNote(title: INSpeakableString(spokenPhrase: "May the force be with you."), contents: [INNoteContent()], groupName: nil, createdDateComponents: nil, modifiedDateComponents: nil, identifier: nil)

        let response = INCreateNoteIntentResponse(code: INCreateNoteIntentResponseCode.ready, userActivity: nil)

        response.createdNote = note

        completion(response)

    }

}

Когда я спрашиваю Siri «Создать заметку с помощью журнала», Siri отвечает «Извините, возникла проблема с приложением».и мой код печатает эти результаты.

IntentHandler.handler (_:)

IntentHandler.handler (_:)

IntentHandler.handler (_:)

IntentHandler.handler (_:)

IntentHandler.handler (_:)

CreateEntry.handle (: :)

Когда я изменяю аргумент INCreateNoteIntentResponseCode INCreateNoteIntentResponse на успех, Сири отвечает, что заметка создана, а затем показывает мне, что в заметке написано: «Да пребудет с тобой сила».

Сири никогда не спрашивал, чтосказать в записке.Я подумал, что если я отправлю ответ о готовности, как в моем коде выше, Сири спросит пользователя, что написать в заметке.

Я в тупике.Для этого не хватает документации.

...