CoreBlueTooth

When a device bind iPhone by HID and the device is connected, I use and

NSArray<CBPeripheral *> *peripherals;

    if (self.serviceUUID) {

        peripherals = [self.centralManager retrieveConnectedPeripheralsWithServices: @[self.serviceUUID]];

    }else{

        peripherals = [self.centralManager retrieveConnectedPeripheralsWithServices: @[]];

    }

    

    __block BOOL isConnected = NO;

    [peripherals enumerateObjectsUsingBlock:^(CBPeripheral * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

        

        BOOL match = NO;

        [[NiuLogManager shareManager] log: obj.identifier.UUIDString];

        if (self.filterPeripheralBlock) {

            match = self.filterPeripheralBlock(obj, nil, nil);

        }

        

        if (match) {

           *stop = YES;

            isConnected = YES;

            self.peripheral = obj;

            if (self.didFoundTargetPeripheralHandler) {

                self.didFoundTargetPeripheralHandler(self, obj, nil);

            }

        }

    }];

    

    if (isConnected) {

        return;

    }

    

    NSMutableArray<NSUUID *> *perIDs = [NSMutableArray arrayWithCapacity:2];

    if (peripheralID) {

        [perIDs addObject:peripheralID];

    }

    peripherals = [self.centralManager retrievePeripheralsWithIdentifiers:perIDs];



    

    [peripherals enumerateObjectsUsingBlock:^(CBPeripheral * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

        

        BOOL match = NO;

        if (self.filterPeripheralBlock) {

            match = self.filterPeripheralBlock(obj, nil, nil);

        }

        

        if (match) {

           *stop = YES;

            isConnected = YES;

            self.peripheral = obj;

            if (self.didFoundTargetPeripheralHandler) {

                self.didFoundTargetPeripheralHandler(self, obj, nil);

            }

        }

    }];

    if (isConnected) {

        return;

    }

    [self doScanAction:nil];

it has no effect to find the connected device? what should I do?

As HID profiles are directly consumed by the system in iOS and not passed on to the apps, they cannot interact with HID devices/services directly, but only through system services. 

CoreBlueTooth
 
 
Q