iOS CoreBluetooth CBPeripheral ไม่ได้รับ ReadRequest

ฉันมีสองโครงการ อันหนึ่งทำหน้าที่เป็นศูนย์กลาง อีกอันทำหน้าที่เป็นอุปกรณ์ต่อพ่วง Central เชื่อมต่อกับอุปกรณ์ต่อพ่วง จากนั้นจึงใช้วิธีเรียกกลาง readValueForCharacteristic ไม่ใช่ในทันที แต่หลังจากผ่านไปประมาณ 5-10 วินาที อุปกรณ์ต่อพ่วงจะเรียกใช้วิธีมอบหมาย - (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveReadRequest:(CBATTRequest *)request เหตุใดจึงมีความล่าช้า? ฉันจะกำจัดความล่าช้าได้อย่างไร? มีความคิดอะไรบ้าง? ฉันพยายามมาเกือบสัปดาห์แล้ว ขอบคุณทุกความช่วยเหลือ ขอบคุณ

ศูนย์กลาง

- (void)sendBtnClick:(id)sender
{
    USCPeerBtn *btn = (USCPeerBtn *)sender;
    CBPeripheral *peripheral = btn.connectedPeripheral;
    if (!peripheral) {
        return;
    }

    [self.charachterMDict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {

        if (key == peripheral) {
            [(CBPeripheral *)key readValueForCharacteristic:(CBCharacteristic *)obj]; // read
            *stop = YES;
        }
    }];
}

อุปกรณ์ต่อพ่วง

// CBPeripheralManagerDelegate
- (void)peripheralManager:(CBPeripheralManager *)peripheral  didReceiveReadRequest:(CBATTRequest *)request
{
    NSLog(@"didReceiveReadRequest");
}

person alpine    schedule 11.11.2015    source แหล่งที่มา
comment
แอพส่วนกลางและอุปกรณ์ต่อพ่วงของคุณทำงานบนอุปกรณ์เดียวกันหรือต่างกัน?   -  person Imran    schedule 11.11.2015
comment
ทำไมคุณถึงใช้ enumerateKeysAndObjectsUsingBlock ในเมื่อคุณพูดได้แค่ CBCharacteristic *char=(CBCharacteristic *)self.charachterMDict[peripheral]; ? สมมุติว่าคุณโทร respondToRequest: แต่ไม่ได้แสดงสิ่งนี้   -  person Paulw11    schedule 11.11.2015
comment
ฉันไม่ได้โทรไป respondToRequest:   -  person alpine    schedule 11.11.2015


คำตอบ (1)


โทร respondToRequest: ในวิธี - (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveReadRequest:(CBATTRequest *)request

// CBPeripheralManagerDelegate
- (void)peripheralManager:(CBPeripheralManager *)peripheral     didReceiveReadRequest:(CBATTRequest *)request
{
    [peripheral respondToRequest:request withResult:CBATTErrorSuccess];
    NSLog(@"didReceiveReadRequest");
}  

@Paulw11 ขอบคุณครับ

person alpine    schedule 11.11.2015