From e9c7f4e916ac221c7691ba1b7a8f38d1e53cca08 Mon Sep 17 00:00:00 2001 From: Adam Salvitti Gucwa Date: Wed, 22 Jan 2020 14:34:28 -0800 Subject: [PATCH 01/14] add podspec --- IOTWifi.podspec | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 IOTWifi.podspec diff --git a/IOTWifi.podspec b/IOTWifi.podspec new file mode 100644 index 0000000..8eef798 --- /dev/null +++ b/IOTWifi.podspec @@ -0,0 +1,21 @@ +require 'json' + +package = JSON.parse(File.read('package.json')) + +Pod::Spec.new do |s| + s.name = 'IOTWifi' + s.version = package['version'] + s.summary = package['description'] + s.description = package['description'] + s.homepage = package['homepage'] + s.license = package['license'] + s.author = package['author'] + s.source = { :git => 'https://github.com/hudl/react-native-iot-wifi.git' } + s.platform = :ios, '10.3' + s.ios.deployment_target = '10.3' + s.source_files = 'ios/**/*.{h,m}' + s.exclude_files = 'android/**/*' + s.exclude_files = 'example/**/*' + s.dependency 'React' +end + From 4288a2a01c673ad492b31fc6ad994100b636b887 Mon Sep 17 00:00:00 2001 From: Adam Salvitti Gucwa Date: Wed, 22 Jan 2020 14:35:51 -0800 Subject: [PATCH 02/14] change source --- IOTWifi.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IOTWifi.podspec b/IOTWifi.podspec index 8eef798..27b47f9 100644 --- a/IOTWifi.podspec +++ b/IOTWifi.podspec @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.homepage = package['homepage'] s.license = package['license'] s.author = package['author'] - s.source = { :git => 'https://github.com/hudl/react-native-iot-wifi.git' } + s.source = { :git => 'https://github.com/tadasr/react-native-iot-wifi.git' } s.platform = :ios, '10.3' s.ios.deployment_target = '10.3' s.source_files = 'ios/**/*.{h,m}' From 200a186b896c957a99c579ce177f673f0bd3e25d Mon Sep 17 00:00:00 2001 From: Adam Salvitti Gucwa Date: Wed, 22 Jan 2020 14:36:00 -0800 Subject: [PATCH 03/14] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 23b338b..9ca06a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-iot-wifi", - "version": "1.0.0", + "version": "1.1.0", "description": "Connect to WiFi with React Native on Android and iOS.", "main": "index.js", "types": "index.d.ts", From 7c3a860cce52351eee2678d5e98fe30532da1ee5 Mon Sep 17 00:00:00 2001 From: Adam Salvitti Gucwa Date: Wed, 22 Jan 2020 14:44:39 -0800 Subject: [PATCH 04/14] authors change --- IOTWifi.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IOTWifi.podspec b/IOTWifi.podspec index 27b47f9..f383785 100644 --- a/IOTWifi.podspec +++ b/IOTWifi.podspec @@ -9,7 +9,7 @@ Pod::Spec.new do |s| s.description = package['description'] s.homepage = package['homepage'] s.license = package['license'] - s.author = package['author'] + s.author = package['authors_0'] s.source = { :git => 'https://github.com/tadasr/react-native-iot-wifi.git' } s.platform = :ios, '10.3' s.ios.deployment_target = '10.3' From 653808f00fc59538f91aaf1ff69f754d739d9852 Mon Sep 17 00:00:00 2001 From: Adam Salvitti Gucwa Date: Wed, 22 Jan 2020 14:48:14 -0800 Subject: [PATCH 05/14] author update --- IOTWifi.podspec | 2 +- package.json | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/IOTWifi.podspec b/IOTWifi.podspec index f383785..27b47f9 100644 --- a/IOTWifi.podspec +++ b/IOTWifi.podspec @@ -9,7 +9,7 @@ Pod::Spec.new do |s| s.description = package['description'] s.homepage = package['homepage'] s.license = package['license'] - s.author = package['authors_0'] + s.author = package['author'] s.source = { :git => 'https://github.com/tadasr/react-native-iot-wifi.git' } s.platform = :ios, '10.3' s.ios.deployment_target = '10.3' diff --git a/package.json b/package.json index 9ca06a3..f0f973e 100644 --- a/package.json +++ b/package.json @@ -23,9 +23,7 @@ "wifi", "iot" ], - "authors": [ - "tadasr" - ], + "author": "tadasr", "license": "MIT", "bugs": { "url": "https://github.com/tadasr/react-native-iot-wifi/issues" From b45765acbf5796592b1c24c90ba71709640188f6 Mon Sep 17 00:00:00 2001 From: Adam Salvitti Gucwa Date: Thu, 23 Jan 2020 09:54:18 -0800 Subject: [PATCH 06/14] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 49d3e84..7cf6c32 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,9 @@ Wifi configuration. This library was written to config iot devices. With iOS 11 Apple introduced NEHotspotConfiguration class for wifi configuration. Library supports same functionality on ios and android. +## 1.0.1 +* Add a podspec to support autolinking in React Native versions >= 0.60 + ## 1.0.0 * Optional Force binding to a Wifi on both iOS and Android platforms * Android: Better error handling From 38cc1e8f0d62b5b240f34f3880b11d6b53249745 Mon Sep 17 00:00:00 2001 From: Adam Salvitti Gucwa Date: Thu, 23 Jan 2020 12:19:29 -0800 Subject: [PATCH 07/14] bump sdk for android --- android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/build.gradle b/android/build.gradle index 781c3b3..b258736 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,7 +1,7 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 26 + compileSdkVersion 28 buildToolsVersion '28.0.3' defaultConfig { From 44658daafc92c113990461111957d8256682155c Mon Sep 17 00:00:00 2001 From: Adam Salvitti Gucwa Date: Thu, 23 Jan 2020 12:25:55 -0800 Subject: [PATCH 08/14] update readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 7cf6c32..40b2104 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,12 @@ Wifi configuration. This library was written to config iot devices. With iOS 11 Apple introduced NEHotspotConfiguration class for wifi configuration. Library supports same functionality on ios and android. ## 1.0.1 +iOS: * Add a podspec to support autolinking in React Native versions >= 0.60 +Android: +* Update compileSdkVersion to 28 + ## 1.0.0 * Optional Force binding to a Wifi on both iOS and Android platforms * Android: Better error handling From b2bccc4a6dfc69fd052b3b0f96937f23ace39385 Mon Sep 17 00:00:00 2001 From: Adam Salvitti Gucwa Date: Thu, 23 Jan 2020 13:09:43 -0800 Subject: [PATCH 09/14] add back "authors" --- IOTWifi.podspec | 2 +- package.json | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/IOTWifi.podspec b/IOTWifi.podspec index 27b47f9..f2da614 100644 --- a/IOTWifi.podspec +++ b/IOTWifi.podspec @@ -9,7 +9,7 @@ Pod::Spec.new do |s| s.description = package['description'] s.homepage = package['homepage'] s.license = package['license'] - s.author = package['author'] + s.authors = package['authors'] s.source = { :git => 'https://github.com/tadasr/react-native-iot-wifi.git' } s.platform = :ios, '10.3' s.ios.deployment_target = '10.3' diff --git a/package.json b/package.json index f0f973e..9ca06a3 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,9 @@ "wifi", "iot" ], - "author": "tadasr", + "authors": [ + "tadasr" + ], "license": "MIT", "bugs": { "url": "https://github.com/tadasr/react-native-iot-wifi/issues" From aa5964f6e4eb230f19bf6a192afcbb52d6e02fe2 Mon Sep 17 00:00:00 2001 From: Saurabh Agrawal Date: Mon, 10 Jun 2019 08:54:16 -0500 Subject: [PATCH 10/14] Allow android q to use wifi api for now --- android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java b/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java index 95c3ea2..0193c49 100644 --- a/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java +++ b/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java @@ -68,10 +68,6 @@ public void run() { } private void connectToWifi(String ssid, String passphrase, Boolean isWEP, Boolean bindNetwork, Callback callback) { - if (Build.VERSION.SDK_INT > 28) { - callback.invoke("Not supported on Android Q"); - return; - } if (!removeSSID(ssid)) { callback.invoke(errorFromCode(FailureCodes.SYSTEM_ADDED_CONFIG_EXISTS)); return; From 2059c902514d0886152a2927c77706af7bf90722 Mon Sep 17 00:00:00 2001 From: Saurabh Agrawal Date: Tue, 11 Jun 2019 11:28:48 -0500 Subject: [PATCH 11/14] Fix: Reconnecting to previously configured wifi SaveConfiguration API is deprecated on API 26 --- android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java b/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java index 0193c49..9310849 100644 --- a/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java +++ b/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java @@ -214,7 +214,10 @@ private boolean removeSSID(String ssid) { if (existingNetworkId == -1) { return success; } - success = wifiManager.removeNetwork(existingNetworkId) && wifiManager.saveConfiguration(); + success = wifiManager.removeNetwork(existingNetworkId); + if (success && Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + success = wifiManager.saveConfiguration(); + } //If not our config then success would be false return success; } From 87cc2e15febb051a51521cb4a0d761620c72a039 Mon Sep 17 00:00:00 2001 From: Saurabh Agrawal Date: Tue, 11 Jun 2019 12:46:43 -0500 Subject: [PATCH 12/14] Fix: callback invoke more than once on bind failure causing crashes --- .../com/tadasr/IOTWifi/IOTWifiModule.java | 35 +++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java b/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java index 9310849..80ad88b 100644 --- a/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java +++ b/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java @@ -24,6 +24,20 @@ class FailureCodes { static int FAILED_TO_BIND_CONFIG = 4; } +class IOTWifiCallback { + private Callback callback; + + public IOTWifiCallback(Callback callback) { + this.callback = callback; + } + + public void invoke(Object... args) { + if (callback == null) return; + callback.invoke(args); + callback = null; + } +} + public class IOTWifiModule extends ReactContextBaseJavaModule { private WifiManager wifiManager; private ConnectivityManager connectivityManager; @@ -67,9 +81,10 @@ public void run() { }).start(); } - private void connectToWifi(String ssid, String passphrase, Boolean isWEP, Boolean bindNetwork, Callback callback) { + private void connectToWifi(String ssid, String passphrase, Boolean isWEP, Boolean bindNetwork, final Callback callback) { + IOTWifiCallback iotWifiCallback = new IOTWifiCallback(callback); if (!removeSSID(ssid)) { - callback.invoke(errorFromCode(FailureCodes.SYSTEM_ADDED_CONFIG_EXISTS)); + iotWifiCallback.invoke(errorFromCode(FailureCodes.SYSTEM_ADDED_CONFIG_EXISTS)); return; } @@ -81,31 +96,31 @@ private void connectToWifi(String ssid, String passphrase, Boolean isWEP, Boolea wifiManager.disconnect(); boolean success = wifiManager.enableNetwork(networkId, true); if (!success) { - callback.invoke(errorFromCode(FailureCodes.FAILED_TO_ADD_CONFIG)); + iotWifiCallback.invoke(errorFromCode(FailureCodes.FAILED_TO_ADD_CONFIG)); return; } success = wifiManager.reconnect(); if (!success) { - callback.invoke(errorFromCode(FailureCodes.FAILED_TO_CONNECT)); + iotWifiCallback.invoke(errorFromCode(FailureCodes.FAILED_TO_CONNECT)); return; } boolean connected = pollForValidSSSID(10, ssid); if (!connected) { - callback.invoke(errorFromCode(FailureCodes.FAILED_TO_CONNECT)); + iotWifiCallback.invoke(errorFromCode(FailureCodes.FAILED_TO_CONNECT)); return; } if (!bindNetwork) { - callback.invoke(); + iotWifiCallback.invoke(); return; } try { - bindToNetwork(ssid, callback); + bindToNetwork(ssid, iotWifiCallback); } catch (Exception e) { Log.d("IoTWifi", "Failed to bind to Wifi: " + ssid); - callback.invoke(); + iotWifiCallback.invoke(); } } else { - callback.invoke(errorFromCode(FailureCodes.FAILED_TO_ADD_CONFIG)); + iotWifiCallback.invoke(errorFromCode(FailureCodes.FAILED_TO_ADD_CONFIG)); } } @@ -145,7 +160,7 @@ private boolean pollForValidSSSID(int maxSeconds, String expectedSSID) { return false; } - private void bindToNetwork(final String ssid, final Callback callback) { + private void bindToNetwork(final String ssid, final IOTWifiCallback callback) { NetworkRequest.Builder builder = new NetworkRequest.Builder(); builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); connectivityManager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() { From 83bf10e918e4c1377e32c837fe796b0a872a57d2 Mon Sep 17 00:00:00 2001 From: Saurabh Agrawal Date: Tue, 27 Aug 2019 19:06:38 -0400 Subject: [PATCH 13/14] Fix: SSID from a config can be null now --- android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java b/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java index 80ad88b..68fda8c 100644 --- a/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java +++ b/android/src/main/java/com/tadasr/IOTWifi/IOTWifiModule.java @@ -267,7 +267,9 @@ private WifiConfiguration getExistingNetworkConfig(String ssid) { String comparableSSID = ('"' + ssid + '"'); // Add quotes because wifiConfig.SSID has them if (configList != null) { for (WifiConfiguration wifiConfig : configList) { - if (wifiConfig.SSID.equals(comparableSSID)) { + String savedSSID = wifiConfig.SSID; + if (savedSSID == null) continue; // In few cases SSID is found to be null, ignore those configs + if (savedSSID.equals(comparableSSID)) { Log.d("IoTWifi", "Found Matching Wifi: "+ wifiConfig.toString()); existingNetworkConfigForSSID = wifiConfig; break; From 1781584d0746195facc6f0433998a0ca5895a0fc Mon Sep 17 00:00:00 2001 From: Debbie Beliveau Date: Thu, 30 Jan 2020 14:10:50 -0800 Subject: [PATCH 14/14] Bump package version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9ca06a3..f6f567e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-iot-wifi", - "version": "1.1.0", + "version": "1.2.0", "description": "Connect to WiFi with React Native on Android and iOS.", "main": "index.js", "types": "index.d.ts",