From ec86a581d53313ee206a4921fb468ec4724f6ce9 Mon Sep 17 00:00:00 2001 From: eskimo Date: Sun, 13 Apr 2025 13:28:40 -0400 Subject: [PATCH] foreground service optional --- android/src/main/AndroidManifest.xml | 11 +------- .../capacitor/sockets/SocketsPlugin.java | 27 ++++++++++++++----- package.json | 2 +- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index 217ef06..c801b81 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -1,12 +1,3 @@ - - - - - - + \ No newline at end of file diff --git a/android/src/main/java/software/eskimo/capacitor/sockets/SocketsPlugin.java b/android/src/main/java/software/eskimo/capacitor/sockets/SocketsPlugin.java index 6d0223a..cbbb0f9 100644 --- a/android/src/main/java/software/eskimo/capacitor/sockets/SocketsPlugin.java +++ b/android/src/main/java/software/eskimo/capacitor/sockets/SocketsPlugin.java @@ -9,12 +9,17 @@ import com.getcapacitor.Plugin; import com.getcapacitor.PluginCall; import com.getcapacitor.annotation.CapacitorPlugin; import com.getcapacitor.PluginMethod; +import java.util.HashMap; +import java.util.Map; @CapacitorPlugin(name = "Sockets") public class SocketsPlugin extends Plugin { private Sockets implementation = new Sockets(this); + private Map socketForegroundUsage = new HashMap<>(); + private int foregroundServiceConnectionCount = 0; + @PluginMethod public void create(PluginCall call) { String id = call.getString("id", java.util.UUID.randomUUID().toString()); @@ -30,8 +35,15 @@ public class SocketsPlugin extends Plugin { boolean useTLS = call.getBoolean("useTLS", false); boolean acceptInvalidCertificates = call.getBoolean("acceptInvalidCertificates", false); String delimiter = call.getString("delimiter", "\r\n"); - - startSocketForegroundService(); + + boolean useForeground = call.getBoolean("useForegroundService", false); + if (useForeground) { + if (foregroundServiceConnectionCount == 0) { + startSocketForegroundService(); + } + foregroundServiceConnectionCount++; + } + socketForegroundUsage.put(id, useForeground); implementation.connect(id, host, port, useTLS, acceptInvalidCertificates, delimiter); call.resolve(); @@ -49,9 +61,12 @@ public class SocketsPlugin extends Plugin { @PluginMethod public void disconnect(PluginCall call) { String id = call.getString("id", ""); - + Boolean usedForeground = socketForegroundUsage.remove(id); + if (usedForeground != null && usedForeground) { + foregroundServiceConnectionCount--; + } implementation.disconnect(id); - if (implementation.getActiveSocketCount() == 0) { + if (foregroundServiceConnectionCount <= 0) { stopSocketForegroundService(); } call.resolve(); @@ -85,9 +100,7 @@ public class SocketsPlugin extends Plugin { JSObject data = new JSObject(); data.put("id", id); data.put("message", message); - Log.d("SocketsPlugin", "Message to JS: " + data.toString()); - notifyListeners("message", data); } @@ -113,4 +126,4 @@ public class SocketsPlugin extends Plugin { } return false; } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 49ba024..c813514 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "capacitor-sockets", - "version": "0.0.4", + "version": "0.0.5", "description": "Sockets", "main": "dist/plugin.cjs.js", "module": "dist/esm/index.js",