我创建了一个自定义Siri意图.它在"快捷方式"应用程序中可见.但是,它允许我仅从捐赠的快捷方式中选择,而无需指定自己的参数.
是否可以使用"快捷方式"应用程序创建支持提供参数的Siri Intent?
我的意图配置
结果如何:
我想要实现的目标
请注意,如何预先填写字段(例如Item字段).我想有相同的选择phoneNumber.
我有一个应用程序,允许用户为其创建快捷方式。它在我的 iPhone 和 Apple Watch 上运行良好,直到我将设备升级到 iOS 15 和 WatchOS 8.0
\n即使我说“允许”,它每次仍然询问我“允许 *** 与(空)共享数据”
\n我用谷歌搜索,但只找到一篇有类似问题的帖子\n https://forums.macrumors.com/threads/shortcuts-to-web-open-in-chrome-bug.2312693/
\n我自己做了测试,并在我的 iPhone 上创建了一个新的 Twitter \xe2\x80\x9c发生了什么\xe2\x80\x9d 快捷方式,它总是问我 \xe2\x80\x9cAll 查看\xe2\x80\x99s 发生了什么\xe2\ x80\x9d 与 (null)\xe2\x80\x9d 共享数据,就像 Apple Watch (WatchOS 8 ) 上的手表应用程序发生的情况一样\n我也在 Apple Watch 上使用了相同的 Twitter 快捷方式,并且第一次询问同样的问题,然后它显示 \xe2\x80\x9cCan\xe2\x80\x99t 第二次将数据发送到 (null)\xe2\x80\x9d 。
\n我猜这是一个新的系统错误,但我不确定。\n有人知道如何解决它吗?谢谢你!
\n\n\n您知道如何创建用于设置ios 12蓝牙设备的操作吗?
我看到很容易打开/关闭蓝牙,但是在我的设备中设置/切换扬声器蓝牙会很棒。也许有一种方法可以设置系统值。
我用如下参数创建了一个自定义Intent:
我捐了它:
let intent = PlayIntent()
intent.color = color
let interaction = INInteraction(intent: intent, response: nil)
interaction.donate()
Run Code Online (Sandbox Code Playgroud)
它显示正确:
但是,我想要一个接受用户输入的Intent.示例,Messages.app:
如何配置我的自定义Intent来处理输入?
我的应用程序中有2个siri快捷方式.我使用NSUserActivity来捐赠这些快捷方式.我还在info.plist中创建了2个NSUserActivityTypes.
有2个视图控制器可以处理这些快捷方式(1个快捷方式的视图控制器).
如果我从1个视图控制器添加1个siri快捷方式,然后转到第2个视图控制器,第2个视图控制器上的原生siri快捷按钮(INUIAddVoiceShortcutButton)会自动选择第一个快捷方式(从第1个视图控制器创建)并显示"添加到Siri"并显示建议的短语而不是显示"添加到Siri"按钮.我仔细检查每个NSUserActivity都有不同的标识符,但仍然以某种方式选择了错误的快捷方式.
查看控制器1:
let userActivity = NSUserActivity(activityType: "com.activity.type1")
userActivity.isEligibleForSearch = true
userActivity.isEligibleForPrediction = true
userActivity.title = shortcut.title
userActivity.suggestedInvocationPhrase = suggestedPhrase
let attributes = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
attributes.contentDescription = description
userActivity.contentAttributeSet = attributes
let shortcut = INShortcut(userActivity: userActivity)
let siriButton = INUIAddVoiceShortcutButton(style: .whiteOutline)
siriButton.translatesAutoresizingMaskIntoConstraints = false
siriButton.shortcut = shortcut
self.view.addSubview(siriButton)
Run Code Online (Sandbox Code Playgroud)
查看控制器2:
let userActivity2 = NSUserActivity(activityType: "com.activity.type2")
userActivity2.isEligibleForSearch = true
userActivity2.isEligibleForPrediction = true
userActivity2.title = shortcut.title
userActivity2.suggestedInvocationPhrase = suggestedPhrase
let attributes = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String) …Run Code Online (Sandbox Code Playgroud) 这个问题与新的iOS 12功能有关:Siri Shortcuts.用户可以使用Siri快捷方式通过自定义语音短语或新的iOS 12"快捷方式"应用程序触发应用程序特定功能(由开发人员创建).快捷方式应用程序允许您通过组合应用程序的快捷方式来创建工作流程,类似于Mac上的Automator应用程序.
在我们的应用程序中,我们实现了特定功能的快捷方式 这意味着用户可以通过语音或快捷方式应用程序触发此快捷方式来执行此功能.我们的快捷方式在iOS的快捷方式应用程序中通过向Siri捐赠我们的意图来"自动".
问题是,如何自定义此快捷方式?默认情况下,我们的快捷方式如下所示:
如您所见,快捷方式仅显示标签传输"X"到"X",并且不允许您配置此快捷方式.当我将我的快捷方式与其他应用程序的其他快捷方式进行比较时,我发现这些快捷方式是可配置的,就像来自应用程序"Giphy"的快捷方式:
此快捷方式允许您配置"搜索","显示GIF选择器"和"选择多个".还要注意屏幕底部的变量,例如Ask When Run变量.
我找不到有关如何配置快捷方式的任何文档.在Apple(SoupChef)的示例代码中,它们也不提供可配置的快捷方式.
我不确定我做错了什么。但是在这个方法中
INVoiceShortcutCenter.shared.getAllVoiceShortcuts { (vShortCuts, error) in
print(vShortCuts)
}
Run Code Online (Sandbox Code Playgroud)
vShortCuts 是一个空数组。
var suggestions = [INShortcut]()
let userActivity = NSUserActivity.init(activityType: "com.riyaz.testactivity")
userActivity.title = "test activity"
let shortCut = INShortcut.init(userActivity: userActivity)
suggestions.append(shortCut)
INVoiceShortcutCenter.shared.setShortcutSuggestions(suggestions)
Run Code Online (Sandbox Code Playgroud)
我捐赠了一个建议打开“快捷方式应用程序”。导航到图库并通过文本向 Siri 添加建议。
但是,相同的文本不会触发 appdelegate's willContinueUserActivity
并且还INVoiceShortcutCenter.shared.getAllVoiceShortcuts返回一个空数组。
任何帮助appriciated。
在我的应用程序中,我创建了一个SiriKit意图,该意图使用户可以搜索人。
如果他们直接从Siri触发了此意图,那么我想使用该搜索字符串打开我的应用程序并显示结果-我可以通过将.continueInApp和传递NSUserActivity给完成处理程序来实现。
但是,如果意图是Shortcuts应用程序流的一部分,那么我想将结果作为意图处理程序的输出传递-再次,我可以通过返回结果数组并返回.success到完成处理程序来做到这一点。
我的问题是我的处理程序如何确定运行它的上下文,以便它可以启动我的应用程序或在适当的情况下直接返回结果?
我有一个Intent Extension与View该工作相当不错的用于显示应用程序的信息类别。
现在TouchID出于安全原因需要启用,因此用户需要在请求信息之前进行身份验证。
我尝试了这个:
func handle(intent: GetSaldoIntent, completion: @escaping (GetSaldoIntentResponse) -> Void) {
let myContext = LAContext()
myContext.evaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
localizedReason: "Unlock to see the info",
reply: { [unowned self] (success, error) -> Void in
if( success ) {
completion(GetSaldoIntentResponse.success(saldo: String(self.paymentProvider.balance)))
return
}
})
completion(GetSaldoIntentResponse(code: .failureRequiringAppLaunch, userActivity: nil))
}
}
Run Code Online (Sandbox Code Playgroud)
但是TouchID对话框关闭Siri屏幕,然后对话结束:
有没有一种方法可以请求TouchId内部验证Intent Extension?
我知道可以PKPayment做类似的事情,但这不是交易,所以我不能使用ApplePay。
显示 的实例时INUIAddVoiceShortcutViewController,我想让快捷方式的意图参数之一(类型Decimal)默认为Ask Each Time。
现在,它默认为文件中的Default Value值.intentdefinition。(0如果留空,此字段将重置为。)
有没有办法定义一个意图,这样当它在快捷方式中实例化时,它有一个默认为的参数Ask Each Time?