使用Swift在数分钟内将Siri支持添加到您的iOS应用

启用S​​iri后,转到“ 常规”选项卡,然后向下滚动到“ 链接的框架和库”。 单击+图标,然后添加Intents.frameworksIntentsUI.framework

将框架添加到您的项目后,在项目中打开Info.plist文件。 您将需要在NSUserActivityTypes字典下添加希望Siri执行的所有操作。

在这种情况下,我在NSUserActivityTypes词典下添加了ShowNotifications并将值设置为[ my-app-bundle-id] .actionname。

现在,打开将要发生Siri操作的主视图控制器或视图控制器。 导入IntentsUI框架。

  导入 IntentsUI 

在视图控制器类中,添加一个名为setupIntentsForSiri的函数 创建一个NSUserActivity并将其分配给视图的userActivity。

配置NSUserActivity的过程非常简单。 设置标题,在userInfo中为用户添加语音建议,最后使用beginCurrent激活操作。 Siri快捷方式功能仅在iOS 12.0更高版本上可用,因此如果您的项目目标版本低于12.0,则需要添加#available

现在,打开您的AppDelegate.swift文件,并添加此函数以在Siri打开应用程序后触发操作。

在确保接收到的userActivity是我们想要的userActivity之后,我触发了NotificationCenter发布一个Notification,因此我可以让所有视图控制器知道此操作已发生,并进行相应的更改。 您可以使用这种方法,也可以只使用AppDelegate中的窗口来获取rootViewController。

我需要在我的视图控制器中添加一个Notification侦听器,以接收此通知并执行一些操作。

我们还需要定义displayNotification函数,并且在函数内部,我们可以执行想要执行的操作。 任何你想要的; 显示视图控制器或重新加载数据等。我将不涉及该部分,因为这取决于您要实现的内容。

我们要添加的最后一件事是快捷方式视图控制器,用户可以记录他们的声音并添加实际的Siri快捷方式。 为此,我们需要为INUIAddVoiceShortcutViewController提供我们先前创建的userActivity。

您需要在viewDidLoad中调用displaySiriShortcutPopup函数进行测试。 但是,Apple要求开发人员仅在用户已经在应用程序中手动执行了操作的情况下才要求用户添加Siri快捷方式。

示例:如果用户能够在应用程序中订购汤,则在订购汤后需要显示Siri快捷方式弹出窗口。

现在,通过像疯狂的人一样向您的电话讲话来测试它🙂’嘿Siri”Siri ?!’