如何将 Siri 与 flutter 应用集成?

Jos*_*hua 2 ios siri flutter

我想将 Siri 集成到我的 iOS 版 flutter 应用程序中。当用户提出特定问题时,Siri 必须从应用程序获取输出并执行应用程序中的函数。我怎样才能实现这个目标?任何帮助将不胜感激。

小智 5

为了实现这一目标,您将需要以下内容:

  1. 在 XCode 中创建您的意图定义文件
  2. 将 Intents 扩展目标添加到您的 Xcode 项目
  3. 配置 Flutter 扩展主页小部件 https://pub.dev/packages/home_widget
  4. 将应用程序组功能添加到您的 Runner 目标和 Intents 目标,确保使用相同的组 ID
  5. 使用相同的组id在flutter端初始化App
  6. 使用主页小部件扩展方法保存您的 Siri 意图所需的数据
  7. 使用从 UserDefaults 读取的已保存数据

这里需要考虑一些事情:Siri 的意图位于不同的 Target 中,因为如果需要,它们可以在后台运行,这就是为什么您无法在意图和 flutter 之间建立直接通信线路(目前)。相反,您需要做的是在内存中保存用户在使用 Siri 时可能需要的一些数据(可能是用户 ID 或 API 密钥),如果您需要进行一些 HTTP 调用,则必须从 Swift 进行。

这就是为什么我们需要家庭小部件扩展,因为家庭小部件也使用不同的目标,并且此扩展使用应用程序组和用户默认打开通信通道,我们可以使用相同的通信通道将数据发送到我们的 Siri Intent。

只需遵循 HomeWidget 扩展的配置指南,并将 AppGroups 功能添加到您的跑步者 Target 以及您的 Siri 意图即可。确保在所有这些组中使用相同的组 ID,包括在 flutter 端:

HomeWidget.setAppGroupId('YOUR_GROUP_ID');

然后您可以使用扩展方法在 flutter 和 swift 之间发送和接收数据。