Siri Intent Предложенная фраза вызова не отображается в ShortcutViewController - PullRequest
1 голос
/ 28 апреля 2019

Я пытаюсь включить простое Siri Intent для моего приложения для iOS, с ячейкой TableView, функционирующей для вызова INUIAddVoiceShortcutViewController, с TableView в качестве его делегата.Тем не менее, предложенная фраза вызова, которая должна отображаться в представлении контроллера, не работает.

Я чрезвычайно новичок в Swift, поэтому больше ничего не пробовал, так как не знаю, что попробовать

Функция вызова:

getSiriView() {
 intent.suggestedInvocationPhrase = "Get a joke"

 let siriView = INUIAddVoiceShortcutViewController(shortcut: INShortcut(intent: intent)!)

 siriView.delegate = self;
 self.present(siriView, animated: true, completion: nil)
}

и ее расширения делегата следующие:

//
//  ViewControllerSiriExtensions.swift
//  Helium
//
//  Created by Richard Robinson on 2019-04-26.
//  Copyright © 2019 Richard Robinson. All rights reserved.
//

import Foundation
import IntentsUI

extension TableViewController: INUIAddVoiceShortcutButtonDelegate {
    func present(_ addVoiceShortcutViewController: INUIAddVoiceShortcutViewController, for addVoiceShortcutButton: INUIAddVoiceShortcutButton) {
        addVoiceShortcutViewController.delegate = self
        addVoiceShortcutViewController.modalPresentationStyle = .formSheet
        present(addVoiceShortcutViewController, animated: true, completion: nil)
    }

    func present(_ editVoiceShortcutViewController: INUIEditVoiceShortcutViewController, for addVoiceShortcutButton: INUIAddVoiceShortcutButton) {
        editVoiceShortcutViewController.delegate = self
        editVoiceShortcutViewController.modalPresentationStyle = .formSheet
        present(editVoiceShortcutViewController, animated: true, completion: nil)


    }

}

extension TableViewController: INUIAddVoiceShortcutViewControllerDelegate {
    public func addVoiceShortcutViewController(_ controller: INUIAddVoiceShortcutViewController, didFinishWith voiceShortcut: INVoiceShortcut?, error: Error?) {
        controller.dismiss(animated: true, completion: nil)
    }

    public func addVoiceShortcutViewControllerDidCancel(_ controller: INUIAddVoiceShortcutViewController) {
        controller.dismiss(animated: true, completion: nil)
    }
}

extension TableViewController: INUIEditVoiceShortcutViewControllerDelegate {
    public func editVoiceShortcutViewController(_ controller: INUIEditVoiceShortcutViewController, didUpdate voiceShortcut: INVoiceShortcut?, error: Error?) {
        controller.dismiss(animated: true, completion: nil)
    }

    public func editVoiceShortcutViewController(_ controller: INUIEditVoiceShortcutViewController, didDeleteVoiceShortcutWithIdentifier deletedVoiceShortcutIdentifier: UUID) {
        controller.dismiss(animated: true, completion: nil)
    }

    public func editVoiceShortcutViewControllerDidCancel(_ controller: INUIEditVoiceShortcutViewController) {
        controller.dismiss(animated: true, completion: nil)
    }
}

extension TableViewController {
    public var intent: JokeIntent {
        return JokeIntent()
    }
}

В настоящее время контроллер отображается и работает правильно, за исключением того, что он неотобразить предложенную фразу.

...