diff --git a/plugin.xml b/plugin.xml index 13b0c5040..c607aa68d 100755 --- a/plugin.xml +++ b/plugin.xml @@ -1,12 +1,19 @@ - - + + + PushPlugin - This plugin allows your application to receive push notifications on Android, iOS and Windows devices. - Android uses Google Cloud Messaging. + This plugin allows your application to receive push notifications on Android, iOS and Windows devices. + Android uses Firebase Cloud Messaging. iOS uses Apple APNS Notifications. Windows uses Microsoft WNS Notifications. - + + MIT @@ -40,34 +47,34 @@ - + - + - + - + - + - + @@ -120,4 +127,4 @@ - \ No newline at end of file + diff --git a/src/android/com/adobe/phonegap/push/GCMIntentService.java b/src/android/com/adobe/phonegap/push/GCMIntentService.java index 1de906ecf..7d657f53a 100644 --- a/src/android/com/adobe/phonegap/push/GCMIntentService.java +++ b/src/android/com/adobe/phonegap/push/GCMIntentService.java @@ -28,7 +28,8 @@ import android.text.Spanned; import android.util.Log; -import com.google.android.gms.gcm.GcmListenerService; +import com.google.firebase.messaging.FirebaseMessagingService; +import com.google.firebase.messaging.RemoteMessage; import org.json.JSONArray; import org.json.JSONException; @@ -41,12 +42,13 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.Map; import java.util.Random; @SuppressLint("NewApi") -public class GCMIntentService extends GcmListenerService implements PushConstants { +public class GCMIntentService extends FirebaseMessagingService implements PushConstants { - private static final String LOG_TAG = "PushPlugin_GCMIntentService"; + private static final String LOG_TAG = "PushPlugin_FCMService"; private static HashMap> messageMap = new HashMap>(); public void setNotification(int notId, String message){ @@ -64,8 +66,19 @@ public void setNotification(int notId, String message){ } @Override - public void onMessageReceived(String from, Bundle extras) { - Log.d(LOG_TAG, "onMessage - from: " + from); + public void onMessageReceived(RemoteMessage message){ + + Log.d(LOG_TAG, "onMessage - from: " + message.getFrom()); + + Bundle extras = new Bundle(); + + if (message.getNotification()!=null) { + extras.putString(TITLE,message.getNotification().getTitle()); + extras.putString(MESSAGE,message.getNotification().getBody()); + } + for (Map.Entry entry : message.getData().entrySet()) { + extras.putString(entry.getKey(), entry.getValue()); + } if (extras != null && isAvailableSender(from)) { Context applicationContext = getApplicationContext(); diff --git a/src/android/com/adobe/phonegap/push/PushInstanceIDListenerService.java b/src/android/com/adobe/phonegap/push/PushInstanceIDListenerService.java index eaa39a481..4270f22e3 100644 --- a/src/android/com/adobe/phonegap/push/PushInstanceIDListenerService.java +++ b/src/android/com/adobe/phonegap/push/PushInstanceIDListenerService.java @@ -5,23 +5,22 @@ import android.content.SharedPreferences; import android.util.Log; -import com.google.android.gms.iid.InstanceID; -import com.google.android.gms.iid.InstanceIDListenerService; +import com.google.firebase.iid.FirebaseInstanceId; +import com.google.firebase.iid.FirebaseInstanceIdService; import org.json.JSONException; import java.io.IOException; -public class PushInstanceIDListenerService extends InstanceIDListenerService implements PushConstants { - public static final String LOG_TAG = "PushPlugin_PushInstanceIDListenerService"; +public class PushInstanceIDListenerService extends FirebaseInstanceIdService implements PushConstants { + public static final String LOG_TAG = "PushPlugin_InsIdService"; @Override public void onTokenRefresh() { - SharedPreferences sharedPref = getApplicationContext().getSharedPreferences(COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE); - String senderID = sharedPref.getString(SENDER_ID, ""); - if (!"".equals(senderID)) { - Intent intent = new Intent(this, RegistrationIntentService.class); - startService(intent); - } + // Get updated InstanceID token. + String refreshedToken = FirebaseInstanceId.getInstance().getToken(); + Log.d(LOG_TAG, "Refreshed token: " + refreshedToken); + // TODO: Implement this method to send any registration to your app's servers. + //sendRegistrationToServer(refreshedToken); } } diff --git a/src/android/com/adobe/phonegap/push/PushPlugin.java b/src/android/com/adobe/phonegap/push/PushPlugin.java index 13a13c3ec..1092a07a1 100644 --- a/src/android/com/adobe/phonegap/push/PushPlugin.java +++ b/src/android/com/adobe/phonegap/push/PushPlugin.java @@ -6,8 +6,8 @@ import android.os.Bundle; import android.util.Log; -import com.google.android.gms.gcm.GcmPubSub; -import com.google.android.gms.iid.InstanceID; +import com.google.firebase.iid.FirebaseInstanceId; +import com.google.firebase.messaging.FirebaseMessaging; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaInterface; @@ -70,10 +70,10 @@ public void run() { Log.v(LOG_TAG, "execute: senderID=" + senderID); - registration_id = InstanceID.getInstance(getApplicationContext()).getToken(senderID, GCM); + token = FirebaseInstanceId.getInstance().getToken(); - if (!"".equals(registration_id)) { - JSONObject json = new JSONObject().put(REGISTRATION_ID, registration_id); + if (!"".equals(token)) { + JSONObject json = new JSONObject().put(REGISTRATION_ID, token); Log.v(LOG_TAG, "onRegistered: " + json.toString()); @@ -82,15 +82,12 @@ public void run() { PushPlugin.sendEvent( json ); } else { - callbackContext.error("Empty registration ID received from GCM"); + callbackContext.error("Empty registration ID received from FCM"); return; } } catch (JSONException e) { Log.e(LOG_TAG, "execute: Got JSON Exception " + e.getMessage()); callbackContext.error(e.getMessage()); - } catch (IOException e) { - Log.e(LOG_TAG, "execute: Got JSON Exception " + e.getMessage()); - callbackContext.error(e.getMessage()); } if (jo != null) { @@ -144,7 +141,7 @@ public void run() { if (topics != null && !"".equals(registration_id)) { unsubscribeFromTopics(topics, registration_id); } else { - InstanceID.getInstance(getApplicationContext()).deleteInstanceID(); + FirebaseInstanceId.getInstance().deleteInstanceId(); Log.v(LOG_TAG, "UNREGISTER"); // Remove shared prefs @@ -288,7 +285,7 @@ public static int getApplicationIconBadgeNumber(Context context){ SharedPreferences settings = context.getSharedPreferences(BADGE, Context.MODE_PRIVATE); return settings.getInt(BADGE, 0); } - + /* * Sets badge count on application icon and in SharedPreferences */ @@ -298,7 +295,7 @@ public static void setApplicationIconBadgeNumber(Context context, int badgeCount }else{ ShortcutBadger.removeCount(context); } - + SharedPreferences.Editor editor = context.getSharedPreferences(BADGE, Context.MODE_PRIVATE).edit(); editor.putInt(BADGE, Math.max(badgeCount, 0)); editor.apply(); @@ -365,7 +362,10 @@ private void subscribeToTopics(JSONArray topics, String registrationToken) throw String topic = null; for (int i=0; i