标签: sirikit

从SiriKit的INExtension启动应用程序

我想用SiriKit开始锻炼.开始锻炼需要从app扩展程序打开主应用程序.

Apple为INStartWorkoutIntentHandling处理程序提供的样板是

func handle(startWorkout startWorkoutIntent: INStartWorkoutIntent, completion: (INStartWorkoutIntentResponse) -> Void) {
    let userActivity = NSUserActivity(activityType: NSStringFromClass(INStartWorkoutIntent))
    let response = INStartWorkoutIntentResponse(code: .success, userActivity: userActivity)
    completion(response)
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能从这里打开自己的应用程序?像myapp://workout?action=start&name=pushups 这样的回答似乎没有相关性,因为我没有这个扩展类型UIViewControllerextensionContext属性.

最后一个相关位:对于其他操作(暂停,结束)我宁愿不打开主应用程序,而只是暂停在主应用程序中运行的锻炼.我可以使用类似的自定义URL来暂停它,但这会打开应用程序,这是一个额外的不必要的步骤.有什么好方法告诉主应用程序在不打开应用程序的情况下从INExtension中采取特定操作?

ios siri ios-app-extension ios10 sirikit

5
推荐指数
1
解决办法
2246
查看次数

如何在 INSendPaymentIntent (SiriKit) 中搜索特定联系人?

摘要
尝试编写代码,INSendPaymentIntent但无法区分具有相似名字的联系人。Siri 似乎在之后就开始循环INPersonResolutionResult.disambiguation(with: matchedContacts)

代码背后的想法
我最初选择使用联系人的名字来搜索联系人,因为INPerson如果用户仅指定名字,则使用显示名称会返回与查询匹配的第一个联系人。(即“向凯文支付 50 美元”将自动选择凯文·培根而不是凯文·史派西)

不幸的是,使用给定的名字会使 Siri 陷入循环,要求用户一遍又一遍地指定联系人......

问题
有没有办法使用联系人的名字搜索联系人而不会让 Siri 陷入循环?

代码

func resolvePayee(forSendPayment intent: INSendPaymentIntent, with completion: (INPersonResolutionResult) -> Void) {
    if let payee = intent.payee {
        var resolutionResult: INPersonResolutionResult?
        var matchedContacts: [INPerson] = []
        let predicate = CNContact.predicateForContacts(matchingName: (payee.nameComponents?.givenName)!)

        do {
            let searchContactsResult = try CNContactStore().unifiedContacts(matching: predicate, keysToFetch:[CNContactGivenNameKey, CNContactFamilyNameKey, CNContactMiddleNameKey, CNContactPhoneNumbersKey, CNContactImageDataKey, CNContactIdentifierKey])
            for contact in searchContactsResult {
                matchedContacts.append(createContact((contact.phoneNumbers.first?.value.stringValue)!, contact: contact))
            }
        } catch {
            completion(INPersonResolutionResult.unsupported())
        } …
Run Code Online (Sandbox Code Playgroud)

swift ios10 sirikit

5
推荐指数
1
解决办法
1025
查看次数

Siri Intent示例短语

当我使用新的Siri Intents将我的应用程序上传到iTunes Connect时,我收到一条消息:

Invalid Siri Support - No example phrase was provided for INSetMessageAttributeIntent in the "en" language

Invalid Siri Support - No example phrase was provided for INSendMessageIntent in the "en" language
Run Code Online (Sandbox Code Playgroud)

AppIntentVocabulary.plist在主应用程序中创建了一个并对其进行了本地化,但每次上传时都会收到此问题.

文件是在错误的位置还是我将这些示例短语放在错误的位置?

谢谢

xcode ios siri swift sirikit

5
推荐指数
0
解决办法
990
查看次数

Sirikit'使用我的应用程序发送消息'只工作了几次

我正在开发一个允许Siri发送消息的应用程序.几天前,一切都运行良好,每当我说'发送消息使用'MyApp名称''它显示SiriUI,它正在正确处理命令.

但是几天后我得到了不同的行为!有时Siri打开我的应用程序,有时会说:"这是我在网上找到的'使用'myapp name'发送消息':",有时"我不明白"使用'myapp'发送消息,有时我得到我过去常常得到的正确行为.

当然,我的应用程序在设置> Siri> App支持中启用

这是一个非常奇怪的行为.我很抱歉,对不起.我可以说这个问题用我用来调试的两个不同的手机进行验证,我试图在线下载一个示例项目(在github上),我遇到了同样的问题.我一直在使用我的专业资料,特别是"Xcode自动管理签名"已启用

有谁知道如何解决这个问题?

谢谢!

messages siri sirikit

5
推荐指数
1
解决办法
365
查看次数

如何让 Siri 在我的应用程序中执行特定操作?

我想将 Siri 集成到我的应用程序中并使其执行特定操作,即:

1-打开特定视图

2-发送反馈

我搜索了这个功能,但没有找到有用的答案。

有人试过像这样使用 Siri 吗?

谢谢。

iphone swift ios10 sirikit

5
推荐指数
1
解决办法
1294
查看次数

在 Sirikit 意图处理程序和应用程序之间传递数据

ios 不允许包含的应用程序和包含的扩展共享一个公共容器,因此 UserDefaults 是建议的解决方案。

我尝试将 UserDefaults 与 sirikit 意图处理程序一起使用,假设处理程序的行为如下:

在 IntentHandler.swift 内部

let shared = UserDefaults(suiteName:XXXXXXXX.group...)
shared?.set("saved value 1", forKey: "key1")
shared?.set("saved value 2", forKey: "key2")
shared?.set("saved value 3", forKey: "key3")
Run Code Online (Sandbox Code Playgroud)

viewDidLoad 中的 ViewController.swift 内部

let shared = UserDefaults(suiteName:XXXXXXXX.group...)
if let temp1 = shared?.string(forKey:"key1")
{
contentLabel.text = temp1
}
if let value = shared?.string(forKey: "key2")
{
valueLabel.text = value
} 
if let key = shared?.string(forKey: "key3")
{
keyLabel.text = key
}
Run Code Online (Sandbox Code Playgroud)

我可以在 ipad 屏幕上看到与 key1 和 key2 相对应的字符串,但看不到与 key3 相对应的字符串,在代码中添加同步并没有帮助。 …

ios siri swift sirikit

5
推荐指数
1
解决办法
2742
查看次数

Telegram Sirikit 无法与机器人通话

我正在使用 Siri 与电报的集成。我可以要求 Siri 使用电报向任何人发送消息,它会这样做。但是,如果我要求它使用 botname 向机器人发送消息,它会不断询问向谁发送消息,并且不选择向谁发送消息的机器人名称。

工作:“电报人名嗨”

不工作:“Telegram botname Hi”

这是否会发生,任何想法如何让它发挥作用。

bots siri telegram telegram-bot sirikit

5
推荐指数
0
解决办法
302
查看次数

SiriKit INPayBillIntentHandling - Siri 说,“我希望我可以,但 <App> 还没有为我设置。”

我正在使用意图集成Sirikit,账单支付:

INPayBillIntentHandling(最近在iOS 10.3+ 中发布,2017 年 3 月 27 日)。

苹果文档在这里

注意:我使用的是 Obj-C 语言、XCode 8.3、设备 iPhone 6S 和 iOS 10.3 和演示项目 iOS 部署目标是 iOS 10.3 并且在第一次询问权限时还启用了 Siri 并验证了在设置中,Siri已启用。

当我在设备上启动应用程序并说“使用 DemoApp 支付账单”时,Siri 说“我希望我可以,但 DemoApp 还没有为我设置”

请帮我。提前致谢!

到目前为止,我做了以下步骤:

1) 创建一个 Demo Xcode 项目

2) 在主应用程序功能中,启用 Siri。

3) 添加 Sirikit 扩展使用

