From 5f0b241e4d9a0e9ab968b8fe5b996bdb347ab6a1 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 28 Nov 2018 10:52:48 +0100 Subject: [PATCH] Added logs to make it easier to debug push notifications --- src/android/org/linphone/LinphoneManager.java | 28 ++----------------- .../org/linphone/LinphonePreferences.java | 2 ++ src/android/org/linphone/LinphoneService.java | 4 +++ .../linphone/firebase/FirebaseMessaging.java | 7 ++++- 4 files changed, 14 insertions(+), 27 deletions(-) diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index 64be5823c..a5db00983 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -646,31 +646,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou } private void initPushNotificationsService() { - if (getString(R.string.push_type).equals("google")) { - try { - Class GCMRegistrar = Class.forName("com.google.android.gcm.GCMRegistrar"); - GCMRegistrar.getMethod("checkDevice", Context.class).invoke(null, mServiceContext); - try { - GCMRegistrar.getMethod("checkManifest", Context.class).invoke(null, mServiceContext); - } catch (IllegalStateException e) { - Log.e("[Push Notification] No receiver found", e); - } - final String regId = (String) GCMRegistrar.getMethod("getRegistrationId", Context.class).invoke(null, mServiceContext); - String newPushSenderID = mServiceContext.getString(R.string.push_sender_id); - String currentPushSenderID = LinphonePreferences.instance().getPushNotificationRegistrationID(); - if (regId.equals("") || currentPushSenderID == null || !currentPushSenderID.equals(newPushSenderID)) { - GCMRegistrar.getMethod("register", Context.class, String[].class).invoke(null, mServiceContext, new String[]{newPushSenderID}); - Log.i("[Push Notification] Storing current sender id = " + newPushSenderID); - } else { - Log.i("[Push Notification] Already registered with id = " + regId); - LinphonePreferences.instance().setPushNotificationRegistrationID(regId); - } - } catch (java.lang.UnsupportedOperationException e) { - Log.i("[Push Notification] Not activated"); - } catch (Exception e1) { - Log.i("[Push Notification] Assuming GCM jar is not provided."); - } - } else if (getString(R.string.push_type).equals("firebase")) { + if (getString(R.string.push_type).equals("firebase")) { try { Class firebaseClass = Class.forName("com.google.firebase.iid.FirebaseInstanceId"); Object firebaseInstance = firebaseClass.getMethod("getInstance").invoke(null); @@ -678,7 +654,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou //final String refreshedToken = com.google.firebase.iid.FirebaseInstanceId.getInstance().getToken(); if (refreshedToken != null) { - Log.i("[Push Notification] current token is: " + refreshedToken); + Log.i("[Push Notification] init push notif service token is: " + refreshedToken); LinphonePreferences.instance().setPushNotificationRegistrationID(refreshedToken); } } catch (Exception e) { diff --git a/src/android/org/linphone/LinphonePreferences.java b/src/android/org/linphone/LinphonePreferences.java index f74f4f2d4..e321c4ded 100644 --- a/src/android/org/linphone/LinphonePreferences.java +++ b/src/android/org/linphone/LinphonePreferences.java @@ -1237,6 +1237,7 @@ public class LinphonePreferences { } } } + Log.i("[Push Notification] Refreshing registers to ensure token is up to date" + regId); lc.refreshRegisters(); } } else { @@ -1259,6 +1260,7 @@ public class LinphonePreferences { public void setPushNotificationRegistrationID(String regId) { if (getConfig() == null) return; + Log.i("[Push Notification] New token received" + regId); getConfig().setString("app", "push_notification_regid", (regId != null) ? regId : ""); setPushNotificationEnabled(isPushNotificationEnabled()); } diff --git a/src/android/org/linphone/LinphoneService.java b/src/android/org/linphone/LinphoneService.java index 03a7f1eb0..de90d7c3c 100644 --- a/src/android/org/linphone/LinphoneService.java +++ b/src/android/org/linphone/LinphoneService.java @@ -311,6 +311,10 @@ public final class LinphoneService extends Service { public int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); + if (intent.getBooleanExtra("PushNotification", false)) { + Log.i("[Push Notification] LinphoneService started because of a push"); + } + if (instance != null) { Log.w("Attempt to start the LinphoneService but it is already running !"); return START_REDELIVER_INTENT; diff --git a/src/android/org/linphone/firebase/FirebaseMessaging.java b/src/android/org/linphone/firebase/FirebaseMessaging.java index 16b4d6225..d13c64dc2 100644 --- a/src/android/org/linphone/firebase/FirebaseMessaging.java +++ b/src/android/org/linphone/firebase/FirebaseMessaging.java @@ -27,6 +27,7 @@ import com.google.firebase.messaging.RemoteMessage; import org.linphone.LinphoneManager; import org.linphone.LinphoneService; import org.linphone.LinphoneUtils; +import org.linphone.mediastream.Log; import static android.content.Intent.ACTION_MAIN; @@ -40,11 +41,15 @@ public class FirebaseMessaging extends FirebaseMessagingService { if (!LinphoneService.isReady()) { android.util.Log.i("FirebaseMessaging", "[Push Notification] Starting Service"); - startService(new Intent(ACTION_MAIN).setClass(this, LinphoneService.class)); + Intent intent = new Intent(ACTION_MAIN); + intent.setClass(this, LinphoneService.class); + intent.putExtra("PushNotification", true); + startService(intent); } else if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() == 0) { LinphoneUtils.dispatchOnUIThread(new Runnable() { @Override public void run() { + Log.i("[Push Notification] Push notification received with LinphoneManager still alive"); if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() == 0) { LinphoneManager.getLc().setNetworkReachable(false); LinphoneManager.getLc().setNetworkReachable(true);