summaryrefslogtreecommitdiff
path: root/StoneIsland/platforms/android
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/platforms/android')
-rwxr-xr-xStoneIsland/platforms/android/AndroidManifest.xml23
-rwxr-xr-xStoneIsland/platforms/android/android.json78
-rwxr-xr-xStoneIsland/platforms/android/assets/www/cordova_plugins.js22
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-splashscreen/www/splashscreen.js3
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-push/www/push.js482
-rw-r--r--StoneIsland/platforms/android/build.gradle6
-rw-r--r--StoneIsland/platforms/android/phonegap-plugin-push/stoneisland-push.gradle18
-rwxr-xr-xStoneIsland/platforms/android/platform_www/cordova_plugins.js22
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-splashscreen/www/splashscreen.js3
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-push/www/push.js482
-rwxr-xr-xStoneIsland/platforms/android/project.properties8
-rwxr-xr-xStoneIsland/platforms/android/res/values/strings.xml1
-rw-r--r--StoneIsland/platforms/android/res/xml/config.xml8
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/BackgroundActionButtonHandler.java4
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/GCMIntentService.java (renamed from StoneIsland/platforms/android/src/com/adobe/phonegap/push/FCMService.java)139
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/PermissionUtils.java4
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushConstants.java16
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushDismissedHandler.java25
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushHandlerActivity.java32
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushInstanceIDListenerService.java19
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushPlugin.java132
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/RegistrationIntentService.java38
22 files changed, 690 insertions, 875 deletions
diff --git a/StoneIsland/platforms/android/AndroidManifest.xml b/StoneIsland/platforms/android/AndroidManifest.xml
index bb6ffaef..75322df7 100755
--- a/StoneIsland/platforms/android/AndroidManifest.xml
+++ b/StoneIsland/platforms/android/AndroidManifest.xml
@@ -23,23 +23,36 @@
</activity>
<activity android:exported="true" android:name="com.adobe.phonegap.push.PushHandlerActivity" android:permission="${applicationId}.permission.PushHandlerActivity" />
<receiver android:name="com.adobe.phonegap.push.BackgroundActionButtonHandler" />
- <receiver android:name="com.adobe.phonegap.push.PushDismissedHandler" />
- <service android:name="com.adobe.phonegap.push.FCMService">
+ <receiver android:exported="true" android:name="com.google.android.gms.gcm.GcmReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
- <action android:name="com.google.firebase.MESSAGING_EVENT" />
+ <action android:name="com.google.android.c2dm.intent.RECEIVE" />
+ <category android:name="${applicationId}" />
+ </intent-filter>
+ </receiver>
+ <service android:exported="false" android:name="com.adobe.phonegap.push.GCMIntentService">
+ <intent-filter>
+ <action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
- <service android:name="com.adobe.phonegap.push.PushInstanceIDListenerService">
+ <service android:exported="false" android:name="com.adobe.phonegap.push.PushInstanceIDListenerService">
<intent-filter>
- <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
+ <action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
+ <service android:exported="false" android:name="com.adobe.phonegap.push.RegistrationIntentService" />
</application>
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="22" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location.gps" />
+ <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
+ <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
+ <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
+ <uses-permission android:name="${applicationId}.permission.PushHandlerActivity" />
+ <permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature" />
+ <permission android:name="${applicationId}.permission.PushHandlerActivity" android:protectionLevel="signature" />
</manifest>
diff --git a/StoneIsland/platforms/android/android.json b/StoneIsland/platforms/android/android.json
index 1a860dfb..3e69085c 100755
--- a/StoneIsland/platforms/android/android.json
+++ b/StoneIsland/platforms/android/android.json
@@ -37,10 +37,6 @@
"count": 1
},
{
- "xml": "<feature name=\"SplashScreen\"><param name=\"android-package\" value=\"org.apache.cordova.splashscreen.SplashScreen\" /><param name=\"onload\" value=\"true\" /></feature>",
- "count": 1
- },
- {
"xml": "<feature name=\"Geolocation\"><param name=\"android-package\" value=\"org.apache.cordova.geolocation.Geolocation\" /></feature>",
"count": 1
},
@@ -53,6 +49,10 @@
"count": 1
},
{
+ "xml": "<feature name=\"SplashScreen\"><param name=\"android-package\" value=\"org.apache.cordova.splashscreen.SplashScreen\" /><param name=\"onload\" value=\"true\" /></feature>",
+ "count": 1
+ },
+ {
"xml": "<feature name=\"PushNotification\"><param name=\"android-package\" value=\"com.adobe.phonegap.push.PushPlugin\" /></feature>",
"count": 1
}
@@ -71,15 +71,19 @@
"count": 1
},
{
- "xml": "<receiver android:name=\"com.adobe.phonegap.push.PushDismissedHandler\" />",
+ "xml": "<receiver android:exported=\"true\" android:name=\"com.google.android.gms.gcm.GcmReceiver\" android:permission=\"com.google.android.c2dm.permission.SEND\"><intent-filter><action android:name=\"com.google.android.c2dm.intent.RECEIVE\" /><category android:name=\"${applicationId}\" /></intent-filter></receiver>",
+ "count": 1
+ },
+ {
+ "xml": "<service android:exported=\"false\" android:name=\"com.adobe.phonegap.push.GCMIntentService\"><intent-filter><action android:name=\"com.google.android.c2dm.intent.RECEIVE\" /></intent-filter></service>",
"count": 1
},
{
- "xml": "<service android:name=\"com.adobe.phonegap.push.FCMService\"><intent-filter><action android:name=\"com.google.firebase.MESSAGING_EVENT\" /></intent-filter></service>",
+ "xml": "<service android:exported=\"false\" android:name=\"com.adobe.phonegap.push.PushInstanceIDListenerService\"><intent-filter><action android:name=\"com.google.android.gms.iid.InstanceID\" /></intent-filter></service>",
"count": 1
},
{
- "xml": "<service android:name=\"com.adobe.phonegap.push.PushInstanceIDListenerService\"><intent-filter><action android:name=\"com.google.firebase.INSTANCE_ID_EVENT\" /></intent-filter></service>",
+ "xml": "<service android:exported=\"false\" android:name=\"com.adobe.phonegap.push.RegistrationIntentService\" />",
"count": 1
}
],
@@ -99,6 +103,26 @@
{
"xml": "<uses-permission android:name=\"android.permission.VIBRATE\" />",
"count": 1
+ },
+ {
+ "xml": "<uses-permission android:name=\"com.google.android.c2dm.permission.RECEIVE\" />",
+ "count": 1
+ },
+ {
+ "xml": "<uses-permission android:name=\"${applicationId}.permission.C2D_MESSAGE\" />",
+ "count": 1
+ },
+ {
+ "xml": "<uses-permission android:name=\"${applicationId}.permission.PushHandlerActivity\" />",
+ "count": 1
+ },
+ {
+ "xml": "<permission android:name=\"${applicationId}.permission.C2D_MESSAGE\" android:protectionLevel=\"signature\" />",
+ "count": 1
+ },
+ {
+ "xml": "<permission android:name=\"${applicationId}.permission.PushHandlerActivity\" android:protectionLevel=\"signature\" />",
+ "count": 1
}
],
"/*/application/activity": [],
@@ -143,7 +167,12 @@
},
"res/values/strings.xml": {
"parents": {
- "/resources": []
+ "/resources": [
+ {
+ "xml": "<string name=\"google_app_id\">85075801930</string>",
+ "count": 1
+ }
+ ]
}
},
"config.xml": {
@@ -175,9 +204,6 @@
"cordova-plugin-whitelist": {
"PACKAGE_NAME": "us.okfoc.stoneisland"
},
- "cordova-plugin-console": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
"cordova-plugin-device": {
"PACKAGE_NAME": "us.okfoc.stoneisland"
},
@@ -187,9 +213,6 @@
"cordova-plugin-dialogs": {
"PACKAGE_NAME": "us.okfoc.stoneisland"
},
- "cordova-plugin-splashscreen": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
"cordova-plugin-compat": {
"PACKAGE_NAME": "us.okfoc.stoneisland"
},
@@ -206,10 +229,11 @@
"APP_NAME": "Stone Island",
"PACKAGE_NAME": "us.okfoc.stoneisland"
},
- "phonegap-plugin-push": {
+ "cordova-plugin-splashscreen": {
"PACKAGE_NAME": "us.okfoc.stoneisland"
},
- "cordova-plugin-wkwebview-engine": {
+ "phonegap-plugin-push": {
+ "SENDER_ID": "85075801930",
"PACKAGE_NAME": "us.okfoc.stoneisland"
}
},
@@ -282,14 +306,6 @@
]
},
{
- "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
- "id": "cordova-plugin-splashscreen.SplashScreen",
- "pluginId": "cordova-plugin-splashscreen",
- "clobbers": [
- "navigator.splashscreen"
- ]
- },
- {
"file": "plugins/cordova-plugin-geolocation/www/android/geolocation.js",
"id": "cordova-plugin-geolocation.geolocation",
"pluginId": "cordova-plugin-geolocation",
@@ -321,6 +337,14 @@
]
},
{
+ "id": "cordova-plugin-splashscreen.SplashScreen",
+ "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
+ "pluginId": "cordova-plugin-splashscreen",
+ "clobbers": [
+ "navigator.splashscreen"
+ ]
+ },
+ {
"id": "phonegap-plugin-push.PushNotification",
"file": "plugins/phonegap-plugin-push/www/push.js",
"pluginId": "phonegap-plugin-push",
@@ -334,17 +358,15 @@
"cordova-plugin-x-socialsharing": "5.1.3",
"cordova-plugin-customurlscheme": "4.2.0",
"cordova-plugin-whitelist": "1.3.0",
- "cordova-plugin-console": "1.0.4",
"cordova-plugin-device": "1.1.3",
"cordova-plugin-network-information": "1.3.0",
"cordova-plugin-dialogs": "1.3.0",
- "cordova-plugin-splashscreen": "4.0.0",
"cordova-plugin-compat": "1.1.0",
"cordova-plugin-geolocation": "2.4.0",
"ionic-plugin-keyboard": "2.2.1",
"cordova-plugin-statusbar": "2.2.3",
"cordova-plugin-app-name": "1.0.4",
- "phonegap-plugin-push": "2.0.0",
- "cordova-plugin-wkwebview-engine": "1.1.3"
+ "cordova-plugin-splashscreen": "4.0.3",
+ "phonegap-plugin-push": "1.9.2"
}
} \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/cordova_plugins.js b/StoneIsland/platforms/android/assets/www/cordova_plugins.js
index 1b6d56ac..8f70abd6 100755
--- a/StoneIsland/platforms/android/assets/www/cordova_plugins.js
+++ b/StoneIsland/platforms/android/assets/www/cordova_plugins.js
@@ -67,14 +67,6 @@ module.exports = [
]
},
{
- "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
- "id": "cordova-plugin-splashscreen.SplashScreen",
- "pluginId": "cordova-plugin-splashscreen",
- "clobbers": [
- "navigator.splashscreen"
- ]
- },
- {
"file": "plugins/cordova-plugin-geolocation/www/android/geolocation.js",
"id": "cordova-plugin-geolocation.geolocation",
"pluginId": "cordova-plugin-geolocation",
@@ -106,6 +98,14 @@ module.exports = [
]
},
{
+ "id": "cordova-plugin-splashscreen.SplashScreen",
+ "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
+ "pluginId": "cordova-plugin-splashscreen",
+ "clobbers": [
+ "navigator.splashscreen"
+ ]
+ },
+ {
"id": "phonegap-plugin-push.PushNotification",
"file": "plugins/phonegap-plugin-push/www/push.js",
"pluginId": "phonegap-plugin-push",
@@ -121,18 +121,16 @@ module.exports.metadata =
"cordova-plugin-x-socialsharing": "5.1.3",
"cordova-plugin-customurlscheme": "4.2.0",
"cordova-plugin-whitelist": "1.3.0",
- "cordova-plugin-console": "1.0.4",
"cordova-plugin-device": "1.1.3",
"cordova-plugin-network-information": "1.3.0",
"cordova-plugin-dialogs": "1.3.0",
- "cordova-plugin-splashscreen": "4.0.0",
"cordova-plugin-compat": "1.1.0",
"cordova-plugin-geolocation": "2.4.0",
"ionic-plugin-keyboard": "2.2.1",
"cordova-plugin-statusbar": "2.2.3",
"cordova-plugin-app-name": "1.0.4",
- "phonegap-plugin-push": "2.0.0",
- "cordova-plugin-wkwebview-engine": "1.1.3"
+ "cordova-plugin-splashscreen": "4.0.3",
+ "phonegap-plugin-push": "1.9.2"
};
// BOTTOM OF METADATA
}); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-splashscreen/www/splashscreen.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-splashscreen/www/splashscreen.js
index 0e6a10af..5beaa5fd 100644
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-splashscreen/www/splashscreen.js
+++ b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-splashscreen/www/splashscreen.js
@@ -1,4 +1,5 @@
-cordova.define("cordova-plugin-splashscreen.SplashScreen", function(require, exports, module) { /*
+cordova.define("cordova-plugin-splashscreen.SplashScreen", function(require, exports, module) {
+/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
diff --git a/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-push/www/push.js b/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-push/www/push.js
index 7234d474..a5315486 100644
--- a/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-push/www/push.js
+++ b/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-push/www/push.js
@@ -1,16 +1,4 @@
cordova.define("phonegap-plugin-push.PushNotification", function(require, exports, module) {
-/**
-* This file has been generated by Babel.
-*
-* DO NOT EDIT IT DIRECTLY
-*
-* Edit the JS source file src/js/push.js
-**/'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
/* global cordova:false */
/* globals window */
@@ -20,358 +8,322 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
var exec = cordova.require('cordova/exec');
-var PushNotification = function () {
- /**
- * PushNotification constructor.
- *
- * @param {Object} options to initiate Push Notifications.
- * @return {PushNotification} instance that can be monitored and cancelled.
- */
- function PushNotification(options) {
- var _this = this;
-
- _classCallCheck(this, PushNotification);
+/**
+ * PushNotification constructor.
+ *
+ * @param {Object} options to initiate Push Notifications.
+ * @return {PushNotification} instance that can be monitored and cancelled.
+ */
- this.handlers = {
- registration: [],
- notification: [],
- error: []
+var PushNotification = function(options) {
+ this._handlers = {
+ 'registration': [],
+ 'notification': [],
+ 'error': []
};
// require options parameter
if (typeof options === 'undefined') {
- throw new Error('The options argument is required.');
+ throw new Error('The options argument is required.');
}
// store the options to this object instance
this.options = options;
// triggered on registration and notification
- var success = function success(result) {
- if (result && typeof result.registrationId !== 'undefined') {
- _this.emit('registration', result);
- } else if (result && result.additionalData && typeof result.additionalData.actionCallback !== 'undefined') {
- var executeFuctionOrEmitEventByName = function executeFuctionOrEmitEventByName(functionName, context) {
- for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
- args[_key - 2] = arguments[_key];
- }
+ var that = this;
+ var success = function(result) {
+ if (result && typeof result.registrationId !== 'undefined') {
+ that.emit('registration', result);
+ } else if (result && result.additionalData && typeof result.additionalData.actionCallback !== 'undefined') {
+ var executeFuctionOrEmitEventByName = function(callbackName, context, arg) {
+ var namespaces = callbackName.split('.');
+ var func = namespaces.pop();
+ for (var i = 0; i < namespaces.length; i++) {
+ context = context[namespaces[i]];
+ }
- var namespaces = functionName.split('.');
- var func = namespaces.pop();
- for (var i = 0; i < namespaces.length; i++) {
- context = context[namespaces[i]];
- }
+ if (typeof context[func] === 'function') {
+ context[func].call(context, arg);
+ } else {
+ that.emit(callbackName, arg);
+ }
+ };
- if (typeof context[func] === 'function') {
- context[func].call(context, args);
- } else {
- _this.emit(functionName, args);
- }
- };
-
- executeFuctionOrEmitEventByName(result.additionalData.actionCallback, window, result);
- } else if (result) {
- _this.emit('notification', result);
- }
+ executeFuctionOrEmitEventByName(result.additionalData.actionCallback, window, result);
+ } else if (result) {
+ that.emit('notification', result);
+ }
};
// triggered on error
- var fail = function fail(msg) {
- var e = typeof msg === 'string' ? new Error(msg) : msg;
- _this.emit('error', e);
+ var fail = function(msg) {
+ var e = (typeof msg === 'string') ? new Error(msg) : msg;
+ that.emit('error', e);
};
// wait at least one process tick to allow event subscriptions
- setTimeout(function () {
- exec(success, fail, 'PushNotification', 'init', [options]);
+ setTimeout(function() {
+ exec(success, fail, 'PushNotification', 'init', [options]);
}, 10);
- }
-
- /**
- * Unregister from push notifications
- */
-
+};
- _createClass(PushNotification, [{
- key: 'unregister',
- value: function unregister(successCallback) {
- var _this2 = this;
+/**
+ * Unregister from push notifications
+ */
- var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
- var options = arguments[2];
+PushNotification.prototype.unregister = function(successCallback, errorCallback, options) {
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof errorCallback !== 'function') {
+ if (typeof errorCallback !== 'function') {
console.log('PushNotification.unregister failure: failure parameter not a function');
return;
- }
+ }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.unregister failure: success callback parameter ' + ' must be a function');
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.unregister failure: success callback parameter must be a function');
return;
- }
+ }
- var cleanHandlersAndPassThrough = function cleanHandlersAndPassThrough() {
+ var that = this;
+ var cleanHandlersAndPassThrough = function() {
if (!options) {
- _this2.handlers = {
- registration: [],
- notification: [],
- error: []
- };
+ that._handlers = {
+ 'registration': [],
+ 'notification': [],
+ 'error': []
+ };
}
successCallback();
- };
-
- exec(cleanHandlersAndPassThrough, errorCallback, 'PushNotification', 'unregister', [options]);
- }
+ };
- /**
- * subscribe to a topic
- * @param {String} topic topic to subscribe
- * @param {Function} successCallback success callback
- * @param {Function} errorCallback error callback
- * @return {void}
- */
+ exec(cleanHandlersAndPassThrough, errorCallback, 'PushNotification', 'unregister', [options]);
+};
- }, {
- key: 'subscribe',
- value: function subscribe(topic, successCallback) {
- var errorCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
+/**
+ * subscribe to a topic
+ * @param {String} topic topic to subscribe
+ * @param {Function} successCallback success callback
+ * @param {Function} errorCallback error callback
+ * @return {void}
+ */
+PushNotification.prototype.subscribe = function(topic, successCallback, errorCallback) {
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.subscribe failure: ' + 'failure parameter not a function');
+ if (typeof errorCallback !== 'function') {
+ console.log('PushNotification.subscribe failure: failure parameter not a function');
return;
- }
+ }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.subscribe failure: ' + 'success callback parameter must be a function');
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.subscribe failure: success callback parameter must be a function');
return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'subscribe', [topic]);
}
- /**
- * unsubscribe to a topic
- * @param {String} topic topic to unsubscribe
- * @param {Function} successCallback success callback
- * @param {Function} errorCallback error callback
- * @return {void}
- */
+ exec(successCallback, errorCallback, 'PushNotification', 'subscribe', [topic]);
+};
- }, {
- key: 'unsubscribe',
- value: function unsubscribe(topic, successCallback) {
- var errorCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
+/**
+ * unsubscribe to a topic
+ * @param {String} topic topic to unsubscribe
+ * @param {Function} successCallback success callback
+ * @param {Function} errorCallback error callback
+ * @return {void}
+ */
+PushNotification.prototype.unsubscribe = function(topic, successCallback, errorCallback) {
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof errorCallback !== 'function') {
+ if (typeof errorCallback !== 'function') {
console.log('PushNotification.unsubscribe failure: failure parameter not a function');
return;
- }
+ }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.unsubscribe failure: ' + 'success callback parameter must be a function');
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.unsubscribe failure: success callback parameter must be a function');
return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'unsubscribe', [topic]);
}
- /**
- * Call this to set the application icon badge
- */
+ exec(successCallback, errorCallback, 'PushNotification', 'unsubscribe', [topic]);
+};
- }, {
- key: 'setApplicationIconBadgeNumber',
- value: function setApplicationIconBadgeNumber(successCallback) {
- var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
- var badge = arguments[2];
+/**
+ * Call this to set the application icon badge
+ */
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.setApplicationIconBadgeNumber failure: failure ' + 'parameter not a function');
- return;
- }
+PushNotification.prototype.setApplicationIconBadgeNumber = function(successCallback, errorCallback, badge) {
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.setApplicationIconBadgeNumber failure: success ' + 'callback parameter must be a function');
+ if (typeof errorCallback !== 'function') {
+ console.log('PushNotification.setApplicationIconBadgeNumber failure: failure parameter not a function');
return;
- }
+ }
- exec(successCallback, errorCallback, 'PushNotification', 'setApplicationIconBadgeNumber', [{ badge: badge }]);
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.setApplicationIconBadgeNumber failure: success callback parameter must be a function');
+ return;
}
- /**
- * Get the application icon badge
- */
+ exec(successCallback, errorCallback, 'PushNotification', 'setApplicationIconBadgeNumber', [{badge: badge}]);
+};
- }, {
- key: 'getApplicationIconBadgeNumber',
- value: function getApplicationIconBadgeNumber(successCallback) {
- var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
+/**
+ * Get the application icon badge
+ */
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.getApplicationIconBadgeNumber failure: failure ' + 'parameter not a function');
- return;
- }
+PushNotification.prototype.getApplicationIconBadgeNumber = function(successCallback, errorCallback) {
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.getApplicationIconBadgeNumber failure: success ' + 'callback parameter must be a function');
+ if (typeof errorCallback !== 'function') {
+ console.log('PushNotification.getApplicationIconBadgeNumber failure: failure parameter not a function');
return;
- }
+ }
- exec(successCallback, errorCallback, 'PushNotification', 'getApplicationIconBadgeNumber', []);
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.getApplicationIconBadgeNumber failure: success callback parameter must be a function');
+ return;
}
- /**
- * Clear all notifications
- */
+ exec(successCallback, errorCallback, 'PushNotification', 'getApplicationIconBadgeNumber', []);
+};
- }, {
- key: 'clearAllNotifications',
- value: function clearAllNotifications() {
- var successCallback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
- var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
+/**
+ * Get the application icon badge
+ */
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.clearAllNotifications failure: failure parameter ' + 'not a function');
- return;
- }
+PushNotification.prototype.clearAllNotifications = function(successCallback, errorCallback) {
+ if (!successCallback) { successCallback = function() {}; }
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.clearAllNotifications failure: success callback ' + 'parameter must be a function');
+ if (typeof errorCallback !== 'function') {
+ console.log('PushNotification.clearAllNotifications failure: failure parameter not a function');
return;
- }
+ }
- exec(successCallback, errorCallback, 'PushNotification', 'clearAllNotifications', []);
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.clearAllNotifications failure: success callback parameter must be a function');
+ return;
}
- /**
- * Listen for an event.
- *
- * The following events are supported:
- *
- * - registration
- * - notification
- * - error
- *
- * @param {String} eventName to subscribe to.
- * @param {Function} callback triggered on the event.
- */
- }, {
- key: 'on',
- value: function on(eventName, callback) {
- if (!this.handlers.hasOwnProperty(eventName)) {
- this.handlers[eventName] = [];
- }
- this.handlers[eventName].push(callback);
+ exec(successCallback, errorCallback, 'PushNotification', 'clearAllNotifications', []);
+};
+
+/**
+ * Listen for an event.
+ *
+ * Any event is supported, but the following are built-in:
+ *
+ * - registration
+ * - notification
+ * - error
+ *
+ * @param {String} eventName to subscribe to.
+ * @param {Function} callback triggered on the event.
+ */
+
+PushNotification.prototype.on = function(eventName, callback) {
+ if (!this._handlers.hasOwnProperty(eventName)) {
+ this._handlers[eventName] = [];
}
+ this._handlers[eventName].push(callback);
+};
- /**
- * Remove event listener.
- *
- * @param {String} eventName to match subscription.
- * @param {Function} handle function associated with event.
- */
+/**
+ * Remove event listener.
+ *
+ * @param {String} eventName to match subscription.
+ * @param {Function} handle function associated with event.
+ */
- }, {
- key: 'off',
- value: function off(eventName, handle) {
- if (this.handlers.hasOwnProperty(eventName)) {
- var handleIndex = this.handlers[eventName].indexOf(handle);
+PushNotification.prototype.off = function (eventName, handle) {
+ if (this._handlers.hasOwnProperty(eventName)) {
+ var handleIndex = this._handlers[eventName].indexOf(handle);
if (handleIndex >= 0) {
- this.handlers[eventName].splice(handleIndex, 1);
+ this._handlers[eventName].splice(handleIndex, 1);
}
- }
}
+};
- /**
- * Emit an event.
- *
- * This is intended for internal use only.
- *
- * @param {String} eventName is the event to trigger.
- * @param {*} all arguments are passed to the event listeners.
- *
- * @return {Boolean} is true when the event is triggered otherwise false.
- */
-
- }, {
- key: 'emit',
- value: function emit() {
- for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
- args[_key2] = arguments[_key2];
- }
+/**
+ * Emit an event.
+ *
+ * This is intended for internal use only.
+ *
+ * @param {String} eventName is the event to trigger.
+ * @param {*} all arguments are passed to the event listeners.
+ *
+ * @return {Boolean} is true when the event is triggered otherwise false.
+ */
- var eventName = args.shift();
+PushNotification.prototype.emit = function() {
+ var args = Array.prototype.slice.call(arguments);
+ var eventName = args.shift();
- if (!this.handlers.hasOwnProperty(eventName)) {
+ if (!this._handlers.hasOwnProperty(eventName)) {
return false;
- }
+ }
- for (var i = 0, length = this.handlers[eventName].length; i < length; i++) {
- var callback = this.handlers[eventName][i];
+ for (var i = 0, length = this._handlers[eventName].length; i < length; i++) {
+ var callback = this._handlers[eventName][i];
if (typeof callback === 'function') {
- callback.apply(undefined, args);
+ callback.apply(undefined,args);
} else {
- console.log('event handler: ' + eventName + ' must be a function');
+ console.log('event handler: ' + eventName + ' must be a function');
}
- }
-
- return true;
}
- }, {
- key: 'finish',
- value: function finish() {
- var successCallback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
- var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
- var id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'handler';
- if (typeof successCallback !== 'function') {
+ return true;
+};
+
+PushNotification.prototype.finish = function(successCallback, errorCallback, id) {
+ if (!successCallback) { successCallback = function() {}; }
+ if (!errorCallback) { errorCallback = function() {}; }
+ if (!id) { id = 'handler'; }
+
+ if (typeof successCallback !== 'function') {
console.log('finish failure: success callback parameter must be a function');
return;
- }
+ }
- if (typeof errorCallback !== 'function') {
+ if (typeof errorCallback !== 'function') {
console.log('finish failure: failure parameter not a function');
return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'finish', [id]);
}
- }]);
- return PushNotification;
-}();
+ exec(successCallback, errorCallback, 'PushNotification', 'finish', [id]);
+};
/*!
* Push Notification Plugin.
*/
module.exports = {
- /**
- * Register for Push Notifications.
- *
- * This method will instantiate a new copy of the PushNotification object
- * and start the registration process.
- *
- * @param {Object} options
- * @return {PushNotification} instance
- */
+ /**
+ * Register for Push Notifications.
+ *
+ * This method will instantiate a new copy of the PushNotification object
+ * and start the registration process.
+ *
+ * @param {Object} options
+ * @return {PushNotification} instance
+ */
+
+ init: function(options) {
+ return new PushNotification(options);
+ },
- init: function init(options) {
- return new PushNotification(options);
- },
+ hasPermission: function(successCallback, errorCallback) {
+ exec(successCallback, errorCallback, 'PushNotification', 'hasPermission', []);
+ },
- hasPermission: function hasPermission(successCallback, errorCallback) {
- exec(successCallback, errorCallback, 'PushNotification', 'hasPermission', []);
- },
+ /**
+ * PushNotification Object.
+ *
+ * Expose the PushNotification object for direct use
+ * and testing. Typically, you should use the
+ * .init helper method.
+ */
- /**
- * PushNotification Object.
- *
- * Expose the PushNotification object for direct use
- * and testing. Typically, you should use the
- * .init helper method.
- */
- PushNotification: PushNotification
+ PushNotification: PushNotification
};
+
});
diff --git a/StoneIsland/platforms/android/build.gradle b/StoneIsland/platforms/android/build.gradle
index dde2c8c1..b9163fbd 100644
--- a/StoneIsland/platforms/android/build.gradle
+++ b/StoneIsland/platforms/android/build.gradle
@@ -250,9 +250,9 @@ dependencies {
// SUB-PROJECT DEPENDENCIES START
debugCompile(project(path: "CordovaLib", configuration: "debug"))
releaseCompile(project(path: "CordovaLib", configuration: "release"))
- compile "com.android.support:support-v13:25.1.0"
- compile "me.leolin:ShortcutBadger:1.1.17@aar"
- compile "com.google.firebase:firebase-messaging:11.0.1"
+ compile "com.android.support:support-v13:23+"
+ compile "com.google.android.gms:play-services-gcm:9.8+"
+ compile "me.leolin:ShortcutBadger:1.1.11@aar"
// SUB-PROJECT DEPENDENCIES END
}
diff --git a/StoneIsland/platforms/android/phonegap-plugin-push/stoneisland-push.gradle b/StoneIsland/platforms/android/phonegap-plugin-push/stoneisland-push.gradle
index 1506191b..11e735ae 100644
--- a/StoneIsland/platforms/android/phonegap-plugin-push/stoneisland-push.gradle
+++ b/StoneIsland/platforms/android/phonegap-plugin-push/stoneisland-push.gradle
@@ -16,24 +16,6 @@ android {
}
defaultConfig {
- multiDexEnabled true
applicationId = doExtractStringFromManifest("package")
}
}
-
-buildscript {
- repositories {
- jcenter()
- mavenLocal()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:+'
- classpath 'com.google.gms:google-services:3.0.0'
- }
-}
-
-// apply plugin: 'com.google.gms.google-services'
-// class must be used instead of id(string) to be able to apply plugin from non-root gradle file
-ext.postBuildExtras = {
- apply plugin: com.google.gms.googleservices.GoogleServicesPlugin
-}
diff --git a/StoneIsland/platforms/android/platform_www/cordova_plugins.js b/StoneIsland/platforms/android/platform_www/cordova_plugins.js
index 1b6d56ac..8f70abd6 100755
--- a/StoneIsland/platforms/android/platform_www/cordova_plugins.js
+++ b/StoneIsland/platforms/android/platform_www/cordova_plugins.js
@@ -67,14 +67,6 @@ module.exports = [
]
},
{
- "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
- "id": "cordova-plugin-splashscreen.SplashScreen",
- "pluginId": "cordova-plugin-splashscreen",
- "clobbers": [
- "navigator.splashscreen"
- ]
- },
- {
"file": "plugins/cordova-plugin-geolocation/www/android/geolocation.js",
"id": "cordova-plugin-geolocation.geolocation",
"pluginId": "cordova-plugin-geolocation",
@@ -106,6 +98,14 @@ module.exports = [
]
},
{
+ "id": "cordova-plugin-splashscreen.SplashScreen",
+ "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
+ "pluginId": "cordova-plugin-splashscreen",
+ "clobbers": [
+ "navigator.splashscreen"
+ ]
+ },
+ {
"id": "phonegap-plugin-push.PushNotification",
"file": "plugins/phonegap-plugin-push/www/push.js",
"pluginId": "phonegap-plugin-push",
@@ -121,18 +121,16 @@ module.exports.metadata =
"cordova-plugin-x-socialsharing": "5.1.3",
"cordova-plugin-customurlscheme": "4.2.0",
"cordova-plugin-whitelist": "1.3.0",
- "cordova-plugin-console": "1.0.4",
"cordova-plugin-device": "1.1.3",
"cordova-plugin-network-information": "1.3.0",
"cordova-plugin-dialogs": "1.3.0",
- "cordova-plugin-splashscreen": "4.0.0",
"cordova-plugin-compat": "1.1.0",
"cordova-plugin-geolocation": "2.4.0",
"ionic-plugin-keyboard": "2.2.1",
"cordova-plugin-statusbar": "2.2.3",
"cordova-plugin-app-name": "1.0.4",
- "phonegap-plugin-push": "2.0.0",
- "cordova-plugin-wkwebview-engine": "1.1.3"
+ "cordova-plugin-splashscreen": "4.0.3",
+ "phonegap-plugin-push": "1.9.2"
};
// BOTTOM OF METADATA
}); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-splashscreen/www/splashscreen.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-splashscreen/www/splashscreen.js
index 0e6a10af..5beaa5fd 100644
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-splashscreen/www/splashscreen.js
+++ b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-splashscreen/www/splashscreen.js
@@ -1,4 +1,5 @@
-cordova.define("cordova-plugin-splashscreen.SplashScreen", function(require, exports, module) { /*
+cordova.define("cordova-plugin-splashscreen.SplashScreen", function(require, exports, module) {
+/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
diff --git a/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-push/www/push.js b/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-push/www/push.js
index 7234d474..a5315486 100644
--- a/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-push/www/push.js
+++ b/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-push/www/push.js
@@ -1,16 +1,4 @@
cordova.define("phonegap-plugin-push.PushNotification", function(require, exports, module) {
-/**
-* This file has been generated by Babel.
-*
-* DO NOT EDIT IT DIRECTLY
-*
-* Edit the JS source file src/js/push.js
-**/'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
/* global cordova:false */
/* globals window */
@@ -20,358 +8,322 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
var exec = cordova.require('cordova/exec');
-var PushNotification = function () {
- /**
- * PushNotification constructor.
- *
- * @param {Object} options to initiate Push Notifications.
- * @return {PushNotification} instance that can be monitored and cancelled.
- */
- function PushNotification(options) {
- var _this = this;
-
- _classCallCheck(this, PushNotification);
+/**
+ * PushNotification constructor.
+ *
+ * @param {Object} options to initiate Push Notifications.
+ * @return {PushNotification} instance that can be monitored and cancelled.
+ */
- this.handlers = {
- registration: [],
- notification: [],
- error: []
+var PushNotification = function(options) {
+ this._handlers = {
+ 'registration': [],
+ 'notification': [],
+ 'error': []
};
// require options parameter
if (typeof options === 'undefined') {
- throw new Error('The options argument is required.');
+ throw new Error('The options argument is required.');
}
// store the options to this object instance
this.options = options;
// triggered on registration and notification
- var success = function success(result) {
- if (result && typeof result.registrationId !== 'undefined') {
- _this.emit('registration', result);
- } else if (result && result.additionalData && typeof result.additionalData.actionCallback !== 'undefined') {
- var executeFuctionOrEmitEventByName = function executeFuctionOrEmitEventByName(functionName, context) {
- for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
- args[_key - 2] = arguments[_key];
- }
+ var that = this;
+ var success = function(result) {
+ if (result && typeof result.registrationId !== 'undefined') {
+ that.emit('registration', result);
+ } else if (result && result.additionalData && typeof result.additionalData.actionCallback !== 'undefined') {
+ var executeFuctionOrEmitEventByName = function(callbackName, context, arg) {
+ var namespaces = callbackName.split('.');
+ var func = namespaces.pop();
+ for (var i = 0; i < namespaces.length; i++) {
+ context = context[namespaces[i]];
+ }
- var namespaces = functionName.split('.');
- var func = namespaces.pop();
- for (var i = 0; i < namespaces.length; i++) {
- context = context[namespaces[i]];
- }
+ if (typeof context[func] === 'function') {
+ context[func].call(context, arg);
+ } else {
+ that.emit(callbackName, arg);
+ }
+ };
- if (typeof context[func] === 'function') {
- context[func].call(context, args);
- } else {
- _this.emit(functionName, args);
- }
- };
-
- executeFuctionOrEmitEventByName(result.additionalData.actionCallback, window, result);
- } else if (result) {
- _this.emit('notification', result);
- }
+ executeFuctionOrEmitEventByName(result.additionalData.actionCallback, window, result);
+ } else if (result) {
+ that.emit('notification', result);
+ }
};
// triggered on error
- var fail = function fail(msg) {
- var e = typeof msg === 'string' ? new Error(msg) : msg;
- _this.emit('error', e);
+ var fail = function(msg) {
+ var e = (typeof msg === 'string') ? new Error(msg) : msg;
+ that.emit('error', e);
};
// wait at least one process tick to allow event subscriptions
- setTimeout(function () {
- exec(success, fail, 'PushNotification', 'init', [options]);
+ setTimeout(function() {
+ exec(success, fail, 'PushNotification', 'init', [options]);
}, 10);
- }
-
- /**
- * Unregister from push notifications
- */
-
+};
- _createClass(PushNotification, [{
- key: 'unregister',
- value: function unregister(successCallback) {
- var _this2 = this;
+/**
+ * Unregister from push notifications
+ */
- var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
- var options = arguments[2];
+PushNotification.prototype.unregister = function(successCallback, errorCallback, options) {
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof errorCallback !== 'function') {
+ if (typeof errorCallback !== 'function') {
console.log('PushNotification.unregister failure: failure parameter not a function');
return;
- }
+ }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.unregister failure: success callback parameter ' + ' must be a function');
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.unregister failure: success callback parameter must be a function');
return;
- }
+ }
- var cleanHandlersAndPassThrough = function cleanHandlersAndPassThrough() {
+ var that = this;
+ var cleanHandlersAndPassThrough = function() {
if (!options) {
- _this2.handlers = {
- registration: [],
- notification: [],
- error: []
- };
+ that._handlers = {
+ 'registration': [],
+ 'notification': [],
+ 'error': []
+ };
}
successCallback();
- };
-
- exec(cleanHandlersAndPassThrough, errorCallback, 'PushNotification', 'unregister', [options]);
- }
+ };
- /**
- * subscribe to a topic
- * @param {String} topic topic to subscribe
- * @param {Function} successCallback success callback
- * @param {Function} errorCallback error callback
- * @return {void}
- */
+ exec(cleanHandlersAndPassThrough, errorCallback, 'PushNotification', 'unregister', [options]);
+};
- }, {
- key: 'subscribe',
- value: function subscribe(topic, successCallback) {
- var errorCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
+/**
+ * subscribe to a topic
+ * @param {String} topic topic to subscribe
+ * @param {Function} successCallback success callback
+ * @param {Function} errorCallback error callback
+ * @return {void}
+ */
+PushNotification.prototype.subscribe = function(topic, successCallback, errorCallback) {
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.subscribe failure: ' + 'failure parameter not a function');
+ if (typeof errorCallback !== 'function') {
+ console.log('PushNotification.subscribe failure: failure parameter not a function');
return;
- }
+ }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.subscribe failure: ' + 'success callback parameter must be a function');
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.subscribe failure: success callback parameter must be a function');
return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'subscribe', [topic]);
}
- /**
- * unsubscribe to a topic
- * @param {String} topic topic to unsubscribe
- * @param {Function} successCallback success callback
- * @param {Function} errorCallback error callback
- * @return {void}
- */
+ exec(successCallback, errorCallback, 'PushNotification', 'subscribe', [topic]);
+};
- }, {
- key: 'unsubscribe',
- value: function unsubscribe(topic, successCallback) {
- var errorCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
+/**
+ * unsubscribe to a topic
+ * @param {String} topic topic to unsubscribe
+ * @param {Function} successCallback success callback
+ * @param {Function} errorCallback error callback
+ * @return {void}
+ */
+PushNotification.prototype.unsubscribe = function(topic, successCallback, errorCallback) {
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof errorCallback !== 'function') {
+ if (typeof errorCallback !== 'function') {
console.log('PushNotification.unsubscribe failure: failure parameter not a function');
return;
- }
+ }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.unsubscribe failure: ' + 'success callback parameter must be a function');
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.unsubscribe failure: success callback parameter must be a function');
return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'unsubscribe', [topic]);
}
- /**
- * Call this to set the application icon badge
- */
+ exec(successCallback, errorCallback, 'PushNotification', 'unsubscribe', [topic]);
+};
- }, {
- key: 'setApplicationIconBadgeNumber',
- value: function setApplicationIconBadgeNumber(successCallback) {
- var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
- var badge = arguments[2];
+/**
+ * Call this to set the application icon badge
+ */
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.setApplicationIconBadgeNumber failure: failure ' + 'parameter not a function');
- return;
- }
+PushNotification.prototype.setApplicationIconBadgeNumber = function(successCallback, errorCallback, badge) {
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.setApplicationIconBadgeNumber failure: success ' + 'callback parameter must be a function');
+ if (typeof errorCallback !== 'function') {
+ console.log('PushNotification.setApplicationIconBadgeNumber failure: failure parameter not a function');
return;
- }
+ }
- exec(successCallback, errorCallback, 'PushNotification', 'setApplicationIconBadgeNumber', [{ badge: badge }]);
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.setApplicationIconBadgeNumber failure: success callback parameter must be a function');
+ return;
}
- /**
- * Get the application icon badge
- */
+ exec(successCallback, errorCallback, 'PushNotification', 'setApplicationIconBadgeNumber', [{badge: badge}]);
+};
- }, {
- key: 'getApplicationIconBadgeNumber',
- value: function getApplicationIconBadgeNumber(successCallback) {
- var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
+/**
+ * Get the application icon badge
+ */
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.getApplicationIconBadgeNumber failure: failure ' + 'parameter not a function');
- return;
- }
+PushNotification.prototype.getApplicationIconBadgeNumber = function(successCallback, errorCallback) {
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.getApplicationIconBadgeNumber failure: success ' + 'callback parameter must be a function');
+ if (typeof errorCallback !== 'function') {
+ console.log('PushNotification.getApplicationIconBadgeNumber failure: failure parameter not a function');
return;
- }
+ }
- exec(successCallback, errorCallback, 'PushNotification', 'getApplicationIconBadgeNumber', []);
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.getApplicationIconBadgeNumber failure: success callback parameter must be a function');
+ return;
}
- /**
- * Clear all notifications
- */
+ exec(successCallback, errorCallback, 'PushNotification', 'getApplicationIconBadgeNumber', []);
+};
- }, {
- key: 'clearAllNotifications',
- value: function clearAllNotifications() {
- var successCallback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
- var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
+/**
+ * Get the application icon badge
+ */
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.clearAllNotifications failure: failure parameter ' + 'not a function');
- return;
- }
+PushNotification.prototype.clearAllNotifications = function(successCallback, errorCallback) {
+ if (!successCallback) { successCallback = function() {}; }
+ if (!errorCallback) { errorCallback = function() {}; }
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.clearAllNotifications failure: success callback ' + 'parameter must be a function');
+ if (typeof errorCallback !== 'function') {
+ console.log('PushNotification.clearAllNotifications failure: failure parameter not a function');
return;
- }
+ }
- exec(successCallback, errorCallback, 'PushNotification', 'clearAllNotifications', []);
+ if (typeof successCallback !== 'function') {
+ console.log('PushNotification.clearAllNotifications failure: success callback parameter must be a function');
+ return;
}
- /**
- * Listen for an event.
- *
- * The following events are supported:
- *
- * - registration
- * - notification
- * - error
- *
- * @param {String} eventName to subscribe to.
- * @param {Function} callback triggered on the event.
- */
- }, {
- key: 'on',
- value: function on(eventName, callback) {
- if (!this.handlers.hasOwnProperty(eventName)) {
- this.handlers[eventName] = [];
- }
- this.handlers[eventName].push(callback);
+ exec(successCallback, errorCallback, 'PushNotification', 'clearAllNotifications', []);
+};
+
+/**
+ * Listen for an event.
+ *
+ * Any event is supported, but the following are built-in:
+ *
+ * - registration
+ * - notification
+ * - error
+ *
+ * @param {String} eventName to subscribe to.
+ * @param {Function} callback triggered on the event.
+ */
+
+PushNotification.prototype.on = function(eventName, callback) {
+ if (!this._handlers.hasOwnProperty(eventName)) {
+ this._handlers[eventName] = [];
}
+ this._handlers[eventName].push(callback);
+};
- /**
- * Remove event listener.
- *
- * @param {String} eventName to match subscription.
- * @param {Function} handle function associated with event.
- */
+/**
+ * Remove event listener.
+ *
+ * @param {String} eventName to match subscription.
+ * @param {Function} handle function associated with event.
+ */
- }, {
- key: 'off',
- value: function off(eventName, handle) {
- if (this.handlers.hasOwnProperty(eventName)) {
- var handleIndex = this.handlers[eventName].indexOf(handle);
+PushNotification.prototype.off = function (eventName, handle) {
+ if (this._handlers.hasOwnProperty(eventName)) {
+ var handleIndex = this._handlers[eventName].indexOf(handle);
if (handleIndex >= 0) {
- this.handlers[eventName].splice(handleIndex, 1);
+ this._handlers[eventName].splice(handleIndex, 1);
}
- }
}
+};
- /**
- * Emit an event.
- *
- * This is intended for internal use only.
- *
- * @param {String} eventName is the event to trigger.
- * @param {*} all arguments are passed to the event listeners.
- *
- * @return {Boolean} is true when the event is triggered otherwise false.
- */
-
- }, {
- key: 'emit',
- value: function emit() {
- for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
- args[_key2] = arguments[_key2];
- }
+/**
+ * Emit an event.
+ *
+ * This is intended for internal use only.
+ *
+ * @param {String} eventName is the event to trigger.
+ * @param {*} all arguments are passed to the event listeners.
+ *
+ * @return {Boolean} is true when the event is triggered otherwise false.
+ */
- var eventName = args.shift();
+PushNotification.prototype.emit = function() {
+ var args = Array.prototype.slice.call(arguments);
+ var eventName = args.shift();
- if (!this.handlers.hasOwnProperty(eventName)) {
+ if (!this._handlers.hasOwnProperty(eventName)) {
return false;
- }
+ }
- for (var i = 0, length = this.handlers[eventName].length; i < length; i++) {
- var callback = this.handlers[eventName][i];
+ for (var i = 0, length = this._handlers[eventName].length; i < length; i++) {
+ var callback = this._handlers[eventName][i];
if (typeof callback === 'function') {
- callback.apply(undefined, args);
+ callback.apply(undefined,args);
} else {
- console.log('event handler: ' + eventName + ' must be a function');
+ console.log('event handler: ' + eventName + ' must be a function');
}
- }
-
- return true;
}
- }, {
- key: 'finish',
- value: function finish() {
- var successCallback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
- var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
- var id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'handler';
- if (typeof successCallback !== 'function') {
+ return true;
+};
+
+PushNotification.prototype.finish = function(successCallback, errorCallback, id) {
+ if (!successCallback) { successCallback = function() {}; }
+ if (!errorCallback) { errorCallback = function() {}; }
+ if (!id) { id = 'handler'; }
+
+ if (typeof successCallback !== 'function') {
console.log('finish failure: success callback parameter must be a function');
return;
- }
+ }
- if (typeof errorCallback !== 'function') {
+ if (typeof errorCallback !== 'function') {
console.log('finish failure: failure parameter not a function');
return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'finish', [id]);
}
- }]);
- return PushNotification;
-}();
+ exec(successCallback, errorCallback, 'PushNotification', 'finish', [id]);
+};
/*!
* Push Notification Plugin.
*/
module.exports = {
- /**
- * Register for Push Notifications.
- *
- * This method will instantiate a new copy of the PushNotification object
- * and start the registration process.
- *
- * @param {Object} options
- * @return {PushNotification} instance
- */
+ /**
+ * Register for Push Notifications.
+ *
+ * This method will instantiate a new copy of the PushNotification object
+ * and start the registration process.
+ *
+ * @param {Object} options
+ * @return {PushNotification} instance
+ */
+
+ init: function(options) {
+ return new PushNotification(options);
+ },
- init: function init(options) {
- return new PushNotification(options);
- },
+ hasPermission: function(successCallback, errorCallback) {
+ exec(successCallback, errorCallback, 'PushNotification', 'hasPermission', []);
+ },
- hasPermission: function hasPermission(successCallback, errorCallback) {
- exec(successCallback, errorCallback, 'PushNotification', 'hasPermission', []);
- },
+ /**
+ * PushNotification Object.
+ *
+ * Expose the PushNotification object for direct use
+ * and testing. Typically, you should use the
+ * .init helper method.
+ */
- /**
- * PushNotification Object.
- *
- * Expose the PushNotification object for direct use
- * and testing. Typically, you should use the
- * .init helper method.
- */
- PushNotification: PushNotification
+ PushNotification: PushNotification
};
+
});
diff --git a/StoneIsland/platforms/android/project.properties b/StoneIsland/platforms/android/project.properties
index 0a077db0..6936daa2 100755
--- a/StoneIsland/platforms/android/project.properties
+++ b/StoneIsland/platforms/android/project.properties
@@ -11,8 +11,8 @@
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
target=android-25
-cordova.gradle.include.1=phonegap-plugin-push/stoneisland-push.gradle
-cordova.system.library.1=com.android.support:support-v13:25.1.0
-cordova.system.library.2=me.leolin:ShortcutBadger:1.1.17@aar
-cordova.system.library.3=com.google.firebase:firebase-messaging:11.0.1
android.library.reference.1=CordovaLib
+cordova.gradle.include.1=phonegap-plugin-push/stoneisland-push.gradle
+cordova.system.library.1=com.android.support:support-v13:23+
+cordova.system.library.2=com.google.android.gms:play-services-gcm:9.8+
+cordova.system.library.3=me.leolin:ShortcutBadger:1.1.11@aar \ No newline at end of file
diff --git a/StoneIsland/platforms/android/res/values/strings.xml b/StoneIsland/platforms/android/res/values/strings.xml
index bd922fe9..4a48baa7 100755
--- a/StoneIsland/platforms/android/res/values/strings.xml
+++ b/StoneIsland/platforms/android/res/values/strings.xml
@@ -3,4 +3,5 @@
<string name="app_name">Stone Island</string>
<string name="launcher_name">@string/app_name</string>
<string name="activity_name">@string/launcher_name</string>
+ <string name="google_app_id">85075801930</string>
</resources>
diff --git a/StoneIsland/platforms/android/res/xml/config.xml b/StoneIsland/platforms/android/res/xml/config.xml
index 549366ea..9f4cb684 100644
--- a/StoneIsland/platforms/android/res/xml/config.xml
+++ b/StoneIsland/platforms/android/res/xml/config.xml
@@ -22,10 +22,6 @@
<feature name="Notification">
<param name="android-package" value="org.apache.cordova.dialogs.Notification" />
</feature>
- <feature name="SplashScreen">
- <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" />
- <param name="onload" value="true" />
- </feature>
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.geolocation.Geolocation" />
</feature>
@@ -71,6 +67,10 @@
<preference name="AllowInlineMediaPlayback" value="true" />
<preference name="AndroidLaunchMode" value="singleTop" />
<preference name="android-minSdkVersion" value="21" />
+ <feature name="SplashScreen">
+ <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" />
+ <param name="onload" value="true" />
+ </feature>
<feature name="PushNotification">
<param name="android-package" value="com.adobe.phonegap.push.PushPlugin" />
</feature>
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/BackgroundActionButtonHandler.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/BackgroundActionButtonHandler.java
index 4456f525..3ccea6cb 100644
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/BackgroundActionButtonHandler.java
+++ b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/BackgroundActionButtonHandler.java
@@ -9,7 +9,7 @@ import android.util.Log;
import android.support.v4.app.RemoteInput;
public class BackgroundActionButtonHandler extends BroadcastReceiver implements PushConstants {
- private static String LOG_TAG = "Push_BGActionButton";
+ private static String LOG_TAG = "PushPlugin_BackgroundActionButtonHandler";
@Override
public void onReceive(Context context, Intent intent) {
@@ -19,7 +19,7 @@ public class BackgroundActionButtonHandler extends BroadcastReceiver implements
int notId = intent.getIntExtra(NOT_ID, 0);
Log.d(LOG_TAG, "not id = " + notId);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.cancel(FCMService.getAppName(context), notId);
+ notificationManager.cancel(GCMIntentService.getAppName(context), notId);
if (extras != null) {
Bundle originalExtras = extras.getBundle(PUSH_BUNDLE);
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/FCMService.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/GCMIntentService.java
index af328fb2..e1a2b75c 100644
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/FCMService.java
+++ b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/GCMIntentService.java
@@ -13,23 +13,17 @@ import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffXfermode;
-import android.graphics.Rect;
-import android.graphics.RectF;
-import android.graphics.Paint;
-import android.graphics.Canvas;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.NotificationManagerCompat;
import android.support.v4.app.NotificationCompat.WearableExtender;
import android.support.v4.app.RemoteInput;
import android.text.Html;
import android.text.Spanned;
import android.util.Log;
-import com.google.firebase.messaging.FirebaseMessagingService;
-import com.google.firebase.messaging.RemoteMessage;
+import com.google.android.gms.gcm.GcmListenerService;
import org.json.JSONArray;
import org.json.JSONException;
@@ -42,13 +36,12 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
-import java.util.Map;
import java.util.Random;
@SuppressLint("NewApi")
-public class FCMService extends FirebaseMessagingService implements PushConstants {
+public class GCMIntentService extends GcmListenerService implements PushConstants {
- private static final String LOG_TAG = "Push_FCMService";
+ private static final String LOG_TAG = "PushPlugin_GCMIntentService";
private static HashMap<Integer, ArrayList<String>> messageMap = new HashMap<Integer, ArrayList<String>>();
public void setNotification(int notId, String message){
@@ -66,31 +59,17 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
}
@Override
- public void onMessageReceived(RemoteMessage message){
-
- String from = message.getFrom();
+ public void onMessageReceived(String from, Bundle extras) {
Log.d(LOG_TAG, "onMessage - from: " + from);
- Bundle extras = new Bundle();
-
- if (message.getNotification()!=null) {
- extras.putString(TITLE,message.getNotification().getTitle());
- extras.putString(MESSAGE,message.getNotification().getBody());
- }
- for (Map.Entry<String, String> entry : message.getData().entrySet()) {
- extras.putString(entry.getKey(), entry.getValue());
- }
-
- if (extras != null && isAvailableSender(from)) {
+ if (extras != null) {
Context applicationContext = getApplicationContext();
SharedPreferences prefs = applicationContext.getSharedPreferences(PushPlugin.COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
boolean forceShow = prefs.getBoolean(FORCE_SHOW, false);
boolean clearBadge = prefs.getBoolean(CLEAR_BADGE, false);
- String messageKey = prefs.getString(MESSAGE_KEY, MESSAGE);
- String titleKey = prefs.getString(TITLE_KEY, TITLE);
- extras = normalizeExtras(applicationContext, extras, messageKey, titleKey);
+ extras = normalizeExtras(applicationContext, extras);
if (clearBadge) {
PushPlugin.setApplicationIconBadgeNumber(getApplicationContext(), 0);
@@ -188,10 +167,10 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
/*
* Replace alternate keys with our canonical value
*/
- private String normalizeKey(String key, String messageKey, String titleKey) {
- if (key.equals(BODY) || key.equals(ALERT) || key.equals(MP_MESSAGE) || key.equals(GCM_NOTIFICATION_BODY) || key.equals(TWILIO_BODY) || key.equals(messageKey)) {
+ private String normalizeKey(String key) {
+ if (key.equals(BODY) || key.equals(ALERT) || key.equals(GCM_NOTIFICATION_BODY) || key.equals(TWILIO_BODY)) {
return MESSAGE;
- } else if (key.equals(TWILIO_TITLE) || key.equals(SUBJECT) || key.equals(titleKey)) {
+ } else if (key.equals(TWILIO_TITLE)) {
return TITLE;
}else if (key.equals(MSGCNT) || key.equals(BADGE)) {
return COUNT;
@@ -212,7 +191,7 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
/*
* Parse bundle into normalized keys.
*/
- private Bundle normalizeExtras(Context context, Bundle extras, String messageKey, String titleKey) {
+ private Bundle normalizeExtras(Context context, Bundle extras) {
Log.d(LOG_TAG, "normalize extras");
Iterator<String> it = extras.keySet().iterator();
Bundle newExtras = new Bundle();
@@ -224,7 +203,7 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
// If normalizeKeythe key is "data" or "message" and the value is a json object extract
// This is to support parse.com and other services. Issue #147 and pull #218
- if (key.equals(PARSE_COM_DATA) || key.equals(MESSAGE) || key.equals(messageKey)) {
+ if (key.equals(PARSE_COM_DATA) || key.equals(MESSAGE)) {
Object json = extras.get(key);
// Make sure data is json object stringified
if ( json instanceof String && ((String) json).startsWith("{") ) {
@@ -232,8 +211,7 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
try {
// If object contains message keys promote each value to the root of the bundle
JSONObject data = new JSONObject((String) json);
- if ( data.has(ALERT) || data.has(MESSAGE) || data.has(BODY) || data.has(TITLE) ||
- data.has(messageKey) || data.has(titleKey) ) {
+ if ( data.has(ALERT) || data.has(MESSAGE) || data.has(BODY) || data.has(TITLE) ) {
Iterator<String> jsonIter = data.keys();
while (jsonIter.hasNext()) {
String jsonKey = jsonIter.next();
@@ -241,7 +219,7 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
Log.d(LOG_TAG, "key = data/" + jsonKey);
String value = data.getString(jsonKey);
- jsonKey = normalizeKey(jsonKey, messageKey, titleKey);
+ jsonKey = normalizeKey(jsonKey);
value = localizeKey(context, jsonKey, value);
newExtras.putString(jsonKey, value);
@@ -250,10 +228,6 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
} catch( JSONException e) {
Log.e(LOG_TAG, "normalizeExtras: JSON exception");
}
- } else {
- String newKey = normalizeKey(key, messageKey, titleKey);
- Log.d(LOG_TAG, "replace key " + key + " with " + newKey);
- replaceKey(context, key, newKey, extras, newExtras);
}
} else if (key.equals(("notification"))) {
Bundle value = extras.getBundle(key);
@@ -262,7 +236,7 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
String notifkey = iterator.next();
Log.d(LOG_TAG, "notifkey = " + notifkey);
- String newKey = normalizeKey(notifkey, messageKey, titleKey);
+ String newKey = normalizeKey(notifkey);
Log.d(LOG_TAG, "replace key " + notifkey + " with " + newKey);
String valueData = value.getString(notifkey);
@@ -271,17 +245,12 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
newExtras.putString(newKey, valueData);
}
continue;
- // In case we weren't working on the payload data node or the notification node,
- // normalize the key.
- // This allows to have "message" as the payload data key without colliding
- // with the other "message" key (holding the body of the payload)
- // See issue #1663
- } else {
- String newKey = normalizeKey(key, messageKey, titleKey);
- Log.d(LOG_TAG, "replace key " + key + " with " + newKey);
- replaceKey(context, key, newKey, extras, newExtras);
}
+ String newKey = normalizeKey(key);
+ Log.d(LOG_TAG, "replace key " + key + " with " + newKey);
+ replaceKey(context, key, newKey, extras, newExtras);
+
} // while
return newExtras;
@@ -332,15 +301,15 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
createNotification(context, extras);
}
- if(!PushPlugin.isActive() && "1".equals(forceStart)){
+ if(!PushPlugin.isActive() && "1".equals(forceStart)){
Log.d(LOG_TAG, "app is not running but we should start it and put in background");
- Intent intent = new Intent(this, PushHandlerActivity.class);
+ Intent intent = new Intent(this, PushHandlerActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(PUSH_BUNDLE, extras);
- intent.putExtra(START_IN_BACKGROUND, true);
+ intent.putExtra(START_IN_BACKGROUND, true);
intent.putExtra(FOREGROUND, false);
startActivity(intent);
- } else if ("1".equals(contentAvailable)) {
+ } else if ("1".equals(contentAvailable)) {
Log.d(LOG_TAG, "app is not running and content available true");
Log.d(LOG_TAG, "send notification event");
PushPlugin.sendExtras(extras);
@@ -362,22 +331,12 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
int requestCode = new Random().nextInt();
PendingIntent contentIntent = PendingIntent.getActivity(this, requestCode, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
- Intent dismissedNotificationIntent = new Intent(this, PushDismissedHandler.class);
- dismissedNotificationIntent.putExtra(PUSH_BUNDLE, extras);
- dismissedNotificationIntent.putExtra(NOT_ID, notId);
- dismissedNotificationIntent.putExtra(DISMISSED, true);
- dismissedNotificationIntent.setAction(PUSH_DISMISSED);
-
- requestCode = new Random().nextInt();
- PendingIntent deleteIntent = PendingIntent.getBroadcast(this, requestCode, dismissedNotificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
-
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setWhen(System.currentTimeMillis())
.setContentTitle(fromHtml(extras.getString(TITLE)))
.setTicker(fromHtml(extras.getString(TITLE)))
.setContentIntent(contentIntent)
- .setDeleteIntent(deleteIntent)
.setAutoCancel(true);
SharedPreferences prefs = context.getSharedPreferences(PushPlugin.COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
@@ -731,46 +690,11 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
}
}
- private Bitmap getCircleBitmap(Bitmap bitmap) {
- if (bitmap == null) {
- return null;
- }
-
- final Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
- final Canvas canvas = new Canvas(output);
- final int color = Color.RED;
- final Paint paint = new Paint();
- final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
- final RectF rectF = new RectF(rect);
-
- paint.setAntiAlias(true);
- canvas.drawARGB(0, 0, 0, 0);
- paint.setColor(color);
- float cx = bitmap.getWidth()/2;
- float cy = bitmap.getHeight()/2;
- float radius = cx < cy ? cx : cy;
- canvas.drawCircle(cx,cy,radius,paint);
-
- paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
- canvas.drawBitmap(bitmap, rect, rect, paint);
-
- bitmap.recycle();
-
- return output;
- }
-
private void setNotificationLargeIcon(Bundle extras, String packageName, Resources resources, NotificationCompat.Builder mBuilder) {
String gcmLargeIcon = extras.getString(IMAGE); // from gcm
- String imageType = extras.getString(IMAGE_TYPE, IMAGE_TYPE_SQUARE);
if (gcmLargeIcon != null && !"".equals(gcmLargeIcon)) {
if (gcmLargeIcon.startsWith("http://") || gcmLargeIcon.startsWith("https://")) {
- Bitmap bitmap = getBitmapFromURL(gcmLargeIcon);
- if (IMAGE_TYPE_SQUARE.equalsIgnoreCase(imageType)) {
- mBuilder.setLargeIcon(bitmap);
- } else {
- Bitmap bm = getCircleBitmap(bitmap);
- mBuilder.setLargeIcon(bm);
- }
+ mBuilder.setLargeIcon(getBitmapFromURL(gcmLargeIcon));
Log.d(LOG_TAG, "using remote large-icon from gcm");
} else {
AssetManager assetManager = getAssets();
@@ -778,12 +702,7 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
try {
istr = assetManager.open(gcmLargeIcon);
Bitmap bitmap = BitmapFactory.decodeStream(istr);
- if (IMAGE_TYPE_SQUARE.equalsIgnoreCase(imageType)) {
- mBuilder.setLargeIcon(bitmap);
- } else {
- Bitmap bm = getCircleBitmap(bitmap);
- mBuilder.setLargeIcon(bm);
- }
+ mBuilder.setLargeIcon(bitmap);
Log.d(LOG_TAG, "using assets large-icon from gcm");
} catch (IOException e) {
int largeIconId = 0;
@@ -843,7 +762,6 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
try {
URL url = new URL(strURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- connection.setConnectTimeout(15000);
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
@@ -881,11 +799,4 @@ public class FCMService extends FirebaseMessagingService implements PushConstant
else
return null;
}
-
- private boolean isAvailableSender(String from) {
- SharedPreferences sharedPref = getApplicationContext().getSharedPreferences(PushPlugin.COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
- String savedSenderID = sharedPref.getString(SENDER_ID, "");
-
- return from.equals(savedSenderID) || from.startsWith("/topics/");
- }
}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PermissionUtils.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PermissionUtils.java
index 41bc6a6f..6aa5c9bf 100644
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PermissionUtils.java
+++ b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PermissionUtils.java
@@ -10,12 +10,8 @@ import java.lang.reflect.Method;
public class PermissionUtils {
private static final String CHECK_OP_NO_THROW = "checkOpNoThrow";
- private static final int MIN_API_LEVEL = 19; // required by AppOpsManager
public static boolean hasPermission(Context appContext, String appOpsServiceId) throws UnknownError {
- if (android.os.Build.VERSION.SDK_INT < MIN_API_LEVEL) {
- return true;
- }
ApplicationInfo appInfo = appContext.getApplicationInfo();
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushConstants.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushConstants.java
index e3aa217c..37874e04 100644
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushConstants.java
+++ b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushConstants.java
@@ -3,7 +3,6 @@ package com.adobe.phonegap.push;
public interface PushConstants {
public static final String COM_ADOBE_PHONEGAP_PUSH = "com.adobe.phonegap.push";
public static final String REGISTRATION_ID = "registrationId";
- public static final String REGISTRATION_TYPE = "registrationType";
public static final String FOREGROUND = "foreground";
public static final String TITLE = "title";
public static final String NOT_ID = "notId";
@@ -56,11 +55,10 @@ public interface PushConstants {
public static final String FROM = "from";
public static final String COLLAPSE_KEY = "collapse_key";
public static final String FORCE_SHOW = "forceShow";
- public static final String FCM = "FCM";
+ public static final String GCM = "GCM";
public static final String CONTENT_AVAILABLE = "content-available";
public static final String TOPICS = "topics";
public static final String SET_APPLICATION_ICON_BADGE_NUMBER = "setApplicationIconBadgeNumber";
- public static final String GET_APPLICATION_ICON_BADGE_NUMBER = "getApplicationIconBadgeNumber";
public static final String CLEAR_ALL_NOTIFICATIONS = "clearAllNotifications";
public static final String VISIBILITY = "visibility";
public static final String INLINE_REPLY = "inlineReply";
@@ -69,18 +67,6 @@ public interface PushConstants {
public static final String TWILIO_BODY = "twi_body";
public static final String TWILIO_TITLE = "twi_title";
public static final String TWILIO_SOUND = "twi_sound";
- public static final String MP_MESSAGE = "mp_message";
public static final String START_IN_BACKGROUND = "cdvStartInBackground";
public static final String FORCE_START = "force-start";
- public static final String MESSAGE_KEY = "messageKey";
- public static final String TITLE_KEY = "titleKey";
- public static final String NO_CACHE = "no-cache";
- public static final String DISMISSED = "dismissed";
- public static final String IMAGE_TYPE = "image-type";
- public static final String IMAGE_TYPE_SQUARE = "square";
- public static final String IMAGE_TYPE_CIRCLE = "circle";
- public static final String SUBJECT = "subject";
- public static final String GOOGLE_APP_ID = "google_app_id";
- public static final String GCM_DEFAULT_SENDER_ID = "gcm_defaultSenderId";
- public static final String PUSH_DISMISSED = "push_dismissed";
}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushDismissedHandler.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushDismissedHandler.java
deleted file mode 100644
index a517bc1e..00000000
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushDismissedHandler.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.adobe.phonegap.push;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-
-public class PushDismissedHandler extends BroadcastReceiver implements PushConstants {
- private static String LOG_TAG = "Push_DismissedHandler";
-
- @Override
- public void onReceive(Context context, Intent intent) {
- Bundle extras = intent.getExtras();
- FCMService fcm = new FCMService();
- String action = intent.getAction();
- int notID = intent.getIntExtra(NOT_ID, 0);
-
- if (action.equals(PUSH_DISMISSED)) {
- Log.d(LOG_TAG, "PushDismissedHandler = " + extras);
- Log.d(LOG_TAG, "not id = " + notID);
-
- fcm.setNotification(notID, "");
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushHandlerActivity.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushHandlerActivity.java
index 0d399a61..23682ac8 100644
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushHandlerActivity.java
+++ b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushHandlerActivity.java
@@ -11,7 +11,7 @@ import android.support.v4.app.RemoteInput;
public class PushHandlerActivity extends Activity implements PushConstants {
- private static String LOG_TAG = "Push_HandlerActivity";
+ private static String LOG_TAG = "PushPlugin_PushHandlerActivity";
/*
* this activity will be started if the user touches a notification that we own.
@@ -21,7 +21,7 @@ public class PushHandlerActivity extends Activity implements PushConstants {
*/
@Override
public void onCreate(Bundle savedInstanceState) {
- FCMService gcm = new FCMService();
+ GCMIntentService gcm = new GCMIntentService();
Intent intent = getIntent();
@@ -34,18 +34,16 @@ public class PushHandlerActivity extends Activity implements PushConstants {
Log.d(LOG_TAG, "callback = " + callback);
boolean foreground = getIntent().getExtras().getBoolean("foreground", true);
boolean startOnBackground = getIntent().getExtras().getBoolean(START_IN_BACKGROUND, false);
- boolean dismissed = getIntent().getExtras().getBoolean(DISMISSED, false);
- Log.d(LOG_TAG, "dismissed = " + dismissed);
if(!startOnBackground){
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.cancel(FCMService.getAppName(this), notId);
+ notificationManager.cancel(GCMIntentService.getAppName(this), notId);
}
boolean isPushPluginActive = PushPlugin.isActive();
boolean inline = processPushBundle(isPushPluginActive, intent);
- if(inline && android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N && !startOnBackground){
+ if(inline && android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N){
foreground = true;
}
@@ -53,17 +51,15 @@ public class PushHandlerActivity extends Activity implements PushConstants {
finish();
- if(!dismissed) {
- Log.d(LOG_TAG, "isPushPluginActive = " + isPushPluginActive);
- if (!isPushPluginActive && foreground && inline) {
- Log.d(LOG_TAG, "forceMainActivityReload");
- forceMainActivityReload(false);
- } else if(startOnBackground) {
- Log.d(LOG_TAG, "startOnBackgroundTrue");
- forceMainActivityReload(true);
- } else {
- Log.d(LOG_TAG, "don't want main activity");
- }
+ Log.d(LOG_TAG, "isPushPluginActive = " + isPushPluginActive);
+ if (!isPushPluginActive && foreground && inline) {
+ Log.d(LOG_TAG, "forceMainActivityReload");
+ forceMainActivityReload(false);
+ } else if(startOnBackground) {
+ Log.d(LOG_TAG, "startOnBackgroundTrue");
+ forceMainActivityReload(true);
+ } else {
+ Log.d(LOG_TAG, "don't want main activity");
}
}
@@ -80,9 +76,7 @@ public class PushHandlerActivity extends Activity implements PushConstants {
originalExtras.putBoolean(FOREGROUND, false);
originalExtras.putBoolean(COLDSTART, !isPushPluginActive);
- originalExtras.putBoolean(DISMISSED, extras.getBoolean(DISMISSED));
originalExtras.putString(ACTION_CALLBACK, extras.getString(CALLBACK));
- originalExtras.remove(NO_CACHE);
remoteInput = RemoteInput.getResultsFromIntent(intent);
if (remoteInput != null) {
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushInstanceIDListenerService.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushInstanceIDListenerService.java
index 176b7419..eaa39a48 100644
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushInstanceIDListenerService.java
+++ b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushInstanceIDListenerService.java
@@ -5,22 +5,23 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
-import com.google.firebase.iid.FirebaseInstanceId;
-import com.google.firebase.iid.FirebaseInstanceIdService;
+import com.google.android.gms.iid.InstanceID;
+import com.google.android.gms.iid.InstanceIDListenerService;
import org.json.JSONException;
import java.io.IOException;
-public class PushInstanceIDListenerService extends FirebaseInstanceIdService implements PushConstants {
- public static final String LOG_TAG = "Push_InsIdService";
+public class PushInstanceIDListenerService extends InstanceIDListenerService implements PushConstants {
+ public static final String LOG_TAG = "PushPlugin_PushInstanceIDListenerService";
@Override
public void onTokenRefresh() {
- // 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);
+ 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);
+ }
}
}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushPlugin.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushPlugin.java
index 32f72bf3..f6faaa2b 100644
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushPlugin.java
+++ b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushPlugin.java
@@ -1,14 +1,13 @@
package com.adobe.phonegap.push;
-import android.app.Activity;
import android.app.NotificationManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
-import com.google.firebase.iid.FirebaseInstanceId;
-import com.google.firebase.messaging.FirebaseMessaging;
+import com.google.android.gms.gcm.GcmPubSub;
+import com.google.android.gms.iid.InstanceID;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
@@ -30,7 +29,7 @@ import me.leolin.shortcutbadger.ShortcutBadger;
public class PushPlugin extends CordovaPlugin implements PushConstants {
- public static final String LOG_TAG = "Push_Plugin";
+ public static final String LOG_TAG = "PushPlugin";
private static CallbackContext pushContext;
private static CordovaWebView gWebView;
@@ -60,7 +59,6 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
Log.v(LOG_TAG, "execute: data=" + data.toString());
SharedPreferences sharedPref = getApplicationContext().getSharedPreferences(COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
- String token = null;
String senderID = null;
try {
@@ -68,19 +66,15 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
Log.v(LOG_TAG, "execute: jo=" + jo.toString());
- senderID = getStringResourceByName(GCM_DEFAULT_SENDER_ID);
+ senderID = jo.getString(SENDER_ID);
Log.v(LOG_TAG, "execute: senderID=" + senderID);
- token = FirebaseInstanceId.getInstance().getToken();
+ String savedSenderID = sharedPref.getString(SENDER_ID, "");
+ registration_id = InstanceID.getInstance(getApplicationContext()).getToken(senderID, GCM);
- if (token == null) {
- token = FirebaseInstanceId.getInstance().getToken(senderID,FCM);
- }
-
- if (!"".equals(token)) {
- JSONObject json = new JSONObject().put(REGISTRATION_ID, token);
- json.put(REGISTRATION_TYPE, FCM);
+ if (!"".equals(registration_id)) {
+ JSONObject json = new JSONObject().put(REGISTRATION_ID, registration_id);
Log.v(LOG_TAG, "onRegistered: " + json.toString());
@@ -89,14 +83,14 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
PushPlugin.sendEvent( json );
} else {
- callbackContext.error("Empty registration ID received from FCM");
+ callbackContext.error("Empty registration ID received from GCM");
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 IO Exception " + e.getMessage());
+ Log.e(LOG_TAG, "execute: Got JSON Exception " + e.getMessage());
callbackContext.error(e.getMessage());
}
@@ -124,8 +118,6 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
editor.putBoolean(CLEAR_NOTIFICATIONS, jo.optBoolean(CLEAR_NOTIFICATIONS, true));
editor.putBoolean(FORCE_SHOW, jo.optBoolean(FORCE_SHOW, false));
editor.putString(SENDER_ID, senderID);
- editor.putString(MESSAGE_KEY, jo.optString(MESSAGE_KEY));
- editor.putString(TITLE_KEY, jo.optString(TITLE_KEY));
editor.commit();
}
@@ -151,7 +143,7 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
if (topics != null && !"".equals(registration_id)) {
unsubscribeFromTopics(topics, registration_id);
} else {
- FirebaseInstanceId.getInstance().deleteInstanceId();
+ InstanceID.getInstance(getApplicationContext()).deleteInstanceID();
Log.v(LOG_TAG, "UNREGISTER");
// Remove shared prefs
@@ -202,13 +194,6 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
callbackContext.success();
}
});
- } else if (GET_APPLICATION_ICON_BADGE_NUMBER.equals(action)) {
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- Log.v(LOG_TAG, "getApplicationIconBadgeNumber");
- callbackContext.success(getApplicationIconBadgeNumber(getApplicationContext()));
- }
- });
} else if (CLEAR_ALL_NOTIFICATIONS.equals(action)) {
cordova.getThreadPool().execute(new Runnable() {
public void run() {
@@ -227,6 +212,8 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
callbackContext.success();
} catch (JSONException e) {
callbackContext.error(e.getMessage());
+ } catch (IOException e) {
+ callbackContext.error(e.getMessage());
}
}
});
@@ -240,6 +227,8 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
callbackContext.success();
} catch (JSONException e) {
callbackContext.error(e.getMessage());
+ } catch (IOException e) {
+ callbackContext.error(e.getMessage());
}
}
});
@@ -270,41 +259,25 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
/*
* Sends the pushbundle extras to the client application.
- * If the client application isn't currently active and the no-cache flag is not set, it is cached for later processing.
+ * If the client application isn't currently active, it is cached for later processing.
*/
public static void sendExtras(Bundle extras) {
if (extras != null) {
- String noCache = extras.getString(NO_CACHE);
if (gWebView != null) {
sendEvent(convertBundleToJson(extras));
- } else if(!"1".equals(noCache)){
+ } else {
Log.v(LOG_TAG, "sendExtras: caching extras to send at a later time.");
gCachedExtras.add(extras);
}
}
}
- /*
- * Retrives badge count from SharedPreferences
- */
- 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
- */
public static void setApplicationIconBadgeNumber(Context context, int badgeCount) {
if (badgeCount > 0) {
ShortcutBadger.applyCount(context, badgeCount);
- }else{
+ } else {
ShortcutBadger.removeCount(context);
}
-
- SharedPreferences.Editor editor = context.getSharedPreferences(BADGE, Context.MODE_PRIVATE).edit();
- editor.putInt(BADGE, Math.max(badgeCount, 0));
- editor.apply();
}
@Override
@@ -342,7 +315,23 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
notificationManager.cancelAll();
}
- private void subscribeToTopics(JSONArray topics, String registrationToken) {
+ /**
+ * Transform `topic name` to `topic path`
+ * Normally, the `topic` inputed from end-user is `topic name` only.
+ * We should convert them to GCM `topic path`
+ * Example:
+ * when topic name = 'my-topic'
+ * then topic path = '/topics/my-topic'
+ *
+ * @param String topic The topic name
+ * @return The topic path
+ */
+ private String getTopicPath(String topic)
+ {
+ return "/topics/" + topic;
+ }
+
+ private void subscribeToTopics(JSONArray topics, String registrationToken) throws IOException {
if (topics != null) {
String topic = null;
for (int i=0; i<topics.length(); i++) {
@@ -352,10 +341,16 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
}
}
- private void subscribeToTopic(String topic, String registrationToken) {
- if (topic != null) {
- Log.d(LOG_TAG, "Subscribing to topic: " + topic);
- FirebaseMessaging.getInstance().subscribeToTopic(topic);
+ private void subscribeToTopic(String topic, String registrationToken) throws IOException
+ {
+ try {
+ if (topic != null) {
+ Log.d(LOG_TAG, "Subscribing to topic: " + topic);
+ GcmPubSub.getInstance(getApplicationContext()).subscribe(registrationToken, getTopicPath(topic), null);
+ }
+ } catch (IOException e) {
+ Log.e(LOG_TAG, "Failed to subscribe to topic: " + topic, e);
+ throw e;
}
}
@@ -363,20 +358,29 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
if (topics != null) {
String topic = null;
for (int i=0; i<topics.length(); i++) {
- topic = topics.optString(i, null);
- unsubscribeFromTopic(topic, registrationToken);
- if (topic != null) {
- Log.d(LOG_TAG, "Unsubscribing to topic: " + topic);
- FirebaseMessaging.getInstance().unsubscribeFromTopic(topic);
+ try {
+ topic = topics.optString(i, null);
+ if (topic != null) {
+ Log.d(LOG_TAG, "Unsubscribing to topic: " + topic);
+ GcmPubSub.getInstance(getApplicationContext()).unsubscribe(registrationToken, getTopicPath(topic));
+ }
+ } catch (IOException e) {
+ Log.e(LOG_TAG, "Failed to unsubscribe to topic: " + topic, e);
}
}
}
}
- private void unsubscribeFromTopic(String topic, String registrationToken) {
- if (topic != null) {
- Log.d(LOG_TAG, "Unsubscribing to topic: " + topic);
- FirebaseMessaging.getInstance().unsubscribeFromTopic(topic);
+ private void unsubscribeFromTopic(String topic, String registrationToken) throws IOException
+ {
+ try {
+ if (topic != null) {
+ Log.d(LOG_TAG, "Unsubscribing to topic: " + topic);
+ GcmPubSub.getInstance(getApplicationContext()).unsubscribe(registrationToken, getTopicPath(topic));
+ }
+ } catch (IOException e) {
+ Log.e(LOG_TAG, "Failed to unsubscribe to topic: " + topic, e);
+ throw e;
}
}
@@ -409,9 +413,6 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
else if (key.equals(FOREGROUND)) {
additionalData.put(key, extras.getBoolean(FOREGROUND));
}
- else if (key.equals(DISMISSED)) {
- additionalData.put(key, extras.getBoolean(DISMISSED));
- }
else if ( value instanceof String ) {
String strValue = (String)value;
try {
@@ -443,13 +444,6 @@ public class PushPlugin extends CordovaPlugin implements PushConstants {
return null;
}
- private String getStringResourceByName(String aString) {
- Activity activity = cordova.getActivity();
- String packageName = activity.getPackageName();
- int resId = activity.getResources().getIdentifier(aString, "string", packageName);
- return activity.getString(resId);
- }
-
public static boolean isInForeground() {
return gForeground;
}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/RegistrationIntentService.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/RegistrationIntentService.java
new file mode 100644
index 00000000..b181e88e
--- /dev/null
+++ b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/RegistrationIntentService.java
@@ -0,0 +1,38 @@
+package com.adobe.phonegap.push;
+
+import android.content.Context;
+
+import android.app.IntentService;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.util.Log;
+
+import com.google.android.gms.gcm.GoogleCloudMessaging;
+import com.google.android.gms.iid.InstanceID;
+
+import java.io.IOException;
+
+public class RegistrationIntentService extends IntentService implements PushConstants {
+ public static final String LOG_TAG = "PushPlugin_RegistrationIntentService";
+
+ public RegistrationIntentService() {
+ super(LOG_TAG);
+ }
+
+ @Override
+ protected void onHandleIntent(Intent intent) {
+ SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
+
+ try {
+ InstanceID instanceID = InstanceID.getInstance(this);
+ String senderID = sharedPreferences.getString(SENDER_ID, "");
+ String token = instanceID.getToken(senderID,
+ GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
+ PushPlugin.setRegistrationID(token);
+ Log.i(LOG_TAG, "new GCM Registration Token: " + token);
+
+ } catch (Exception e) {
+ Log.d(LOG_TAG, "Failed to complete token refresh", e);
+ }
+ }
+}