diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 3565d458b..ebe4b8bb2 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -293,7 +293,7 @@ - + diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index 5384178ae..eeb2d007c 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -802,6 +802,12 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag } catch (Exception e1) { Log.i("[Push Notification] Assuming GCM jar is not provided."); } + }else if (getString(R.string.push_type).equals("firebase")){ + final String refreshedToken = FirebaseInstanceId.getInstance().getToken(); + if (refreshedToken != null) { + Log.i("[Push Notification] current token is: " + refreshedToken); + LinphonePreferences.instance().setPushNotificationRegistrationID(refreshedToken); + } } } diff --git a/src/android/org/linphone/LinphonePreferences.java b/src/android/org/linphone/LinphonePreferences.java index 9c863b584..e086718b4 100644 --- a/src/android/org/linphone/LinphonePreferences.java +++ b/src/android/org/linphone/LinphonePreferences.java @@ -1166,10 +1166,14 @@ public class LinphonePreferences { if (regId != null && lc.getProxyConfigList().length > 0) { for (LinphoneProxyConfig lpc : lc.getProxyConfigList()) { String contactInfos = "app-id=" + appId + ";pn-type=" + getString(R.string.push_type) + ";pn-tok=" + regId + ";pn-silent=1"; - lpc.edit(); - lpc.setContactUriParameters(contactInfos); - lpc.done(); - Log.d("Push notif infos added to proxy config " + lpc.getAddress().asStringUriOnly()); + + String prevContactParams = lpc.getContactParameters(); + if (prevContactParams == null || prevContactParams.compareTo(contactInfos)!=0) { + lpc.edit(); + lpc.setContactUriParameters(contactInfos); + lpc.done(); + Log.d("Push notif infos added to proxy config " + lpc.getIdentity()); + } } lc.refreshRegisters(); } diff --git a/src/android/org/linphone/firebase/FirebaseIdService.java b/src/android/org/linphone/firebase/FirebaseIdService.java index 0c1b01976..a48ce0dcd 100644 --- a/src/android/org/linphone/firebase/FirebaseIdService.java +++ b/src/android/org/linphone/firebase/FirebaseIdService.java @@ -30,15 +30,10 @@ public class FirebaseIdService extends FirebaseInstanceIdService { @Override public void onTokenRefresh() { // Get updated InstanceID token. - String refreshedToken = FirebaseInstanceId.getInstance().getToken(); + final String refreshedToken = FirebaseInstanceId.getInstance().getToken(); android.util.Log.i("FirebaseIdService", "[Push Notification] Refreshed token: " + refreshedToken); - sendRegistrationToServer(refreshedToken); - } - - private void sendRegistrationToServer(final String refreshedToken) { - android.util.Log.i("FirebaseIdService", "[Push Notification] Send token to server: " + refreshedToken); - UIThreadDispatcher.dispatch(new Runnable() { + LinphoneUtils.dispatchOnUIThread(new Runnable() { @Override public void run() { LinphonePreferences.instance().setPushNotificationRegistrationID(refreshedToken);