Home Kit Accessories シミュレーターを使用しており、 HMServiceのインスタンスからアクセサリーの会社名を取得したいと考えています。ただし、ブレークポイントを追加すると、会社名に関連するフィールドが表示されません ( HMService とHMAccessoryの両方で検索しました)。
なにか提案を?
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 プロパティを使用して、製造元の名前を取得します。
特性.値のように
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;
}