标签: sirishortcuts

Siri Shortcuts:如何通过我的应用检索捐赠的 INInteraction(s) 列表

有没有办法检索INInteraction我的应用程序捐赠的交互列表 ( )?

我想避免重复代码,让这个列表有所帮助。

swift sirishortcuts

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

如何正确实现siri快捷方式

我正在实施 Siri Shortcut。我的目标是将功能的快捷方式添加到“设置”应用上的 SIRI 快捷方式。

为此,我需要先注册 NSUserActivity,然后处理来自应用程序委托的快捷方式调用。

问题是我不确定在哪里以及如何从我观看的教程中正确注册活动。

我应该在哪里注册?

根据教程,我在视图控制器上添加了这段代码。

由于 self.userActivity 可从应用程序委托访问,我想知道是否可以在应用程序委托中添加以下代码。

func registerShortcut() {

        if #available(iOS 12.0, *) {
            let activity = NSUserActivity(activityType: "jp.co.mycompany.MyApp.openCamera")
            activity.title = "Camera Shortcut"
            activity.isEligibleForSearch = true
            activity.isEligibleForPrediction = true

            self.userActivity = activity
            self.userActivity?.becomeCurrent()
        } 
    }
Run Code Online (Sandbox Code Playgroud)

我应该注册多少次

在不控制调用注册码的次数的情况下,应用程序将在每次启动应用程序时调用注册码。多次调用注册会导致任何问题吗?

ios siri swift sirishortcuts

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

是否有类似 Shazam 的 API?

我使用 Apple 的 Siri Shortcuts 编写程序,我正在寻找 API 或任何可用于识别在后台播放的歌曲的方法。

有没有什么软件可以做到这一点?如果没有,有没有办法编写一个识别歌曲的快捷方式?

谢谢!

shazam ios siri sirishortcuts

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

Siri 快捷方式:如何要求解锁手机

Siri 意图:是否可以要求用户在执行之前解锁 iPhone?我不希望 Intent 导致相应的 iOS 应用程序启动。

如果我取消选中“支持后台执行”框(如下所示),Siri 会要求解锁设备,但它也会启动应用程序,但我不希望这样。

在此输入图像描述

ios siri intents-extension sirishortcuts

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

Siri 集成与自定义意图面临的问题

我正在尝试将 Siri Shortcuts 集成到我的应用程序中。我正在尝试的概念是通过秘密密码确认获得我的卡的奖励积分。请在下面找到我为此所做的工作。

  1. 在功能中启用 Siri 并添加了 Siri Intent 定义文件。
  2. 添加了名为 say Rewards 的新自定义意图。

  3. 定义了标题。启用确认的字幕和参数(accType,pin)。Pin 将单独发送给用户。

在此处输入图片说明

  1. 然后使用参数“rewardPoints”定义意图响应并定义响应消息。

在此处输入图片说明

  1. 添加了 Siri 意图扩展。
  2. 向项目和意图扩展中的 info.plist 文件添加了自定义意图。

在此处输入图片说明

在此处输入图片说明

  1. 验证并为自定义意图添加了新的处理程序,并定义如下的解析、处理和确认方法。现在,我将随机返回奖励积分。
//
//  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)

ios siri swift sirikit sirishortcuts

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

如何在Siri Intent Extension中使用NSUseractivity打开SwiftUI应用并执行功能?

我的问题

我的应用程序使用Intents Extensions创建了自己的快捷方式操作。他们完美地执行了后台操作。

对于某些操作,我试图使intent扩展在“快捷方式”中运行并执行功能时打开主(容器)应用程序。

我在使用NSUserActivity时遇到了麻烦,我不确定这是一个SwiftUI项目,还是我实现它的方式(或两者兼而有之)。

我尝试过的

我已经在我的info.plist(“ com.me.project.activityName”)中将NSUserActivity名称注册为NSUserActivityType。

我已将以下代码添加到我的AppDelegate中。

我在意图扩展内初始化了一个新的NSUserActivity,其类型与在info.plist中声明的类型相同。

我也尝试过在应用程序中声明活动(我认为我不需要这样做吗?)

我正在运行:iOS(iPhone XS,Beta 6)macOS 10.15 Catalina(Beta 5)Xcode 11.0(Beta 5)

到目前为止我的代码

我的AppDelegate中有这个:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {

          if userActivity.activityType == "com.me.project.activityName" {
              if let url = URL(string: "https://www.google.com") {
                  UIApplication.shared.open(url)
              }
              return true
          }
          return false
      }
Run Code Online (Sandbox Code Playgroud)

这是我的意图扩展内:

let openApp = intent.launchApp?.boolValue ?? false
        if openApp {

            let UA = NSUserActivity(activityType: "com.me.project.activityName")
            UA.title = "Dummy title"

            completion(UserActivityTestIntentResponse(code: .continueInApp, userActivity: UA))

        } …
Run Code Online (Sandbox Code Playgroud)

ios siri swift sirishortcuts swiftui

5
推荐指数
2
解决办法
517
查看次数

可以为 INIntent 属性赋予值“每次询问”吗?

假设我已经FooIntent.intentdefinition文件中定义了一个名为 的自定义意图。

它有一个bar类型Decimal为的单个参数,其中:
-User can supply value in Siri and Shortcuts app是活动的。
-Default Value0

其自动生成的类定义现在如下所示:

public class FooIntent: INIntent {
    @NSManaged public var bar: NSNumber?
}
Run Code Online (Sandbox Code Playgroud)

如果我构造 a FooIntent,设置barnil,并将其传递给 a INUIAddVoiceShortcutViewController

let intent = FooIntent()
intent.bar = nil
intent.suggestedInvocationPhrase = "Do foo"

let shortcut = INShortcut(intent: intent)

let viewController = INUIAddVoiceShortcutViewController(shortcut: shortcut!)
viewController.delegate = self
window?.rootViewController?.present(viewController, animated: true, completion: nil) …
Run Code Online (Sandbox Code Playgroud)

ios swift sirishortcuts

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

如何在 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
查看次数

应用程序意图定义已更改,但未同步到快捷方式应用程序

我正在更改应用程序意图定义,但当我尝试将更改后的意图用作快捷方式中的操作时,这些更改不会反映在快捷方式应用程序中。

尝试运行快捷方式会出现异常:

[执行] Perform() 返回未在方法签名中声明的类型

AppIntents/PerformActionExecutorTask.swift:78:致命错误:perform() 返回的类型未在方法签名中声明

有没有办法强制重新加载快捷方式应用程序以获得新意图,或者我是否缺少一些更基本的东西?

sirishortcuts appintents

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