- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在集成 Sirikit,Bill Payment,目的是:
INPayBillIntentHandling(最近在 iOS 10.3+ 中发布,2017 年 3 月 27 日)。
Apple 文档是 here .
注意:我使用的是 Swift 语言、XCode 8.3、iOS 10.3.3 的设备 iPhone 6 和演示项目 iOS 部署目标是 iOS 10.3,并且在第一次询问权限时也启用了 Siri,并且还验证了 In设置,Siri 已启用。当我在设备上启动该应用程序并说“使用 DemoApp 支付账单”时,Siri 会说“您可以在 DemoApp 上获取此信息,您想转到 DemoApp 吗?”
请帮帮我。提前致谢!
到目前为止,我做了以下步骤:
1) 创建一个 Demo Xcode 工程
2) 在 Main App Capabilities 中,启用 Siri。
3) 使用添加的 Sirikit 扩展
文件 -> 新建 -> 添加目标 -> 意图扩展 -> 下一步 -> 添加产品名称并说完成
注意:我已经禁用了 Sirikit UI 扩展。4) 在 Main AppDelegate.swift 添加了以下内容:
import Intents
INPreferences.requestSiriAuthorization { (status) in
if status == INSiriAuthorizationStatus.authorized{
print("Authorized")
}else
{
print("Not authorized")
}
}
return true
5) 在 Main app Info.plist 中,添加带有使用说明的键 NSSiriUsageDescription
6) IntentExtension, Info.plist, NSExtension->IntentsSupported->added key INPayBillIntent
7) 在 IntentHandler.swift 中,添加:
override func handler(for intent: INIntent) -> Any {
if intent is INPayBillIntent{
print("Response: payBill")
return PayBillHandler()
}
8) 在 PayBillHandler.swift 中添加了 INPayBillIntentHandling 的所有委托(delegate)方法:
import Intents
class PayBillHandler: NSObject, INPayBillIntentHandling {
func handle(intent: INPayBillIntent, completion: @escaping (INPayBillIntentResponse) -> Void){
let userActivity = NSUserActivity(activityType: NSStringFromClass(INPayBillIntent.self))
let response = INPayBillIntentResponse(code: .ready, userActivity: userActivity)
completion(response)
}
func resolveBillType(for intent: INPayBillIntent, with completion: @escaping (INBillTypeResolutionResult) -> Void) {
let finalResult = INBillTypeResolutionResult.success(with: .water)
completion(finalResult)
}
func resolveBillPayee(for intent: INPayBillIntent, with completion: @escaping (INBillPayeeResolutionResult) -> Void) {
let speakableStr = INSpeakableString(identifier: "XXX", spokenPhrase: "XXX", pronunciationHint: "XXX")
let speakableStr1 = INSpeakableString(identifier: "YYY", spokenPhrase: "YYY", pronunciationHint: "YYY")
let billPayee = INBillPayee(nickname: speakableStr, number: "10112122112", organizationName: speakableStr1)
let finalResult = INBillPayeeResolutionResult.success(with: billPayee!)
completion(finalResult)
}
func resolveTransactionNote(for intent: INPayBillIntent, with completion: @escaping (INStringResolutionResult) -> Void) {
let finalResult = INStringResolutionResult.success(with: "Bill Payment")
completion(finalResult)
}
func resolveDueDate(for intent: INPayBillIntent, with completion: @escaping (INDateComponentsRangeResolutionResult) -> Void) {
completion(INDateComponentsRangeResolutionResult.notRequired())
}
func resolveFromAccount(for intent: INPayBillIntent, with completion: @escaping (INPaymentAccountResolutionResult) -> Void) {
let speakableStr2 = INSpeakableString(identifier: "Someone", spokenPhrase: "Someone", pronunciationHint: "Someone")
let speakableStr3 = INSpeakableString(identifier: "", spokenPhrase: "", pronunciationHint: "organisation")
let fromAccount = INPaymentAccount(nickname: speakableStr2, number: "10112122112", accountType: .credit, organizationName: speakableStr3)
let finalResult = INPaymentAccountResolutionResult.success(with: fromAccount!)
completion(finalResult)
}
func resolveTransactionAmount(for intent: INPayBillIntent, with completion: @escaping (INPaymentAmountResolutionResult) -> Void) {
let currencyAmmount = INCurrencyAmount(amount: NSDecimalNumber(string: "100"), currencyCode: "USD")
let transactionAmt = INPaymentAmount(amountType: .amountDue, amount: currencyAmmount)
let finalResult = INPaymentAmountResolutionResult.success(with: transactionAmt)
completion(finalResult)
}
func resolveTransactionScheduledDate(for intent: INPayBillIntent, with completion: @escaping (INDateComponentsRangeResolutionResult) -> Void) {
completion(INDateComponentsRangeResolutionResult.notRequired())
}
func confirm(intent: INPayBillIntent, completion: @escaping (INPayBillIntentResponse) -> Void) {
let response = INPayBillIntentResponse(code: .success, userActivity: nil)
completion(response)
}
}
顺便说一下,这和Joao Nunes's question是同一个问题, 只是为了 swift 修改了它,问题还在等待答案,谢谢 :)
最佳答案
我不确定您是否已经找到解决方案。对我有用的是看到 SiriExtension 的部署目标是 10.3+ 以及主项目 10.3+ 中的部署目标。还将触发短语更改为“使用 demoapp 支付账单”。
Apple 开发者论坛链接: https://forums.developer.apple.com/thread/71488
关于ios - Siri - Lang Swift 3,INPayBillIntent 不工作,Siri 说 "You will have to continue in DemoApp, Would you like to open it?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45541947/
我已经为应用程序实现了 Siri 快捷方式。一切正常,除了一件事: 当执行 INPreferences.requestSiriAuthorization 请求使用 Siri 的授权时,用户可以允许或拒
我知道有 no API for Siri .看起来也没有迹象表明它会很快发生变化。 但我迫不及待地想利用它出色的自由语音识别功能,所以我在想也许仍在使用它但作为一个“黑匣子”? 例如,this app
这个问题在这里已经有了答案: Does Apple provide an API for SIRI? (4 个回答) 5年前关闭。 我可以像使用 iOS 应用程序一样使用 Siri 功能对 macOS
我需要集成 Siri 才能使用我的应用调用电话。 Siri 在设置的应用程序支持上识别我的应用程序。但是当我试图调用某个联系人说“在 MyApp 上调用 ContactName”时,它只显示按钮“打开
我已经通过 react-native-siri-shortcut npm 在 React Native 项目中成功实现了快捷方式。 我可以在快捷方式应用程序(iOS 中)中看到所有这些快捷方式。 当我
我在 iOS 应用程序上有一个可用的 Siri 支付扩展程序。但是当我问 Siri“你能做什么?”它没有列出我的应用程序。 Siri 确实列出了现金和 Venmo 支付应用程序(我同事手机上的 Ven
我想知道是否可以在移动设备上使用 JS 验证一些 Siri 驱动(或 Android 语音识别软件)的输入。 我有一个“input type=text”对象,但我只需要启用数字(数字)。我正在使用 k
AppleTV 似乎存在错误。我有一个包含所有游戏节点(和 Action )的 SKNode“worldNode”的 SpriteKit 场景。我能够检测到何时按下 Siri Remote 上的菜单按
我正在集成 Sirikit,Bill Payment,目的是: INPayBillIntentHandling(最近在 iOS 10.3+ 中发布,2017 年 3 月 27 日)。 Apple 文档
我想通过终端命令来使用 siri。是否可以?示例: $ siri "Sleep my mac" 最佳答案 您可以使用 siri 在“设置”>“辅助功能”>“语音”中设置萨曼莎的声音 打开终端并输入 $
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
'com.apple.coreaudio.avfaudio', reason: 'required condition is false: _recordingTap == nil 代码崩溃 1.
我的应用程序有一个自定义意图,它向用户建议一个快捷方式,如下所示: let intent = ReadIntent() if let shortcut = INShortcut(int
这个问题在这里已经有了答案: 已关闭10 年前。
有没有一种方法或工具可以检查 Apple 的 Siri 如何解释/读取语音字段的值?我已经能够在终端 (Mac OSX) 中通过 say something 帮助自己一点点,但我对任何其他替代方案感到
我知道这是一个长期的尝试,但是有什么方法可以将数据推送到 iOS 上的 Siri。 我的意思是,我有一个程序,其中包含一些数据,例如我的购物 list 或其他数据。现在我想问 Siri 我需要买什么,
有没有办法从网页(可能使用 Javascript)触发 Siri 来填充输入文本字段? 最佳答案 您可能无法直接触发 Siri,但您可以使用 x-webkit-speech将添加使用语音输入功能的 h
我正在尝试将 Siri 快捷方式集成到我的应用程序中。我正在尝试的概念是通过密码确认获得我的卡的奖励积分。请在下面找到我为此所做的工作。 在功能中启用 Siri 并添加 Siri Intent 定义文
我已启动并运行快捷方式,并且已将自定义响应添加到我的完成处理程序中。在这种情况下... completion ([TriggerSceneIntentResponse successIntentR
在 Apple TV 上的 Siri Remote 上收集触摸时,触摸的位置始终报告为同一位置? let tapRecognizer = UITapGestureRecognizer(target:
我是一名优秀的程序员,十分优秀!