swift - Siri Intent Suggested Invocation Phrase 未显示在 ShortcutViewController 中
问题描述
我正在尝试为我的 iOS 应用程序启用一个简单的 Siri Intent,使用 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()
}
}
目前,控制器出现并正常工作,只是它不显示建议的短语。
解决方案
推荐阅读
- excel - 为什么 Excel 文件(2007+ 类型 .xlsx 等)中的值在内部 .xml 文件中存储为不同的数字
- python - 在 Python SQL 查询中在 oracle 中声明一个变量
- mysql - MySQL:员工根据工作级别和职位条件排序
- c++ - 如何在 QML 的 ApplicationWindow 中访问对象的 objectNames?
- c# - 将 C++ 嵌套模板结构转换为 C#
- laravel - 玉米工作不适用于 Cpanel 上的 laravel 项目
- javascript - Nextjs 删除工作箱 console.log 消息
- javascript - 移动 Safari 在 play() 上跳过 HTML 音频的前几秒
- c# - 如何在代码中后处理 IQueryable 字段而不丢失发送到数据库的表达式?
- python - 重命名列上的 SQLite 过滤器不起作用