diff --git a/android/src/main/java/it/innove/Peripheral.java b/android/src/main/java/it/innove/Peripheral.java index be724e43..dba8b43e 100644 --- a/android/src/main/java/it/innove/Peripheral.java +++ b/android/src/main/java/it/innove/Peripheral.java @@ -156,15 +156,18 @@ public WritableMap asWritableMap() { map.putString("id", device.getAddress()); // mac address map.putInt("rssi", advertisingRSSI); - if (advertisingData != null) - advertising.putString("localName", advertisingData.getDeviceName().replace("\0", "")); - else - advertising.putString("localName", device.getName()); + String name = device.getName(); + if (name != null) + advertising.putString("localName", name); advertising.putMap("manufacturerData", byteArrayToWritableMap(advertisingDataBytes)); advertising.putBoolean("isConnectable", true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && advertisingData != null) { + String deviceName = advertisingData.getDeviceName(); + if (deviceName != null) + advertising.putString("localName", deviceName.replace("\0", "")); + WritableArray serviceUuids = Arguments.createArray(); if (advertisingData.getServiceUuids() != null && advertisingData.getServiceUuids().size() != 0) { for (ParcelUuid uuid : advertisingData.getServiceUuids()) { diff --git a/ios/BleManager.m b/ios/BleManager.m index ec70bfb6..34ce707f 100644 --- a/ios/BleManager.m +++ b/ios/BleManager.m @@ -112,16 +112,20 @@ - (void)peripheral:(CBPeripheral *)peripheral didUpdateNotificationStateForChara NSString *key = [self keyForPeripheral: peripheral andCharacteristic:characteristic]; if (characteristic.isNotifying) { - NSLog(@"Notification began on %@", characteristic.UUID); RCTResponseSenderBlock notificationCallback = [notificationCallbacks objectForKey:key]; - notificationCallback(@[]); - [notificationCallbacks removeObjectForKey:key]; + if (notificationCallback != nil) { + NSLog(@"Notification began on %@", characteristic.UUID); + notificationCallback(@[]); + [notificationCallbacks removeObjectForKey:key]; + } } else { // Notification has stopped - NSLog(@"Notification ended on %@", characteristic.UUID); RCTResponseSenderBlock stopNotificationCallback = [stopNotificationCallbacks objectForKey:key]; - stopNotificationCallback(@[]); - [stopNotificationCallbacks removeObjectForKey:key]; + if (stopNotificationCallback != nil) { + NSLog(@"Notification ended on %@", characteristic.UUID); + stopNotificationCallback(@[]); + [stopNotificationCallbacks removeObjectForKey:key]; + } } } diff --git a/ios/CBPeripheral+Extensions.m b/ios/CBPeripheral+Extensions.m index 4cef8fbf..22dd3293 100644 --- a/ios/CBPeripheral+Extensions.m +++ b/ios/CBPeripheral+Extensions.m @@ -192,7 +192,7 @@ - (void) serviceAndCharacteristicInfo: (NSMutableDictionary *) info { [characteristicDictionary setObject:[[service UUID] UUIDString] forKey:@"service"]; [characteristicDictionary setObject:[[characteristic UUID] UUIDString] forKey:@"characteristic"]; - if ([characteristic value]) { + if ([characteristic value] && [[characteristic value] length] > 0) { [characteristicDictionary setObject:dataToArrayBuffer([characteristic value]) forKey:@"value"]; } if ([characteristic properties]) {