提供Siri Tip View中的示例参数。

huangapple go评论108阅读模式
英文:

Provide example parameter in a Siri Tip View

问题

我正在实现iOS 16应用程序快捷方式。我正在使用 SiriTipView 来向用户展示可能性。

我的 AddItem 意图具有一个参数,用于将 Item 添加到哪个 Box 实体中。快捷方式将提示用户输入此参数。

  1. @available(iOS 16.0, *)
  2. struct MyShortcuts: AppShortcutsProvider {
  3. @AppShortcutsBuilder static var appShortcuts: [AppShortcut] {
  4. AppShortcut(intent: AddItem(), phrases: [
  5. "将新项目添加到 \(\.$box) 中的 \(.applicationName)",
  6. "在 \(.applicationName) 中添加新项目",
  7. ],
  8. shortTitle: "添加新项目",
  9. systemImageName: "pills"
  10. )
  11. }
  12. }

我想要向 SiriTipView 添加一个示例的 Box(从用户的现有数据中获取,就像我在消除歧义时所做的那样)。

目前,提示视图未填充实体占位符:

  1. "将新项目添加到 ${box} 中的 <My App Name>"

提示视图定义如下:

  1. SiriTipView(intent: AddItem())

我意识到我可以只更改顶层短语,让它使用没有参数的短语,但我认为向用户展示他们可以提及盒子参数会更有用。

我尝试使用如下方式初始化提示视图的 IntentParameter

  1. SiriTipView(intent: AddItem(box: IntentParameter<BoxAppEntity>()))

但我无法弄清楚如何为其提供一个示例的盒子实体。我想我需要知道如何使用具体实体初始化 IntentParameter

英文:

I am implementing iOS16 App Shortcuts. I am using SiriTipView to show users the possibilities.

My AddItem intent has a parameter for which Box entity to add the Item to. The shortcut will prompt for this.

  1. @available(iOS 16.0, *)
  2. struct MyShortcuts: AppShortcutsProvider {
  3. @AppShortcutsBuilder static var appShortcuts: [AppShortcut] {
  4. AppShortcut(intent: AddItem(), phrases: [
  5. &quot;Add new item to \(\.$box) in \(.applicationName)&quot;,
  6. &quot;Add new item in \(.applicationName)&quot;,
  7. ],
  8. shortTitle: &quot;Add New Item&quot;,
  9. systemImageName: &quot;pills&quot;
  10. )
  11. }
  12. }

I would like to add an example Box (from the user's existing data, like I do for the disambiguation) to the SiriTipView.

Currently, the tip view does not fill in the entity placeholder:

&quot;Add new item to ${box} in &lt;My App Name&gt;&quot;

The tip view is defined like this.

SiriTipView(intent: AddItem())

I realise I could just change the topmost phrase and have it use the phrase without the parameter, but I think it would be useful to the user to see that they can speak the box parameter.

I tried initialising the tip view with an IntentParameter like this:

SiriTipView(intent: AddItem(box: IntentParameter&lt;BoxAppEntity&gt;))

But I could not figure out how to just give it an example box entity. I guess I need to know how to initialise an IntentParameter with a concrete entity.

答案1

得分: 4

M Y的答案指导我朝着正确的方向前进。

我发现,在许多IntentParameter的初始化器中,我的具体实体的名称被忽略了,或者在编译时出现了错误。

最后,我不得不这样设置wrappedValue

  1. func getIntentParameter() -> IntentParameter<BoxAppEntity?> {
  2. let parameter = IntentParameter<BoxAppEntity?>(title: "Example Parameter")
  3. parameter.wrappedValue = BoxAppEntity(id: "boxID", displayString: "Box Name")
  4. return parameter
  5. }

然后我在SiriTipView中使用了这个:

  1. SiriTipView(intent: AddItem(box: getIntentParameter()))

getIntentParameter方法中,我可以根据一些任意用户数据简单地设置displayString

英文:

The answer by M Y led me in the right direction.

I found that with many of the IntentParameter initialisers, the name of my concrete entity was being ignored, or there were compile time errors.

In the end, I had to set the wrappedValue like this.

  1. func getIntentParameter() -&gt; IntentParameter&lt;BoxAppEntity?&gt; {
  2. let parameter = IntentParameter&lt;BoxAppEntity?&gt;(title: &quot;Example Parameter&quot;)
  3. parameter.wrappedValue = BoxAppEntity(id: &quot;boxID&quot;, displayString: &quot;Box Name&quot;)
  4. return parameter
  5. }

Then I used this in the SiriTipView:

  1. SiriTipView(intent: AddItem(box: getIntentParameter()))

In the getIntentParameter method I can simply set the displayString based on some arbitrary user data.

huangapple
  • 本文由 发表于 2023年5月29日 16:41:24
  • 转载请务必保留本文链接:https://go.coder-hub.com/76355844.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定