【发布时间】:2018-04-02 18:35:30
【问题描述】:
我正在探索 SiriKit,我想用它来向网络服务器发送数据。基本上,每当用户说“嘿 Siri,使用 SomeApplication 发送数据”时,我想发送一些数据。这里的“SomeApplication”是我的应用程序的名称。我用谷歌搜索了一下,但我知道我只能使用 SiriKit 给出的意图,我不能创建自己的意图。如果有办法做到这一点,请帮助我。
【问题讨论】:
我正在探索 SiriKit,我想用它来向网络服务器发送数据。基本上,每当用户说“嘿 Siri,使用 SomeApplication 发送数据”时,我想发送一些数据。这里的“SomeApplication”是我的应用程序的名称。我用谷歌搜索了一下,但我知道我只能使用 SiriKit 给出的意图,我不能创建自己的意图。如果有办法做到这一点,请帮助我。
【问题讨论】:
确实,您无法创建自己的意图,但您可以玩一个技巧。您可以使用消息传递意图,而不是发送短信,您可以从那里拨打服务电话。 在 IntentHandler.swift 文件中,修改 resolveRecipients 方法的代码以创建自定义联系人。这将导致显示消息 UI,但会跳过询问收件人的步骤。相反,Siri 会直接询问您将在 resolveContent 方法中收到的消息。从那里获取它并调用您的网络服务。就如此容易。
这是代码
func resolveRecipients(for intent: INSendMessageIntent, with completion: @escaping ([INPersonResolutionResult]) -> Void) {
let resolutionResults = [INPersonResolutionResult.success(with: INPerson.init(personHandle: INPersonHandle.init(value: "Raw", type: .unknown), nameComponents: PersonNameComponents.init(), displayName: "Raw", image: INImage.init(), contactIdentifier: "Raw", customIdentifier: "Raw"))]
completion(resolutionResults)
}
详细例子可以查看Git Repo for SiriKitDemo
【讨论】: