Apple が提供する CoreBluetooth 用の Sample アプリを参照したところ、Peripheral から Central に Data を送信できたので、Central から Peripheral に Data を書き込む必要があります。グーグルの後、私はそれが使用できることを発見しました[_discoveredPeripheral writeValue:aData forCharacteristic:charc type:CBCharacteristicWriteWithResponse];
以下は、周辺機器にメッセージを送信するためのセントラルの実装です。
-(void)sendMessage:(NSString *)strMessage{
NSData *aData = [strMessage dataUsingEncoding:NSUTF8StringEncoding];
CBMutableCharacteristic *charc =[[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID] properties:CBCharacteristicPropertyWrite value:nil permissions: CBAttributePermissionsWriteable];
[_discoveredPeripheral writeValue:aData forCharacteristic:charc type:CBCharacteristicWriteWithResponse];
}
このメソッドを呼び出すと、データを書き込むことができません。代わりに、以下のようにコンソールに CoreBluetooth 警告が表示されます。
CoreBluetooth[WARNING] <CBMutableCharacteristic: 0x15e8e420 UUID = 08590F7E-DB05-467E-8757-72F6FAEB13D4, Value = (null), Properties = 0x8, Permissions = 0x2, Descriptors = (null), SubscribedCentrals = (
)> is not a valid characteristic for peripheral <CBPeripheral: 0x15d91250 identifier = 37C314AF-FDB3-1F24-6937-8780B97AAB45, Name = "iPad", state = disconnected>
誰かが周辺機器のオブジェクトを取得する最良の方法と、セントラルから周辺機器へのデータの送信を開始する方法を教えてくれれば幸いです。
EDIT目的の C で UUID から特性を取得する方法に 示されている方法を試しましたか?
しかし、この場合、サービスをループしようとするたびにサービスをループすることができず、services=nil が返されます。