中心写入特性到外设(iOS Core蓝牙)

好吧,我已经浏览了一千个教程和其他堆栈溢出线程(所以请不要列出重复没有回答的问题),我不能解决如何使用这个function。

我按照这个教程: http : //code.tutsplus.com/tutorials/ios-7-sdk-core-bluetooth-practical-lesson–mobile-20741

我有一个系统,中央可以连接到一个外设,并从中读取一个特性。

我现在试图让我的核心重写特性内的数据,但我发现我所称的写行被忽略。

我已经在我的外围课堂上宣布了我的特点:

self.transferCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID] properties:CBCharacteristicPropertyNotify|CBCharacteristicPropertyWriteWithoutResponse|CBCharacteristicPropertyRead value:nil permissions:CBAttributePermissionsReadable|CBAttributePermissionsWriteable]; 

并在我的中央pipe理器,我已经打电话

  [peripheral writeValue:[@"rewritten!" dataUsingEncoding:NSUTF8StringEncoding] forCharacteristic:characteristic type:CBCharacteristicWriteWithoutResponse]; 

但是这条线被忽略了。 任何人都可以通过什么可能是错的? 我需要添加一个方法到我的外设类吗?

另外,我尝试过使用WithResponse,但它甚至不会从外设调用这个方法。

你仍然坚持这个问题?

我想你的问题是持续的,因为你还没有实现didReceiveWriteRequests方法。

 // Processes write command received from a central. - (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests { CBATTRequest *request = [requests objectAtIndex:0]; NSData *request_data = request.value; CBCharacteristic *write_char = request.characteristic; //CBCentral* write_central = request.central; //NSUInteger multi_message_offset = request.offset; // Face commands this PWR RX to advertise serno UUID? int total_write_requests = 0; if ([ write_char.UUID isEqual:[CBUUID UUIDWithString:YOUR_CHARACTERISTIC_UUID]] ) { // Read desired new_state data from central: unsigned char *new_state = (unsigned char *)[request_data bytes]; my_new_state = new_state[0]; #endif NSLog(@"- advertise serno UUID: %s", my_new_state ? "TRUE" : "FALSE" ); // Select UUID that includes serno of PWR RX, for advertisements: ++total_write_requests; } if ( total_write_requests ) { [peripheral respondToRequest:request withResult:CBATTErrorSuccess]; // result = success } else { NSLog(@"_no_write_request_FAULT !!"); } } 

注释掉[peripheral respondToRequest:request withResult:CBATTErrorSuccess]; ,在你的情况下,你正在使用CBCharacteristicWriteWithoutResponse。

代码取自: 哪里是iOS蓝牙LE peripheralManager的例子didReceiveWriteRequests