SiriKit 自定义意图参数和快捷方式

Z S*_*Z S 3 objective-c ios sirikit ios12 inshortcut

我试图弄清楚如何使用 iOS12 中的自定义意图来定义和创建快捷方式。我想创建一个快捷方式,以便用户可以将任务添加到我的应用程序并为其命名(以及将来的其他参数)。例如,只需对 Siri 说“添加名称为‘拿起衣物’的任务”。

以下是我定义意图的方式: 在此输入图像描述

然后我尝试使用以下命令创建 Siri 快捷方式:

    TaskIntent *taskIntent = [[TaskIntent alloc] init];
    taskIntent.suggestedInvocationPhrase = @"TaskIt";

    INShortcut *taskShortcut = [[INShortcut alloc] initWithIntent:taskIntent];

    INUIAddVoiceShortcutViewController *addSiri = [[INUIAddVoiceShortcutViewController alloc] initWithShortcut:taskShortcut];
    addSiri.delegate = self;
    [self presentViewController:addSiri animated:YES completion: nil];
Run Code Online (Sandbox Code Playgroud)

然而,它最终在应用程序中出现异常:

无法从 Intent ( { taskName = ;identifier = EE4661C6-1826-4A14-84EC-FD684647FE2B; }) 创建快捷方式,因为它没有有效的参数组合

所以我不确定如何正确地做到这一点。捐赠快捷方式时是否必须提供任务名称?但这意味着每次都会显示相同的任务名称并将其添加到系统中,这不是我想要的。或者新的 SiriKit 的可定制性不足以处理通用输入?

Ker*_*der 5

是的,创建自定义后TaskIntent,您需要填充其参数。也就是说,您需要设置一个值taskName

taskIntent.taskName = @"Test";
Run Code Online (Sandbox Code Playgroud)

每次用户在您的应用程序中执行相关操作时,您都会捐赠意图。如果您的用户输入带有 的任务taskName,您可以通过创建您的意图并将参数设置taskIntent.taskName为您的用户输入的任务名称来捐赠此任务名称。它会建议再次输入具有相同标题的任务的快捷方式,这可能不是你想要什么。由于任务标题不同并且没有什么可以预测的,添加任务并不重复,所以这INAddTasksIntent似乎比捐赠快捷方式更合适。