Hi all,
I'm trying to make a push notification system for android with MQTT to avoid the use of google servers.
My application is made with Cordova, so if you need, you can make plugins in JAVA as a native application, so Cordova should not be a problem.
I have all that I need, I can make the connection with the server, I can publish, I can subscribe, etc...
But when I close the application, or when I press the power button the connection with the server is lost.
Basically an android service is always running and I can check that the service is running in Android Studio but for some reason I lose the connection.
The PAHO library is widely used so I don't think that's the problem, so I think the problem is in my plugin, but the plugin is so basic that there is no place for error.
This is my connection code:
private void connect(JSONArray args, CallbackContext callbackContext){
String serverURI, clientId;
boolean cleanSession;
try{
serverURI = args.getString(0);
JSONObject opts = args.getJSONObject(1);
clientId = opts.getString("clientId");
cleanSession = opts.getBoolean("clean");
}catch(JSONException e){
Log.e(this.getClass().getCanonicalName(), "JSONException Occured");
callbackContext.error("JSON error");
return;
}
client = new MqttAndroidClient(cordova.getActivity(), serverURI, clientId, new MemoryPersistence());
client.setCallback(callback);
client.setTraceCallback(new MqttTraceCallback());
MqttConnectOptions conOpt = new MqttConnectOptions();
conOpt.setCleanSession(cleanSession);
try {
client.connect(conOpt, callbackContext, new ActionListener());
Log.i("MQTTService", "mqtt connect success return");
} catch (MqttException e) {
Log.e(this.getClass().getCanonicalName(), "MqttException Occured", e);
callbackContext.error(e.toString());
}
}
Can anyone give me some help?