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/PO1Module.m | 167 +++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 libs/ihealth-sdk/ios/ReactNativeIOSLibrary/PO1Module.m (limited to 'libs/ihealth-sdk/ios/ReactNativeIOSLibrary/PO1Module.m') diff --git a/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/PO1Module.m b/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/PO1Module.m new file mode 100644 index 0000000..1fb2b9c --- /dev/null +++ b/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/PO1Module.m @@ -0,0 +1,167 @@ +// +// PO1Module.m +// ReactNativeIOSLibrary +// +// Created by daiqingquan on 2016/12/4. +// Copyright © 2016年 daiqingquan. All rights reserved. +// + +#import "PO1Module.h" +#import "PO1.h" +#import "PO1Controller.h" +#import "PO1ProfileModule.h" + +@implementation PO1Module{ + + + NSMutableDictionary*resultDic; + +} + +#define EVENT_NOTIFY @"event_notify_po1" +#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(devicePO1Measure:) name:@"PO1NotificationMeasureData" object:nil]; + + } + + + return self; +} + + +-(void)devicePO1Measure:(NSNotification *)tempNoti{ + + NSDictionary*measureDataDic= [tempNoti userInfo]; + + NSLog(@"devicePO1Measure:%@",measureDataDic); + + NSDictionary* deviceInfo = @{kACTION_KEY:@"ACTION_BO_MEASUREMENT",@"WAVE":[measureDataDic valueForKey:@"wave"],@"PI":[measureDataDic valueForKey:@"PI"],@"PULSE_FORCE":[measureDataDic valueForKey:@"height"],@"BLOOD_OXYGEN":[measureDataDic valueForKey:@"spo2"],@"PULSE":[measureDataDic valueForKey:@"bpm"]}; + [self sendEventWithName:EVENT_NOTIFY body:deviceInfo]; +} + + +-(void)dealloc{ + [[NSNotificationCenter defaultCenter]removeObserver:self]; +} + +-(PO1*)getPO1WithMac:(NSString*)mac{ + + PO1Controller *controller = [PO1Controller shareIHPO1Controller]; + NSArray *poDeviceArray = [controller getAllCurrentPO1Instace]; + + for(PO1 *tempPO1 in poDeviceArray){ + if([mac isEqualToString:tempPO1.serialNumber]){ + + return tempPO1; + break; + } + } + + return nil; +} + +#pragma mark +#pragma mark - Method + +RCT_EXPORT_METHOD(getAllConnectedDevices){ + + + NSArray*po1array= [[PO1Controller shareIHPO1Controller] getAllCurrentPO1Instace]; + + NSMutableArray*deviceMacArray=[NSMutableArray array]; + + for (int i=0; i<[po1array count]; i++) { + + PO1*po1=[po1array objectAtIndex:i]; + + [deviceMacArray addObject:po1.serialNumber]; + + } + + NSDictionary* deviceInfo = @{kACTION_KEY:@"ACTION_GET_ALL_CONNECTED_DEVICES",@"devices":deviceMacArray}; + + [self sendEventWithName:EVENT_NOTIFY body:deviceInfo]; + + +} + + + +RCT_EXPORT_METHOD(getBattery:(nonnull NSString *)mac){ + + if ([self getPO1WithMac:mac]!=nil) { + + + [[self getPO1WithMac:mac] commandPO1GetDeviceBattery:^(NSNumber *battery) { + + NSDictionary* deviceInfo = @{kACTION_KEY:@"ACTION_GET_BATTERY",@"BATTERY":battery}; + [self sendEventWithName:EVENT_NOTIFY body:deviceInfo]; + + } withErrorBlock:^(PO1ErrorID errorID) { + + }]; + }else{ + + NSDictionary* deviceInfo = @{kACTION_KEY:@"ACTION_ERROR_PO1",@"ERROR_DESCRIPTION":@"disconnect"}; + [self sendEventWithName:EVENT_NOTIFY body:deviceInfo]; + + } + + +} + +RCT_EXPORT_METHOD(disconnect:(nonnull NSString *)mac){ + + + if ([self getPO1WithMac:mac]!=nil) { + + [[self getPO1WithMac:mac] commandDisconnectDevice]; + + }else{ + + + + } + + + +} + + + + + +@end -- cgit