diff --git a/src/android/MyReceiver.java b/src/android/MyReceiver.java index 764a6d5..fb79632 100644 --- a/src/android/MyReceiver.java +++ b/src/android/MyReceiver.java @@ -12,82 +12,82 @@ import android.content.Intent; import android.util.Log; public class MyReceiver extends BroadcastReceiver { - private static String TAG = "JPushPlugin"; - @Override - public void onReceive(Context context, Intent intent) { + private static String TAG = "JPushPlugin"; + private static final List IGNORED_EXTRAS_KEYS = + Arrays.asList( + "cn.jpush.android.TITLE", + "cn.jpush.android.MESSAGE", + "cn.jpush.android.APPKEY", + "cn.jpush.android.NOTIFICATION_CONTENT_TITLE" + ); - if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) { - -// }else if (JPushInterface.ACTION_UNREGISTER.equals(intent.getAction())){ - - } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) { - handlingReceivedMessage(intent); - } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) { - handlingNotificationReceive(context,intent); - - } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) { - handlingNotificationOpen(context,intent); - } else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) { - + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(action)) { + handlingReceivedMessage(intent); + } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(action)) { + handlingNotificationReceive(context, intent); + } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(action)) { + handlingNotificationOpen(context, intent); } else { - Log.d(TAG, "Unhandled intent - " + intent.getAction()); + Log.d(TAG, "Unhandled intent - " + action); } - - } - private void handlingReceivedMessage(Intent intent) { - String msg = intent.getStringExtra(JPushInterface.EXTRA_MESSAGE); - Map extras = getNotificationExtras(intent); - - - JPushPlugin.transmitPush(msg, extras); - } - private void handlingNotificationOpen(Context context,Intent intent){ - Log.i(TAG, "---------------- handlingNotificationOpen"); + } - String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT); - Map extras = getNotificationExtras(intent); - - Intent launch = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); - launch.addCategory(Intent.CATEGORY_LAUNCHER); - launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP); - JPushPlugin.openNotificationAlert = alert; - JPushPlugin.openNotificationExtras = extras; - - JPushPlugin.transmitOpen(alert, extras); + private void handlingReceivedMessage(Intent intent) { + String msg = intent.getStringExtra(JPushInterface.EXTRA_MESSAGE); + Map extras = getNotificationExtras(intent); + JPushPlugin.transmitPush(msg, extras); + } - context.startActivity(launch); - } - private void handlingNotificationReceive(Context context,Intent intent){ + private void handlingNotificationOpen(Context context, Intent intent) { + Log.i(TAG, "---------------- handlingNotificationOpen"); - Log.i(TAG, "---------------- handlingNotificationReceive"); + String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT); + JPushPlugin.openNotificationAlert = alert; + + Map extras = getNotificationExtras(intent); + JPushPlugin.openNotificationExtras = extras; + + JPushPlugin.transmitOpen(alert, extras); + + Intent launch = context.getPackageManager().getLaunchIntentForPackage( + context.getPackageName()); + launch.addCategory(Intent.CATEGORY_LAUNCHER); + launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); + context.startActivity(launch); + } + + private void handlingNotificationReceive(Context context, Intent intent) { + Log.i(TAG, "---------------- handlingNotificationReceive"); + + Intent launch = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); + launch.addCategory(Intent.CATEGORY_LAUNCHER); + launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); + + String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT); + JPushPlugin.notificationAlert = alert; + + Map extras = getNotificationExtras(intent); + JPushPlugin.notificationExtras = extras; + + JPushPlugin.transmitReceive(alert, extras); + } + + private Map getNotificationExtras(Intent intent) { + Map extrasMap = new HashMap(); + for (String key : intent.getExtras().keySet()) { + if (!IGNORED_EXTRAS_KEYS.contains(key)) { + Log.e("key", "key:" + key); + if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) { + extrasMap.put(key, intent.getIntExtra(key, 0)); + } else { + extrasMap.put(key, intent.getStringExtra(key)); + } + } + } + return extrasMap; + } - String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT); - Map extras = getNotificationExtras(intent); - - Intent launch = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); - launch.addCategory(Intent.CATEGORY_LAUNCHER); - launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP); - - JPushPlugin.notificationAlert = alert; - JPushPlugin.notificationExtras = extras; - - JPushPlugin.transmitReceive(alert, extras); - } - private Map getNotificationExtras(Intent intent) { - Map extrasMap = new HashMap(); - - for (String key : intent.getExtras().keySet()) { - if (!IGNORED_EXTRAS_KEYS.contains(key)) { - Log.e("key","key:"+key); - if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)){ - extrasMap.put(key, intent.getIntExtra(key,0)); - }else{ - extrasMap.put(key, intent.getStringExtra(key)); - } - } - } - return extrasMap; - } - private static final List IGNORED_EXTRAS_KEYS = - Arrays.asList("cn.jpush.android.TITLE","cn.jpush.android.MESSAGE","cn.jpush.android.APPKEY","cn.jpush.android.NOTIFICATION_CONTENT_TITLE"); } diff --git a/www/JPushPlugin.js b/www/JPushPlugin.js index 93d834d..90a9c6b 100644 --- a/www/JPushPlugin.js +++ b/www/JPushPlugin.js @@ -5,186 +5,192 @@ var JPushPlugin = function(){ //private plugin function -JPushPlugin.prototype.receiveMessage={} -JPushPlugin.prototype.openNotification={} -JPushPlugin.prototype.receiveNotification={} +JPushPlugin.prototype.receiveMessage = {} +JPushPlugin.prototype.openNotification = {} +JPushPlugin.prototype.receiveNotification = {} -JPushPlugin.prototype.isPlatformIOS = function(){ - return device.platform == "iPhone" || device.platform == "iPad" || device.platform == "iPod touch" || device.platform == "iOS" +JPushPlugin.prototype.isPlatformIOS = function() { + var isPlatformIOS = device.platform == "iPhone" + || device.platform == "iPad" + || device.platform == "iPod touch" + || device.platform == "iOS"; + return isPlatformIOS; } -JPushPlugin.prototype.error_callback = function(msg){ - console.log("Javascript Callback Error: " + msg) +JPushPlugin.prototype.error_callback = function(msg) { + console.log("Javascript Callback Error: " + msg); } -JPushPlugin.prototype.call_native = function(name, args, callback){ - - ret = cordova.exec(callback,this.error_callback,'JPushPlugin',name,args); +JPushPlugin.prototype.call_native = function(name, args, callback) { + ret = cordova.exec(callback, this.error_callback, 'JPushPlugin', name, args); return ret; } + //public plugin function -JPushPlugin.prototype.startLogPageView = function(pageName){ - if(this.isPlatformIOS()){ - this.call_native( "startLogPageView",[pageName],null); - } +JPushPlugin.prototype.startLogPageView = function(pageName) { + if(this.isPlatformIOS()) { + this.call_native("startLogPageView", [pageName], null); + } } -JPushPlugin.prototype.stopLogPageView = function(pageName){ - if(this.isPlatformIOS()){ - this.call_native( "stopLogPageView",[pageName],null); +JPushPlugin.prototype.stopLogPageView = function(pageName) { + if(this.isPlatformIOS()) { + this.call_native("stopLogPageView", [pageName], null); } } -JPushPlugin.prototype.beginLogPageView = function(pageName,duration){ - if(this.isPlatformIOS()){ - this.call_native( "beginLogPageView",[pageName,duration],null); +JPushPlugin.prototype.beginLogPageView = function(pageName, duration) { + if(this.isPlatformIOS()) { + this.call_native("beginLogPageView", [pageName, duration], null); } } -JPushPlugin.prototype.setApplicationIconBadgeNumber = function(badge){ - if(this.isPlatformIOS()){ - this.call_native( "setApplicationIconBadgeNumber",[badge],null); - } -} - JPushPlugin.prototype.getApplicationIconBadgeNumber = function(callback){ - if(this.isPlatformIOS()){ - this.call_native( "getApplicationIconBadgeNumber",[],callback); - } - } -JPushPlugin.prototype.setTagsWithAlias = function(tags,alias){ - try{ - if(tags==null){ - this.setAlias(alias); - return; - } - if(alias==null){ - this.setTags(tags); +JPushPlugin.prototype.setApplicationIconBadgeNumber = function(badge) { + if(this.isPlatformIOS()) { + this.call_native("setApplicationIconBadgeNumber", [badge], null); + } +} + +JPushPlugin.prototype.getApplicationIconBadgeNumber = function(callback) { + if(this.isPlatformIOS()) { + this.call_native("getApplicationIconBadgeNumber", [], callback); + } +} + +JPushPlugin.prototype.setTagsWithAlias = function(tags, alias) { + try { + if(tags == null) { + this.setAlias(alias); + return; + } + if(alias == null) { + this.setTags(tags); return; } - var arrayTagWithAlias=[tags]; + var arrayTagWithAlias = [tags]; arrayTagWithAlias.unshift(alias); - this.call_native( "setTagsWithAlias", arrayTagWithAlias,null); - } - catch(exception){ + this.call_native("setTagsWithAlias", arrayTagWithAlias, null); + } catch(exception) { console.log(exception); } - } -JPushPlugin.prototype.setTags = function(tags){ - try{ - this.call_native("setTags",tags,null); - } - catch(exception){ +JPushPlugin.prototype.setTags = function(tags) { + try { + this.call_native("setTags", tags, null); + } catch(exception) { console.log(exception); } } -JPushPlugin.prototype.setAlias = function(alias){ - try{ - this.call_native("setAlias",[alias],null); - } - catch(exception){ - console.log(exception); - } -} -JPushPlugin.prototype.getRegistrationID = function(callback){ - - try{ - var data=[]; - this.call_native("getRegistrationID",[data],callback); - } - catch(exception){ +JPushPlugin.prototype.setAlias = function(alias) { + try { + this.call_native("setAlias", [alias], null); + } catch(exception) { console.log(exception); } } -JPushPlugin.prototype.setBadge = function(value){ - - if(this.isPlatformIOS()){ - try{ - this.call_native("setBadge",[value],null); - } - catch(exception){ - console.log(exception); - } - - } -} -JPushPlugin.prototype.resetBadge = function(){ - - if(this.isPlatformIOS()){ - try{ - var data=[]; - this.call_native("resetBadge",[data],null); - } - catch(exception){ - console.log(exception); - } - } -} -JPushPlugin.prototype.setDebugModeFromIos = function(){ - if(this.isPlatformIOS()){ - var data=[]; - this.call_native("setDebugModeFromIos",[data],null); - } - -} -JPushPlugin.prototype.setLogOFF = function(){ - if(this.isPlatformIOS()){ - var data=[]; - this.call_native("setLogOFF",[data],null); +JPushPlugin.prototype.getRegistrationID = function(callback) { + try { + var data = []; + this.call_native("getRegistrationID", [data], callback); + } catch(exception) { + console.log(exception); } } -JPushPlugin.prototype.setCrashLogON = function(){ + +JPushPlugin.prototype.setBadge = function(value) { + if(this.isPlatformIOS()) { + try { + this.call_native("setBadge", [value], null); + } catch(exception) { + console.log(exception); + } + } +} + +JPushPlugin.prototype.resetBadge = function() { + if(this.isPlatformIOS()) { + try { + var data = []; + this.call_native("resetBadge", [data], null); + } catch(exception) { + console.log(exception); + } + } +} + +JPushPlugin.prototype.setDebugModeFromIos = function() { + if(this.isPlatformIOS()) { + var data = []; + this.call_native("setDebugModeFromIos", [data], null); + } +} + +JPushPlugin.prototype.setLogOFF = function() { + if(this.isPlatformIOS()) { + var data = []; + this.call_native("setLogOFF", [data], null); + } +} + +JPushPlugin.prototype.setCrashLogON = function() { if (this.isPlatformIOS()) { - var data=[]; - this.call_native("crashLogON",[data],null); + var data = []; + this.call_native("crashLogON", [data], null); } } -JPushPlugin.prototype.addLocalNotificationForIOS = function(delayTime,content,badge,notificationID,extras){ + +JPushPlugin.prototype.addLocalNotificationForIOS = function(delayTime, content, + badge, notificationID, extras) { if (this.isPlatformIOS()) { - var data = [delayTime,content,badge,notificationID,extras]; - this.call_native("setLocalNotification",data,null); + var data = [delayTime, content, badge, notificationID, extras]; + this.call_native("setLocalNotification", data, null); } } -JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function(identifierKey){ + +JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function( + identifierKey) { if (this.isPlatformIOS()) { - var data=[identifierKey]; - this.call_native("deleteLocalNotificationWithIdentifierKey",data,null); + var data = [identifierKey]; + this.call_native("deleteLocalNotificationWithIdentifierKey", data, null); } } + JPushPlugin.prototype.clearAllLocalNotifications = function(){ if (this.isPlatformIOS()) { - var data=[]; - this.call_native("clearAllLocalNotifications",data,null); + var data = []; + this.call_native("clearAllLocalNotifications", data, null); } } -JPushPlugin.prototype.setLocation = function(latitude,longitude){ + +JPushPlugin.prototype.setLocation = function(latitude, longitude){ if (this.isPlatformIOS()) { - var data=[latitude,longitude]; - this.call_native("setLocation",data,null); + var data = [latitude, longitude]; + this.call_native("setLocation", data, null); } } -JPushPlugin.prototype.receiveMessageIniOSCallback = function(data){ - try{ - console.log("JPushPlugin:receiveMessageIniOSCallback--data:"+data); + +JPushPlugin.prototype.receiveMessageIniOSCallback = function(data) { + try { + console.log("JPushPlugin:receiveMessageIniOSCallback--data:" + data); var bToObj = JSON.parse(data); var content = bToObj.content; - console.log(content); - } - catch(exception){ - console.log("JPushPlugin:receiveMessageIniOSCallback"+exception); + console.log(content); + } catch(exception) { + console.log("JPushPlugin:receiveMessageIniOSCallback" + exception); } } -JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data){ - try{ + +JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data) { + try { console.log("JPushPlugin:receiveMessageInAndroidCallback"); - var bToObj = JSON.parse(data); - this.receiveMessage=bToObj - cordova.fireDocumentEvent('jpush.receiveMessage',null); + var bToObj = JSON.parse(data); + this.receiveMessage = bToObj + cordova.fireDocumentEvent('jpush.receiveMessage', null); //console.log(data); //var message = bToObj.message; //var extras = bToObj.extras; @@ -193,19 +199,17 @@ JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data){ //console.log(extras['cn.jpush.android.MSG_ID']); //console.log(extras['cn.jpush.android.CONTENT_TYPE']); //console.log(extras['cn.jpush.android.EXTRA']); - } - catch(exception){ - console.log("JPushPlugin:pushCallback "+exception); + } catch(exception) { + console.log("JPushPlugin:pushCallback " + exception); } } -// -JPushPlugin.prototype.openNotificationInAndroidCallback = function(data){ - try{ +JPushPlugin.prototype.openNotificationInAndroidCallback = function(data) { + try { console.log("JPushPlugin:openNotificationInAndroidCallback"); - var bToObj = JSON.parse(data); - this.openNotification=bToObj; - cordova.fireDocumentEvent('jpush.openNotification',null); + var bToObj = JSON.parse(data); + this.openNotification = bToObj; + cordova.fireDocumentEvent('jpush.openNotification', null); //console.log(data); //var bToObj = JSON.parse(data); @@ -220,17 +224,17 @@ JPushPlugin.prototype.openNotificationInAndroidCallback = function(data){ //console.log(extras['cn.jpush.android.PUSH_ID']); //console.log(extras['cn.jpush.android.NOTIFICATION_ID']); //console.log("JPushPlugin:openNotificationCallback is ready"); - } - catch(exception){ + } catch(exception) { console.log(exception); } } -JPushPlugin.prototype.receiveNotificationInAndroidCallback = function(data){ + +JPushPlugin.prototype.receiveNotificationInAndroidCallback = function(data) { try{ console.log("JPushPlugin:receiveNotificationInAndroidCallback"); - var bToObj = JSON.parse(data); - this.receiveNotification=bToObj; - cordova.fireDocumentEvent('jpush.receiveNotification',null); + var bToObj = JSON.parse(data); + this.receiveNotification = bToObj; + cordova.fireDocumentEvent('jpush.receiveNotification', null); //console.log(data); //var bToObj = JSON.parse(data); @@ -245,109 +249,109 @@ JPushPlugin.prototype.receiveNotificationInAndroidCallback = function(data){ //console.log(extras['cn.jpush.android.PUSH_ID']); //console.log(extras['cn.jpush.android.NOTIFICATION_ID']); //console.log("JPushPlugin:openNotificationCallback is ready"); - } - catch(exception){ + } catch(exception) { console.log(exception); } } + //android single -JPushPlugin.prototype.setBasicPushNotificationBuilder = function(){ +JPushPlugin.prototype.setBasicPushNotificationBuilder = function() { if(device.platform == "Android") { - data=[] - this.call_native("setBasicPushNotificationBuilder",data,null); + data = []; + this.call_native("setBasicPushNotificationBuilder", data, null); } } -JPushPlugin.prototype.setCustomPushNotificationBuilder = function(){ +JPushPlugin.prototype.setCustomPushNotificationBuilder = function() { if(device.platform == "Android") { - data=[]; - this.call_native("setCustomPushNotificationBuilder",data,null); + data = []; + this.call_native("setCustomPushNotificationBuilder", data, null); } } -JPushPlugin.prototype.stopPush = function(){ - data=[]; - this.call_native("stopPush",data,null); +JPushPlugin.prototype.stopPush = function() { + data = []; + this.call_native("stopPush", data, null); } -JPushPlugin.prototype.resumePush = function(){ - data=[] - this.call_native("resumePush",data,null); - +JPushPlugin.prototype.resumePush = function() { + data = []; + this.call_native("resumePush", data, null); } -JPushPlugin.prototype.setDebugMode = function(mode){ + +JPushPlugin.prototype.setDebugMode = function(mode) { if(device.platform == "Android") { - this.call_native("setDebugMode",[mode],null); + this.call_native("setDebugMode", [mode], null); } } + //setDebugMode -JPushPlugin.prototype.clearAllNotification = function(){ +JPushPlugin.prototype.clearAllNotification = function() { if(device.platform == "Android") { - data=[] - this.call_native("clearAllNotification",data,null); + data = []; + this.call_native("clearAllNotification", data, null); } } -JPushPlugin.prototype.clearNotificationById = function(notificationId){ - if(device.platform == "Android") { - data=[] - this.call_native("clearNotificationById",[notificationId],null); - } -} - -JPushPlugin.prototype.setLatestNotificationNum = function(num){ - if(device.platform == "Android") { - this.call_native("setLatestNotificationNum",[num],null); +JPushPlugin.prototype.clearNotificationById = function(notificationId) { + if(device.platform == "Android") { + data = []; + this.call_native("clearNotificationById", [notificationId], null); } } -JPushPlugin.prototype.isPushStopped = function(callback){ - - data=[]; - this.call_native("isPushStopped",data,callback) - -} - -JPushPlugin.prototype.init = function(){ - if(this.isPlatformIOS()){ - var data=[]; - this.call_native("initial",data,null); - }else{ - data=[]; - this.call_native("init",data,null); - - } - -} - -JPushPlugin.prototype.setDebugMode = function(mode){ +JPushPlugin.prototype.setLatestNotificationNum = function(num) { if(device.platform == "Android") { - this.call_native("setDebugMode",[mode],null); - } -} -JPushPlugin.prototype.addLocalNotification = function(builderId,content,title,notificaitonID,broadcastTime,extras){ - if(device.platform == "Android") { - data=[builderId,content,title,notificaitonID,broadcastTime,extras]; - this.call_native("addLocalNotification",data,null); - } -} -JPushPlugin.prototype.removeLocalNotification = function(notificationID){ - if(device.platform == "Android") { - this.call_native("removeLocalNotification",[notificationID],null); - } -} -JPushPlugin.prototype.clearLocalNotifications = function(){ - if(device.platform == "Android") { - data=[] - this.call_native("clearLocalNotifications",data,null); + this.call_native("setLatestNotificationNum", [num], null); } } -JPushPlugin.prototype.reportNotificationOpened = function(msgID){ - if(device.platform == "Android") { +JPushPlugin.prototype.isPushStopped = function(callback) { + data = []; + this.call_native("isPushStopped", data, callback); +} - this.call_native("reportNotificationOpened",[msgID],null); +JPushPlugin.prototype.init = function() { + if(this.isPlatformIOS()) { + var data = []; + this.call_native("initial", data, null); + } else { + data = []; + this.call_native("init", data, null); + } +} + +JPushPlugin.prototype.setDebugMode = function(mode) { + if(device.platform == "Android") { + this.call_native("setDebugMode", [mode], null); + } +} + +JPushPlugin.prototype.addLocalNotification = function(builderId, content, title, + notificaitonID, broadcastTime, extras) { + if(device.platform == "Android") { + data = [builderId, content, title, notificaitonID, broadcastTime, extras]; + this.call_native("addLocalNotification", data, null); + } +} + +JPushPlugin.prototype.removeLocalNotification = function(notificationID) { + if(device.platform == "Android") { + this.call_native("removeLocalNotification", [notificationID], null); + } +} + +JPushPlugin.prototype.clearLocalNotifications = function() { + if(device.platform == "Android") { + data = []; + this.call_native("clearLocalNotifications", data, null); + } +} + +JPushPlugin.prototype.reportNotificationOpened = function(msgID) { + if(device.platform == "Android") { + this.call_native("reportNotificationOpened", [msgID], null); } } @@ -356,19 +360,18 @@ JPushPlugin.prototype.reportNotificationOpened = function(msgID){ *在 Portal 上展示给开发者。 **/ JPushPlugin.prototype.setStatisticsOpen = function(mode) { - if(device.platform == "Android") { - this.call_native("setStatisticsOpen", [mode], null); - } + if(device.platform == "Android") { + this.call_native("setStatisticsOpen", [mode], null); + } } //iOS single - -if(!window.plugins){ +if(!window.plugins) { window.plugins = {}; } -if(!window.plugins.jPushPlugin){ +if(!window.plugins.jPushPlugin) { window.plugins.jPushPlugin = new JPushPlugin(); }