0

Home Kit Accessories シミュレーターを使用しており、 HMServiceのインスタンスからアクセサリーの会社名を取得したいと考えています。ただし、ブレークポイントを追加すると、会社名に関連するフィールドが表示されません ( HMService とHMAccessoryの両方で検索しました)。

なにか提案を?

4

2 に答える 2

1

HMServiceTypeAccessoryInformation サービスから製造元の名前を取得できます。Serviceには特性配列が含まれており、この中にHMCharacteristicTypeManufacturer特性があります。

これを使用して、会社名を表示できます。

- (HMCharacteristic *)characteristicForAccessory:(HMAccessory *)accessoryValue{

HMAccessory *thisAccessory = accessoryValue;
HMService *service;
for (HMService *thisService in thisAccessory.services) {
    if([thisService.serviceType isEqualToString:HMServiceTypeAccessoryInformation])    {
        service = thisService;
    }
}
HMCharacteristic *characteristic;
if (service)   {
    for (HMCharacteristic *charact in service.characteristics) {
        if ([charact.characteristicType isEqualToString:HMCharacteristicTypeManufacturer]) {
            characteristic = charact;
        }
    }
}

return characteristic;

}

Characteristic オブジェクトの value プロパティを使用して、製造元の名前を取得します。

特性.値のように

于 2015-04-27T11:29:10.797 に答える
0

Raeid Saqur のRSHomeKitフレームワークを見てみましょう。

service.accessory を呼び出すと、アクセサリを取得できます。次に使用します。

+ (NSString *)getManufacturerNameForHMAccessory:(HMAccessory *)accessory;

+ (NSString *)getManufacturerNameForHMAccessory:(HMAccessory *)accessory {
    if (!accessory) {
        return nil;
    }
    HMCharacteristic *manufacturer = [HomeKitUtility getCharacteristicWithUUID:HMCharacteristicTypeManufacturer forAccessory:accessory];

if (manufacturer && manufacturer.value) {
    return (NSString *)manufacturer.value;
}
    return nil;
}
于 2016-07-15T16:14:44.247 に答える