Shortcut/Action 在带有独立 WatchOS 应用程序的 Siri 表盘上
Shortcut/Action on Siri Watch Face with independent WatchOS app
我对制作应用程序比较陌生,对独立手表应用程序更陌生。作为培训,我正在制作一个手表应用程序,我可以用它来记录我全天的饮水量。我创建了一个新的意图定义文件(参见图 1),我在其中检查了所有目标成员资格(应用程序、WatchKit 应用程序和 WatchKit 扩展)的标记。此外,目标成员 class 是 WatchKit 扩展的 public 意图。
在记录我的水时,我执行以下代码:
let intent = INManager.intent(drink: item)
INManager.donateShortcuts(withIntent: intent)
我的 IntentManager 看起来像这样:
import Foundation
import Intents
class IntentManager {
func intent(drink: Drink) -> LogDrinkIntent {
let intent = LogDrinkIntent()
intent.uuid = drink.id.uuidString
intent.name = drink.name
intent.emoji = drink.emoji
return intent
}
func donateShortcuts(withIntent intent:INIntent) {
var relevantShortcuts: [INRelevantShortcut] = []
if let relevantShortcut = defaultRelevantShortcut(withIntent: intent) {
relevantShortcuts.append(relevantShortcut)
}
INRelevantShortcutStore.default.setRelevantShortcuts(relevantShortcuts) { (error) in
if let error = error {
print("Failed to set relevant shortcuts: \(error))")
} else {
print("Relevant shortcuts set.")
}
}
}
private func defaultRelevantShortcut(withIntent intent: INIntent) -> INRelevantShortcut? {
if let shortcut = INShortcut(intent: intent) {
let relevantShortcut = INRelevantShortcut(shortcut: shortcut)
relevantShortcut.shortcutRole = .action
let template = INDefaultCardTemplate(title: "Log Drink")
relevantShortcut.watchTemplate = template
print("Returning relevant shortcut.")
return relevantShortcut
}
return nil
}
}
记录饮料时,会打印确认 Returning relevant shortcut.
和 Relevant shortcuts set.
。但是,Siri 表盘不会更新以在我的操作中包含 link。我从 this Medium article.
得到了 IntentManager
的代码
非常感谢您的宝贵时间和帮助。我很难找到有关此功能的 any 详细信息,而且 Apple 的文档在我看来是次等的。谢谢!如果您需要更多详细信息等,请随时询问。
图1
我们从后面骑马:一般来说,你想利用Soup Chef. Now you can categorize Siri suggestions into two sub-groups, being donated shortcuts and relevant shortcuts。
在您的 “取水量”记录应用程序 的具体示例中,您应该将 INIntent
捐赠给 INIteraction
。原因很简单:您的建议是由于用户在您的应用程序中执行的操作,而不是基于明显的相关性,因此您关于 INRelevantShortcutStore
的段落没有必要 and/or 应该被替换INInteraction
.
换句话说:问题是您将 INRelevantShortcutStore
解析为捐赠,请参见此处:
func donateShortcuts(withIntent intent:INIntent) {
var relevantShortcuts: [INRelevantShortcut] = []
if let relevantShortcut = defaultRelevantShortcut(withIntent: intent) {
relevantShortcuts.append(relevantShortcut)
}
INRelevantShortcutStore.default.setRelevantShortcuts(relevantShortcuts) { (error) in
if let error = error {
print("Failed to set relevant shortcuts: \(error))")
} else {
print("Relevant shortcuts set.")
}
}
}
... 如上所述,在您的特定示例中,这不是 INIntent
的正确用法。
我强烈建议通读Soup Chef in general as well as specifically donating shortcuts to Siri(你想做什么!)。 文档非常详细和解释!
我对制作应用程序比较陌生,对独立手表应用程序更陌生。作为培训,我正在制作一个手表应用程序,我可以用它来记录我全天的饮水量。我创建了一个新的意图定义文件(参见图 1),我在其中检查了所有目标成员资格(应用程序、WatchKit 应用程序和 WatchKit 扩展)的标记。此外,目标成员 class 是 WatchKit 扩展的 public 意图。
在记录我的水时,我执行以下代码:
let intent = INManager.intent(drink: item)
INManager.donateShortcuts(withIntent: intent)
我的 IntentManager 看起来像这样:
import Foundation
import Intents
class IntentManager {
func intent(drink: Drink) -> LogDrinkIntent {
let intent = LogDrinkIntent()
intent.uuid = drink.id.uuidString
intent.name = drink.name
intent.emoji = drink.emoji
return intent
}
func donateShortcuts(withIntent intent:INIntent) {
var relevantShortcuts: [INRelevantShortcut] = []
if let relevantShortcut = defaultRelevantShortcut(withIntent: intent) {
relevantShortcuts.append(relevantShortcut)
}
INRelevantShortcutStore.default.setRelevantShortcuts(relevantShortcuts) { (error) in
if let error = error {
print("Failed to set relevant shortcuts: \(error))")
} else {
print("Relevant shortcuts set.")
}
}
}
private func defaultRelevantShortcut(withIntent intent: INIntent) -> INRelevantShortcut? {
if let shortcut = INShortcut(intent: intent) {
let relevantShortcut = INRelevantShortcut(shortcut: shortcut)
relevantShortcut.shortcutRole = .action
let template = INDefaultCardTemplate(title: "Log Drink")
relevantShortcut.watchTemplate = template
print("Returning relevant shortcut.")
return relevantShortcut
}
return nil
}
}
记录饮料时,会打印确认 Returning relevant shortcut.
和 Relevant shortcuts set.
。但是,Siri 表盘不会更新以在我的操作中包含 link。我从 this Medium article.
IntentManager
的代码
非常感谢您的宝贵时间和帮助。我很难找到有关此功能的 any 详细信息,而且 Apple 的文档在我看来是次等的。谢谢!如果您需要更多详细信息等,请随时询问。
图1
我们从后面骑马:一般来说,你想利用Soup Chef. Now you can categorize Siri suggestions into two sub-groups, being donated shortcuts and relevant shortcuts。
在您的 “取水量”记录应用程序 的具体示例中,您应该将 INIntent
捐赠给 INIteraction
。原因很简单:您的建议是由于用户在您的应用程序中执行的操作,而不是基于明显的相关性,因此您关于 INRelevantShortcutStore
的段落没有必要 and/or 应该被替换INInteraction
.
换句话说:问题是您将 INRelevantShortcutStore
解析为捐赠,请参见此处:
func donateShortcuts(withIntent intent:INIntent) {
var relevantShortcuts: [INRelevantShortcut] = []
if let relevantShortcut = defaultRelevantShortcut(withIntent: intent) {
relevantShortcuts.append(relevantShortcut)
}
INRelevantShortcutStore.default.setRelevantShortcuts(relevantShortcuts) { (error) in
if let error = error {
print("Failed to set relevant shortcuts: \(error))")
} else {
print("Relevant shortcuts set.")
}
}
}
... 如上所述,在您的特定示例中,这不是 INIntent
的正确用法。
我强烈建议通读Soup Chef in general as well as specifically donating shortcuts to Siri(你想做什么!)。 文档非常详细和解释!