应用管理的自动化操作是指合作伙伴应用使用 Automation API 以编程方式构建的自动化操作。
系统会禁止此类自动化操作显示在Google Home app (GHA)自动化操作列表中。
当应用管理的自动化操作被触发时,写入 Home API 活动动态的信息可以自定义,也可以完全禁止。例如,如果合作伙伴提供了一项名为“Arctic”的品牌服务,该服务通过应用管理的自动化功能实现,则合作伙伴可以指定,当其应用管理的自动化功能运行时,活动 Feed 中会引用“Arctic”服务,而不是实际的自动化功能名称。
创建应用管理的自动化操作
如需创建应用管理的自动化操作,请按以下步骤操作。
构建自动化操作的逻辑图。
可选:如果您希望自动化操作的活动显示在活动信息流中,可以填充一个
AppManagedAutomationConfig实例,其中包含您希望在信息流中显示(而不是显示自动化操作名称)的本地化消息。可以是应用或服务的本地化名称,也可以是您需要的任何其他消息。如果您未提供任何本地化字符串,系统会像记录任何其他自动化执行一样记录自动化执行。Google 建议您设置这些本地化字符串,以确保获得最佳用户体验。let automationConfig = AppManagedAutomationConfig( managingAppDisplayNames: [ LocalizedText(text: "My Custom SmartApp", locale: "en-US"), LocalizedText(text: "Mi aplicación personalizada", locale: "es-MX") ] )使用
Automation.Builder创建自动化实例。- 设置自动化操作的
name。 - 如果您希望自动化操作的执行
历史记录显示在 GHA 的“活动记录”标签页中,请将
client_feature_group设置为"APP_MANAGED_EXECUTION_REPORTED";如果您不希望显示自动化操作的 执行历史记录,请将 设置为"APP_MANAGED_EXECUTION_UNREPORTED"。 - 设置
automationGraph。 - 可选 设置自动化操作的
appManagedAutomationConfig(请参阅第 2 步)。
- 设置自动化操作的
最后,调用
build()来构建Automation实例。
此示例展示了整个过程:
import GoogleHomeSDK
import GoogleHomeTypes
let devices = try await home.devices().list()
let mySensor: HomeDevice = devices.first(where: {
$0.types.contains(OccupancySensorDeviceType.self) &&
$0.structureID == structure.id
})
let myLight: HomeDevice = devices.first(
where: {
$0.types.contains(OnOffLightDeviceType.self) &&
$0.structureID == structure.id
}
)
// 1. Create logic graph
let starterNode = StarterNode(
device: mySensor,
trait: Matter.OccupancySensingTrait.self
)
let actionNode = ActionNode(
device: myLight,
command: Matter.OnOffTrait.on()
)
// Bundle nodes into a sequential graph
let automationGraph = SequentialFlow(
nodes: [starterNode, actionNode]
)
// 2. Build the AppManagedAutomationConfig with the localized app names
let automationConfig = AppManagedAutomationConfig(
managingAppDisplayNames: [
LocalizedText(text: "My Custom SmartApp", locale: "en-US"),
LocalizedText(text: "Mi aplicación personalizada", locale: "es-MX")
]
)
// 3. Build the Automation with both configuration and the graph
let myFunctionalAutomation = try AutomationBuilder()
.setName("Motion Activated Light") // a. Set the name
.setClientFeatureGroup("APP_MANAGED_EXECUTION_UNREPORTED") // b. set the clientFeatureGroup
.setAutomationGraph(automationGraph) // c. Attach the logic graph
.setAppManagedAutomationConfig(automationConfig) // d. Set the automationConfig
.build() // 4. build the automation