我正在开发一款iPad应用程序.我想在其中集成SIRI功能.
所以,请指导我研究这个问题.其实我不知道如何开始.
谢谢,
CP
我正在开发一个锻炼应用程序,并希望将SiriKit集成到iOS 10中.我已经知道如何集成SiriKit并让Siri与我们的应用程序一起工作.
我能找到的唯一有用的资源是Apple的官方文档:SiriKit iOS 10
为了让Siri认出我们的自定义词汇,我们必须添加此文件 AppIntentVocabulary.plist
但是intent.workoutName.identifier
总是返回口头短语而不是VixelItemIdentifier,而不是有氧运动,而不是有氧运动.
是否有人面临此问题或找到任何解决方案?
我有一些麻烦为Siri添加自定义词汇.
我在我的应用程序中实现了Siri,它适用于经典命令.但是,我试图添加一个自定义短语,但它无法识别它.我尝试了" https://developer.apple.com/library/content/documentation/Intents/Conceptual/SiriIntegrationGuide/SpecifyingCustomVocabulary.html#//apple_ref/doc/uid/TP40016875-CH6-SW1 "中描述的两种方式,然后按照所有步骤.
你有其他任何提示或解释吗?或者你能告诉我如何调试这个,因为我不知道发生了什么,如果我的AppIntentVocabulary.plist被考虑在内或不是例如.
在我的tvOS应用程序中,我有一个搜索页面,位于顶部a Search Bar
和a Table View
下面,最后列出了结果.
当我们关注searchBar
并且用户按下Siri的声音时,结果将被插入搜索栏(如预期的那样).然而,当用户向下滚动结果并且无法找到他们正在寻找的内容时,他们必须向上滚动(一直向上)到searchBar
再次使用Siri.
如果用户searchBar
在未关注时尝试使用Siri,则全球Siri开始在不同的应用程序中查找结果(这不是我想要的)
如何在搜索页面上将searchBar设置为Siri的全局焦点?
说实话,我不知道该如何去做..
在AppDelegate.swift中调用一个函数来创建Search View Controller并将其添加到Tab Bar Controller.
我已经考虑过尝试preferedFocusView,但在阅读完文档之后,我怀疑它会起作用.
func configueSearchController() -> UIViewController {
let storyboard = UIStoryboard(name: "Search", bundle: nil)
guard let searchResultsController = storyboard.instantiateViewController(withIdentifier: SearchViewController.storyboardIdentifier) as? SearchViewController else {
fatalError("Unable to instatiate a SearchResultViewController from the storyboard.")
}
/*
Create a UISearchController, passing the `searchResultsController` to
use to display search results.
*/
let searchController = UISearchController(searchResultsController: searchResultsController)
searchController.searchResultsUpdater = searchResultsController
searchController.searchBar.placeholder …
Run Code Online (Sandbox Code Playgroud) 我似乎无法在iOS中找到有关文本输入的语音到文本选项的任何文档.我知道你可以用一些AV手动手动完成它,但是当启用Siri时你得到的开箱即用的听写有一些怪癖.
试试这个.使用搜索栏打开您拥有的任何iOS应用.这将是我们的UITextField实验.更好的是,打开Mail.app.你不能卸载它,所以我知道你拥有它.
说"123榆树圣逗号法戈逗号ND"我得到的:123榆树圣逗号法戈逗号印第安"
非常接近我所说的.没什么大不了的.那是一个文本字段/搜索栏.让我们在UITextView中尝试这个.
打开一封新电子邮件,然后转到电子邮件正文.让我们说同样的话.
说"123 Elm St.逗号Fargo逗号ND"我得到的:123 Elm St.,Fargo,ND"
看起来更好!所以我想知道的是,为什么UITextView能够更好地识别标点符号和其他命令而不是文本字段.这不仅限于逗号,它贯穿整个范围.
有没有办法指定我想要的文字类型?有没有办法改变它,所以我在文本字段中得到这个标点符号?或者有人能指出我的一些文件说这就是为什么他们不同而且我完全搞砸了.无论哪种方式,一些答案都会有所帮助.提前致谢.
更新 我已经将UITextField子类化,并检查了可能随着听写回来的替代短语,但没有.只是原始转换是我得到的.
我的 Swift 应用程序可以检测到它是由 开启的Siri
吗?viewController
当(且仅当)我的应用程序被 Siri打开时,我想打开一个特定的页面。
我使用 Apple 的 Siri Shortcuts 编写程序,我正在寻找 API 或任何可用于识别在后台播放的歌曲的方法。
有没有什么软件可以做到这一点?如果没有,有没有办法编写一个识别歌曲的快捷方式?
谢谢!
我正在尝试将 Siri Shortcuts 集成到我的应用程序中。我正在尝试的概念是通过秘密密码确认获得我的卡的奖励积分。请在下面找到我为此所做的工作。
添加了名为 say Rewards 的新自定义意图。
定义了标题。启用确认的字幕和参数(accType,pin)。Pin 将单独发送给用户。
//
// RewardsIntentHandler.swift
// SiriIntentExt
//
import UIKit
import Intents
class RewardsIntentHandler: NSObject, RewardsIntentHandling {
func resolveAccType(for intent:RewardsIntent, with completion: @escaping ([INStringResolutionResult]) -> Void) {
guard let accType = intent.accType else {
completion([INStringResolutionResult.needsValue()])
return
}
completion([INStringResolutionResult.success(with: accType)])
}
func resolvePin(for intent:RewardsIntent, with completion: @escaping ([INIntegerResolutionResult]) -> Void) {
guard let verifyPin = intent.pin else {
completion([INIntegerResolutionResult.needsValue()]) …
Run Code Online (Sandbox Code Playgroud) 我正在使用测试应用程序和扩展程序来尝试 SiriKit 驱魔。我的分机根本没有被调用,我不知道为什么。我在另一个应用程序中有一个有效的 SiriKit 扩展,它莫名其妙地停止响应 - 因此这个测试应用程序。
这是我在测试应用程序中设置 SiriKit 所做的工作:
2) 在应用程序的 info.plist 中添加了 Siri 使用说明:
3)添加了一个新的 Intents 扩展测试目标,并将我想要的 Intent 添加到扩展 info.plist 中:
4) 连接 IntentHandler 类:
class IntentHandler: INExtension {
override func handler(for intent: INIntent) -> Any {
print("IntentHandler.handle")
switch intent {
case is INAddTasksIntent: return AddIntentHandler()
default: break
}
return self
}
}
Run Code Online (Sandbox Code Playgroud)
5)创建我的处理程序类:
class AddIntentHandler: NSObject, INAddTasksIntentHandling {
func handle(intent: INAddTasksIntent, completion: @escaping (INAddTasksIntentResponse) -> Void) {
print("AddIntentHandler.handle")
return completion(INAddTasksIntentResponse(code: .success, userActivity: nil)) …
Run Code Online (Sandbox Code Playgroud) 我在我的 iOS 应用程序中使用 Sirikit 实现了两个自定义意图。当我开发它们时,我的 iphone 中安装了 iOS 13.3,我的一个意图有一个 Siri Dialog 提示,要求输入一个参数的值。所有应用程序都被翻译成英语和西班牙语,并且自定义意图在两种语言中都能很好地工作。
当我将 iphone 更新到 iOS 13.4.1 时,我的自定义意图开始出现以下问题(根据安装/测试/设备,我看到了两个问题):
param
?”的自定义对话框一样。(或多或少)我觉得这个问题很奇怪也很烦人。我尝试为Intent.intentdefinition
: Intent.strings (Base)
、重新创建翻译文件Intent.strings (English)
,Intent.strings (Spanish)
我什至尝试重新创建整个自定义意图定义,但我仍然遇到问题。
我还尝试更改手机上的 iOS 语言和 Siri 语言、重新启动、重新安装应用程序、意图等...
这是我的 Sirikit 扩展的 Info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>InventorySearchIntent</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> …
Run Code Online (Sandbox Code Playgroud)