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