0

我想将SIRI 名称与我使用 HomeKit 模拟器定义的家居套件配件的 CUSTOM 特征相关联(有关我如何做到的详细信息,请参阅此问题)。

我将能够做类似的事情:

  • “在 HOME 中将 CHARACTERISTICONENAME 设置为 VALUE”
  • “在 HOME 中打开 ACCESSORYNAME”
  • “在 HOME 中将 CHARACTERISTICTWONAME 设置为 VALUE”

使用预定义的特性很容易做到这一点,但是我需要能够使用自定义特性来做到这一点。

知道如何实现这一目标吗?


编辑:只有 HMService 类具有“updateName”功能。HMCharacteristic 没有它。

如果我尝试访问服务名称和相关特征制造商描述,这就是我得到的:

for (int i=0;  i< [accessory.services count]; i++) {
    HMService * service = [accessory.services objectAtIndex:i];
    for (int j=0;  j< [service.characteristics count]; j++) {
    HMCharacteristic * characteristic = [service.characteristics objectAtIndex:j];

    NSLog(@"service name: %@", service.name);

    if ([characteristic.properties containsObject:HMCharacteristicPropertySupportsEventNotification]) {
        NSLog(@"description of characteristic: %@", characteristic.metadata);

        [characteristic enableNotification:TRUE completionHandler:^(NSError *error) {
            if (error) {
                NSLog(@"Error while enabling notification");
            }
            else    {
                NSLog(@"Notification enabled");
            }
        }];
    }
}
}

服务名称:MyServiceName service 2015-08-21 09:40:20.833 AppName[217:5673] 特征描述:[%@ 格式:字符串,最大长度:1,制造商描述:SomethingCustom 模式]

4

1 回答 1

1

我怀疑这是不可能的。Siri 与 homekit 有硬编码关系,允许它与定义类型的配件进行通信。

需要注意的是,siri 使用服务名称来确定将命令定向到何处。所以如果你有一个叫做“楼上”的恒温器,你可以告诉siri“把楼上的温度设置为65度”。Siri 对您与服务交互的解释很复杂,看起来苹果只支持他们定义的服务,以便他们可以提供他们想要的体验。

于 2015-08-25T16:56:59.647 回答