文件 -> 新建 -> 添加目标 -> 意图扩展 -> 下一步 -> 添加产品名称并说完成

注意:我已禁用 Sirikit UI 扩展。

4) 在 Main AppDelegate 添加以下内容:

#import <Intents/Intents.h>
    [INPreferences requestSiriAuthorization:^(INSiriAuthorizationStatus status) …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c ios sirikit ios10.3

5
推荐指数
1
解决办法
1481
查看次数

如何在 SwiftUI 上处理带有参数的意图?

我正在尝试使用 SwiftUI 和 Siri 在 iOS 上实现语音交互。我只是想找到使用单个字符串参数的快捷方式。我对这个框架非常陌生,并且一直被困住。以下是我尝试过的:

  • 开始 Scrumdinger 项目(来自 Apple SwiftUI 教程,我在 GitHub 存储库中找到了该教程。在任何 Siri 更新之前,我停在提交90731处)
  • 基于 NSUserActivity 创建了一个添加 Siri 快捷方式的按钮来创建新的 scrum,但没有任何参数;这有效(d64133
  • 后来我尝试了很多方法都没有效果:
    • 创建了一个意图扩展目标并与群组共享
    • 创建带有参数的意图,将其命名为“ScrumIntent”
    • 为意图创建了快捷方式
    • 请求 Siri 授权

目前,我的设置具有上述所有内容,我可以创建快捷方式,该快捷方式显示在快捷方式应用程序上。然而,它被卡住了,我什至不知道如何调试它。如果我尝试语音,Siri 会抱怨出了问题。如果我尝试单击快捷方式,它也会被卡住。下面你可以看到它是如何被卡住的图像,停止按钮几乎完成了。

在此输入图像描述

我试图在处理回调时简单地在用户默认值中设置一个字符串。无需对处理程序进行特殊检查。

关于实施的一些要点:

  • 处理程序仅位于扩展目标中,但我不确定这是否正确。在 SwiftUI 中,我们可以使用 NSUserActivities 修饰符onContinueUserActivity,但我找不到类似的意图(我知道我们需要参数意图)。
  • “添加 Siri 快捷方式”按钮仅定义 Intent 并设置suggestedInvocationPhrase

我应该在这里分享任何其他细节或重要的代码吗?我不确定,所以我现在只是分享了 github 链接。

ios siri sirikit sirishortcuts swiftui

5
推荐指数
0
解决办法
652
查看次数

SiriKit:IntentsDefinition 文件中定义的快捷方式未显示在 macOS 上的快捷方式应用程序中?

我无法将一些基本的 SiriKit 操作添加到 macOS Monterey 中的 macOS 应用程序中。为了测试这一点,我创建了一个新项目,使其成为带有 Storyboard 的 macOS 应用程序。然后我添加了一个意图定义文件,并添加了一个基本意图,没有输入/输出。我将意图名称添加到目标“常规”配置中的“支持的意图”中。

当我构建并运行应用程序时,快捷方式不会显示在 Apple Shortcuts 应用程序中。我尝试在“签名和功能”中查找“Siri”功能,但它没有列出(与新的 iOS 应用程序相比)。

我不确定我在这里缺少什么。希望得到一些帮助。

顺便说一句,我在 macOS Monterey RC 上使用 Xcode 13.1。

这就是我的自定义意图的样子。

在此输入图像描述

sirikit intents-extension sirishortcuts macos-monterey

5
推荐指数
1
解决办法
624
查看次数