如何正确实现 siri 快捷方式

How to properly implement siri shortcut

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

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

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

我应该在哪里注册?

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

因为 self.userActivity 可以从 app delegete 访问我想知道我是否可以在 app delegate 上添加下面的代码。

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()
        } 
    }

我应该注册多少次

不控制调用注册码的次数,app会调用注册码 每次启动应用程序。多次调用注册有问题吗?

有很多方法可以在您的应用中实现快捷方式和 Siri 建议,只要它们遵循 Human interface Guidelines set by apple.,您就不必担心实现。我相信您想注册一个对 Siri Shortcuts 的行动捐赠。

深入研究 Apple's Example Code 以编写 Siri 快捷方式。我相信这是关于此事的最佳资源。此代码非常详细且有据可查。

"How many times should I register?"

"Where should I register?"

您应该在用户每次执行以下操作时注册您的捐赠:

Donating the intent each time the user performs an action helps Siri learn about the user’s behavior, which helps Siri better predicate when the user may want to perform that action again.

因此,在您的情况下,我不会在 AppDelegate 中注册捐赠,而是在按下按钮或用户执行其他操作(例如打开相机)时注册。大多数情况下,我看到开发人员的组操作放在一个文件中以更好地管理它们。然后在用户激活它们各自的操作时调用它们。