ack messages on recieve

This commit is contained in:
2018-11-12 15:51:06 +01:00
parent ae246e9219
commit 93ec261dc0
7 changed files with 143 additions and 46 deletions

View File

@@ -9,7 +9,8 @@ import java.util.TimeZone;
public class CMessage
{
public final long Timestamp ;
public final long SCN_ID;
public final long Timestamp;
public final String Title;
public final String Content;
public final PriorityEnum Priority;
@@ -21,8 +22,9 @@ public class CMessage
_format.setTimeZone(TimeZone.getDefault());
}
public CMessage(long t, String mt, String mc, PriorityEnum p)
public CMessage(long id, long t, String mt, String mc, PriorityEnum p)
{
SCN_ID = id;
Timestamp = t;
Title = mt;
Content = mc;

View File

@@ -38,14 +38,15 @@ public class CMessageList
String title = sharedPref.getString("message["+i+"].title", "");
String content = sharedPref.getString("message["+i+"].content", "");
PriorityEnum prio = PriorityEnum.parseAPI(sharedPref.getInt("message["+i+"].priority", 1));
long scnid = sharedPref.getLong("message["+i+"].scnid", 0);
Messages.add(new CMessage(time, title, content, prio));
Messages.add(new CMessage(scnid, time, title, content, prio));
}
}
public CMessage add(final long time, final String title, final String content, final PriorityEnum pe)
public CMessage add(final long scnid, final long time, final String title, final String content, final PriorityEnum pe)
{
CMessage msg = new CMessage(time, title, content, pe);
CMessage msg = new CMessage(scnid, time, title, content, pe);
boolean run = SCNApp.runOnUiThread(() ->
{
@@ -58,11 +59,12 @@ public class CMessageList
while (Messages.size()>SCNSettings.inst().LocalCacheSize) Messages.remove(0);
e.putInt("message_count", count+1);
e.putLong("message["+count+"].timestamp", time);
e.putString("message["+count+"].title", title);
e.putString("message["+count+"].content", content);
e.putInt("message["+count+"].priority", pe.ID);
e.putInt( "message_count", count+1);
e.putLong( "message["+count+"].timestamp", time);
e.putString("message["+count+"].title", title);
e.putString("message["+count+"].content", content);
e.putInt( "message["+count+"].priority", pe.ID);
e.putLong( "message["+count+"].scnid", scnid);
e.apply();
@@ -77,7 +79,7 @@ public class CMessageList
if (!run)
{
Messages.add(new CMessage(time, title, content, pe));
Messages.add(new CMessage(scnid, time, title, content, pe));
fullSave();
}
@@ -109,10 +111,11 @@ public class CMessageList
for (int i = 0; i < Messages.size(); i++)
{
e.putLong("message["+i+"].timestamp", Messages.get(i).Timestamp);
e.putString("message["+i+"].title", Messages.get(i).Title);
e.putString("message["+i+"].content", Messages.get(i).Content);
e.putInt("message["+i+"].priority", Messages.get(i).Priority.ID);
e.putLong( "message["+i+"].timestamp", Messages.get(i).Timestamp);
e.putString("message["+i+"].title", Messages.get(i).Title);
e.putString("message["+i+"].content", Messages.get(i).Content);
e.putInt( "message["+i+"].priority", Messages.get(i).Priority.ID);
e.putLong( "message["+i+"].scnid", Messages.get(i).SCN_ID);
}
e.apply();

View File

@@ -41,7 +41,7 @@ public class ServerCommunication
@Override
public void onFailure(Call call, IOException e)
{
e.printStackTrace();
Log.e("SC:register", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
SCNApp.runOnUiThread(() -> { if (loader!=null)loader.setVisibility(View.GONE); });
}
@@ -77,7 +77,7 @@ public class ServerCommunication
}
catch (Exception e)
{
e.printStackTrace();
Log.e("SC:register", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
}
finally
@@ -89,7 +89,7 @@ public class ServerCommunication
}
catch (Exception e)
{
e.printStackTrace();
Log.e("SC:register", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
}
}
@@ -107,7 +107,7 @@ public class ServerCommunication
@Override
public void onFailure(Call call, IOException e)
{
e.printStackTrace();
Log.e("SC:update_1", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
SCNApp.runOnUiThread(() -> { if (loader!=null)loader.setVisibility(View.GONE); });
}
@@ -143,7 +143,7 @@ public class ServerCommunication
}
catch (Exception e)
{
e.printStackTrace();
Log.e("SC:update_1", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
}
finally
@@ -155,7 +155,7 @@ public class ServerCommunication
}
catch (Exception e)
{
e.printStackTrace();
Log.e("SC:update_1", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
}
}
@@ -171,7 +171,7 @@ public class ServerCommunication
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
Log.e("SC:update_2", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
}
@@ -201,7 +201,7 @@ public class ServerCommunication
SCNApp.refreshAccountTab();
} catch (Exception e) {
e.printStackTrace();
Log.e("SC:update_2", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
} finally {
SCNApp.runOnUiThread(() -> {
@@ -213,7 +213,7 @@ public class ServerCommunication
}
catch (Exception e)
{
e.printStackTrace();
Log.e("SC:update_2", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
}
}
@@ -229,7 +229,7 @@ public class ServerCommunication
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
Log.e("SC:info", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
SCNApp.runOnUiThread(() -> {
if (loader != null) loader.setVisibility(View.GONE);
@@ -281,7 +281,7 @@ public class ServerCommunication
SCNApp.refreshAccountTab();
} catch (Exception e) {
e.printStackTrace();
Log.e("SC:info", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
} finally {
SCNApp.runOnUiThread(() -> {
@@ -293,7 +293,7 @@ public class ServerCommunication
}
catch (Exception e)
{
e.printStackTrace();
Log.e("SC:info", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
}
}
@@ -311,7 +311,7 @@ public class ServerCommunication
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
Log.e("SC:upgrade", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
}
@@ -341,7 +341,7 @@ public class ServerCommunication
SCNApp.refreshAccountTab();
} catch (Exception e) {
e.printStackTrace();
Log.e("SC:upgrade", e.toString());
SCNApp.showToast("Communication with server failed", 4000);
} finally {
SCNApp.runOnUiThread(() -> { if (loader != null) loader.setVisibility(View.GONE); });
@@ -356,6 +356,32 @@ public class ServerCommunication
}
}
public static void ack(int id, String key, CMessage msg)
{
try
{
Request request = new Request.Builder()
.url(BASE_URL + "ack.php?user_id=" + id + "&user_key=" + key + "&scn_msg_id=" + msg.SCN_ID)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.e("SC:ack", e.toString());
}
@Override
public void onResponse(Call call, Response response) {
// ????
}
});
}
catch (Exception e)
{
Log.e("SC:ack", e.toString());
}
}
private static boolean json_bool(JSONObject o, String key) throws JSONException
{
Object v = o.get(key);
@@ -375,5 +401,4 @@ public class ServerCommunication
{
return o.getString(key);
}
}

View File

@@ -8,6 +8,7 @@ import com.blackforestbytes.simplecloudnotifier.model.CMessage;
import com.blackforestbytes.simplecloudnotifier.model.CMessageList;
import com.blackforestbytes.simplecloudnotifier.model.PriorityEnum;
import com.blackforestbytes.simplecloudnotifier.model.SCNSettings;
import com.blackforestbytes.simplecloudnotifier.model.ServerCommunication;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
@@ -36,9 +37,9 @@ public class FBMService extends FirebaseMessagingService
String title = remoteMessage.getData().get("title");
String content = remoteMessage.getData().get("body");
PriorityEnum prio = PriorityEnum.parseAPI(remoteMessage.getData().get("priority"));
long scn_id = Long.parseLong(remoteMessage.getData().get("scn_msg_id"));
CMessage msg = CMessageList.inst().add(time, title, content, prio);
CMessage msg = CMessageList.inst().add(scn_id, time, title, content, prio);
if (SCNApp.isBackground())
{
@@ -48,6 +49,8 @@ public class FBMService extends FirebaseMessagingService
{
NotificationService.inst().showForeground(msg);
}
ServerCommunication.ack(msg);
}
catch (Exception e)
{