From 2ebad9f730791c24d93c8fff6651cce84c599746 Mon Sep 17 00:00:00 2001 From: RamJak Date: Wed, 1 Aug 2018 14:25:54 +0700 Subject: [PATCH 1/3] check if notification callback exist before invoke the method --- ios/BleManager.m | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) 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]; + } } } From 4c57bec911c2101da3576f5f56c542f07c485f65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Franc=CC=A7ois=20Puissant?= Date: Thu, 13 Sep 2018 16:08:45 +0200 Subject: [PATCH 2/3] fix crash when the characteristic has value 0x (empty array) --- ios/CBPeripheral+Extensions.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/CBPeripheral+Extensions.m b/ios/CBPeripheral+Extensions.m index 9a5c2d1d..7864e554 100644 --- a/ios/CBPeripheral+Extensions.m +++ b/ios/CBPeripheral+Extensions.m @@ -151,7 +151,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]) { From 4608e207e77f37a026b0e17a1321d8651552436c Mon Sep 17 00:00:00 2001 From: sriky Date: Thu, 13 Sep 2018 19:56:21 +0300 Subject: [PATCH 3/3] Fixing NullPointerException in getDeviceName --- android/src/main/java/it/innove/Peripheral.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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()) {