From d6d9a09d505d11148599a95a5be3e1351edbe0ac Mon Sep 17 00:00:00 2001 From: hc Date: Mon, 13 Apr 2026 15:17:52 +0800 Subject: Local iHealth SDK, device detail screen, iOS event fixes --- .../ios/ReactNativeIOSLibrary/PT3SBTModule.m | 347 +++++++++++++++++++++ 1 file changed, 347 insertions(+) create mode 100644 libs/ihealth-sdk/ios/ReactNativeIOSLibrary/PT3SBTModule.m (limited to 'libs/ihealth-sdk/ios/ReactNativeIOSLibrary/PT3SBTModule.m') diff --git a/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/PT3SBTModule.m b/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/PT3SBTModule.m new file mode 100644 index 0000000..525bc70 --- /dev/null +++ b/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/PT3SBTModule.m @@ -0,0 +1,347 @@ +// +// PT3SBTModule.m +// ReactNativeIOSLibrary +// +// Created by daiqingquan on 2016/12/4. +// Copyright © 2016年 daiqingquan. All rights reserved. +// + +#import "PT3SBTModule.h" +#import "PT3SBT.h" +#import "PT3SBTController.h" +#import "PT3SBTProfileModule.h" + +@implementation PT3SBTModule{ + + + NSMutableDictionary*resultDic; + +} + +#define EVENT_NOTIFY @"event_notify_pt3sbt" +#define kMAC_KEY @"mac" +#define kACTION_KEY @"action" + + +RCT_EXPORT_MODULE() +- (NSArray *)supportedEvents { + return @[@"event_notify", @"event_scan_device", @"event_scan_finish", + @"event_device_connected", @"event_device_connect_failed", + @"event_device_disconnect", @"event_authenticate_result", + @"event_notify_ts28b", @"event_notify_bg1", + @"action_connect_result_for_bg1"]; +} + + + +#pragma mark +#pragma mark - constantsToExport +- (NSDictionary *)constantsToExport +{ + return @{ @"Event_Notify": EVENT_NOTIFY }; + +} + ++ (BOOL)requiresMainQueueSetup +{ + return YES; +} +#pragma mark +#pragma mark - Init +-(id)init +{ + if (self=[super init]) + { + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(devicePT3SBTMeasure:) name:@"PT3SBTNotificationGetResult" object:nil]; + + } + + + return self; +} + +//Content of measurement results: +//{ +// Distance = 1663; +// Tamb = 275; +// Tbody = 3521; +// Tex = 269; +// Tobj = 274; +// Vbat = 281; +//} + + +-(void)devicePT3SBTMeasure:(NSNotification *)tempNoti{ + + NSDictionary*measureDataDic= [tempNoti userInfo]; + + NSLog(@"devicePT3SBTMeasure:%@",measureDataDic); + + NSDictionary* deviceInfo = @{ + kACTION_KEY:kACTION_TEMPERATURE_MEASUREMENT,TEMPERATURE:[measureDataDic valueForKey:@"Tbody"]}; + [self sendEventWithName:EVENT_NOTIFY body:deviceInfo]; +} + + +-(void)dealloc{ + [[NSNotificationCenter defaultCenter]removeObserver:self]; +} + +-(PT3SBT*)getPT3SBTWithMac:(NSString*)mac{ + + PT3SBTController *controller = [PT3SBTController shareIHPT3SBTController]; + NSArray *poDeviceArray = [controller getAllCurrentPT3SBTInstace]; + + for(PT3SBT *tempPT3SBT in poDeviceArray){ + if([mac isEqualToString:tempPT3SBT.serialNumber]){ + + return tempPT3SBT; + break; + } + } + + return nil; +} + +#pragma mark +#pragma mark - Method + +RCT_EXPORT_METHOD(getAllConnectedDevices){ + + + NSArray*PT3SBTarray= [[PT3SBTController shareIHPT3SBTController] getAllCurrentPT3SBTInstace]; + + NSMutableArray*deviceMacArray=[NSMutableArray array]; + + for (int i=0; i<[PT3SBTarray count]; i++) { + + PT3SBT*PT3SBT=[PT3SBTarray objectAtIndex:i]; + + [deviceMacArray addObject:PT3SBT.serialNumber]; + + } + + NSDictionary* deviceInfo = @{kACTION_KEY:kACTION_GET_ALL_CONNECTED_DEVICES,@"devices":deviceMacArray}; + + [self sendEventWithName:EVENT_NOTIFY body:deviceInfo]; + + +} + +#pragma mark 设置时间 +RCT_EXPORT_METHOD(setTime:(nonnull NSString *)mac){ + + + if ([self getPT3SBTWithMac:mac]) { + __weak typeof(self) weakSelf = self; + + [[self getPT3SBTWithMac:mac] commandFunction:^(NSDictionary *functionDict) { + + [weakSelf sendEventWithName:EVENT_NOTIFY body:@{ + kMAC_KEY:mac, + kACTION_KEY:kACTION_SET_TIME, + }]; + + } DisposeErrorBlock:^(PT3SBTDeviceError error) { + + }]; + +} + +} + +#pragma mark 设置单位 +RCT_EXPORT_METHOD(setUnit:(nonnull NSString *)mac :(nonnull NSNumber *)unit){ + + if ([self getPT3SBTWithMac:mac]) { + + PT3SBTTemperatureUnit tempUnit = PT3SBTTemperatureUnit_C; + if ([unit isEqual:@(PT3SBTTemperatureUnit_C)]) { + tempUnit = PT3SBTTemperatureUnit_C; + } else if([unit isEqual:@(PT3SBTTemperatureUnit_F)]) { + tempUnit = PT3SBTTemperatureUnit_F; + } else { + tempUnit = PT3SBTTemperatureUnit_C; + return; + } + __weak typeof(self) weakSelf = self; + + [[self getPT3SBTWithMac:mac] commandPT3SBTSetUnit:tempUnit DisposeSetUnitResult:^(BOOL setResult) { + + [weakSelf sendEventWithName:EVENT_NOTIFY body:@{ + kMAC_KEY:mac, + kACTION_KEY:kACTION_SET_UNIT, + }]; + + } DisposeErrorBlock:^(PT3SBTDeviceError error) { + + }]; + + + } +} + +#pragma mark 获取单位 +RCT_EXPORT_METHOD(getUnit:(nonnull NSString *)mac){ + + if ([self getPT3SBTWithMac:mac]) { + + [[self getPT3SBTWithMac:mac] commandPT3SBTGetUnit:^(PT3SBTTemperatureUnit unit) { + + [self sendEventWithName:EVENT_NOTIFY body:@{ + kMAC_KEY:mac, + UNIT:[NSNumber numberWithInt:unit], + kACTION_KEY:kACTION_GET_UNIT, + }]; + + } DisposeErrorBlock:^(PT3SBTDeviceError error) { + + }]; + + } +} + +#pragma mark 获取数据条数 +RCT_EXPORT_METHOD(getHistoryCount:(nonnull NSString *)mac){ + + if ([self getPT3SBTWithMac:mac]) { + + [[self getPT3SBTWithMac:mac] commandPT3SBTGetMemoryCount:^(NSNumber *count) { + + [self sendEventWithName:EVENT_NOTIFY body:@{ + kMAC_KEY:mac, + COUNT:count, + kACTION_KEY:kACTION_GET_HISTORY_COUNT, + }]; + + } DisposeErrorBlock:^(PT3SBTDeviceError error) { + + }]; + + } +} + +#pragma mark 获取数据 +RCT_EXPORT_METHOD(getHistoryData:(nonnull NSString *)mac){ + + if ([self getPT3SBTWithMac:mac]) { + + [[self getPT3SBTWithMac:mac] commandGetMemorryData:^(NSMutableArray *memoryDataArray) { + + + if(memoryDataArray != nil){ + + if(memoryDataArray.count){ + + NSMutableArray*dataArray=[NSMutableArray array]; + + for (int i=0; i