diff --git a/README.md b/README.md index 5a65a37..ea2c346 100644 --- a/README.md +++ b/README.md @@ -63,14 +63,14 @@ JPush-PhoneGap-Plugin 支持 iOS, Android 的推送插件。 window.plugins.jPushPlugin.init(); -### Android 手工安装 +### Android 手动安装 -[Android 手工安装文档地址](document/Android_handle_install.md) +[Android 手动安装文档地址](document/Android_handle_install.md) -### iOS 手工安装 +### iOS 手动安装 -[IOS手工安装文档地址](document/iOS_handle_install.md) +[IOS手动安装文档地址](document/iOS_handle_install.md) ###示例 diff --git a/document/Android_handle_install.md b/document/Android_handle_install.md index cf5a9cf..31d15c4 100644 --- a/document/Android_handle_install.md +++ b/document/Android_handle_install.md @@ -1,13 +1,21 @@ -#Android 手工安装 +#Android 手动安装 下载 JPush PhoneGap 插件,并解压缩,标记插件目录为:`$JPUSH_PLUGIN_DIR` -1. 复制:`$JPUSH_PLUGIN_DIR`/src/android/*.java 到 cn/jpush/phonega/ 目录下(即:cn.jpush.phonegap 的包下) -2. 复制:`$JPUSH_PLUGIN_DIR`/src/android/armeabi/libjpush.so 到 lib/armeabi/ -3. 复制:`$JPUSH_PLUGIN_DIR`/src/android/jpush-sdk-release2.0.6.jar 到 lib/ -4. 复制:`$JPUSH_PLUGIN_DIR`/src/android/test_notification_layout.xml 到 res/layout/ -5. 复制:`$JPUSH_PLUGIN_DIR`/src/android/jpush_notification_icon.png 到 res/drawable/ -6. 修改 AndroidManifest.xml 在 manifest 节点下添加以下权限 +1. 复制:$JPUSH_PLUGIN_DIR/src/android/*.java 到 cn/jpush/phonega/ 目录下(即:cn.jpush.phonegap 的包下) +2. 复制:$JPUSH_PLUGIN_DIR/src/android/armeabi/libjpush.so 到 lib/armeabi/ +3. 复制:$JPUSH_PLUGIN_DIR/src/android/jpush-sdk-release2.0.6.jar 到 lib/ +4. 复制:$JPUSH_PLUGIN_DIR/src/android/test_notification_layout.xml 到 res/layout/ +5. 复制:$JPUSH_PLUGIN_DIR/src/android/jpush_notification_icon.png 到 res/drawable/ +6. 复制:$JPUSH_PLUGIN_DIR/www/JPushPlugin.js 到 assets/www/plugins/cn.jpush.phonegap.JPushPlugin.www/ + 和 platform_www/plugins/cn.jpush.phonegap.JPushPlugin/www/ + 并在 JPushPlugin.js 文件的代码外添加: + + cordova.define("cn.jpush.phonegap.JPushPlugin.JPushPlugin", function(require, exports, module) { + // 代码 + }); + +7. 修改 AndroidManifest.xml 在 manifest 节点下添加以下权限 diff --git a/document/iOS_handle_install.md b/document/iOS_handle_install.md index 8677342..2bf22d8 100644 --- a/document/iOS_handle_install.md +++ b/document/iOS_handle_install.md @@ -1,4 +1,4 @@ -### iOS手工安装 +### iOS手动安装 下载 JPush PhoneGap 插件,并解压缩,标记插件目录为:`$JPUSH_PLUGIN_DIR` diff --git a/example/index.html b/example/index.html index 795d8b8..541e8ba 100644 --- a/example/index.html +++ b/example/index.html @@ -66,7 +66,6 @@ alertContent = event.aps.alert; } $("#notificationResult").html(alertContent); - } catch (exeption) { console.log(exception) } @@ -90,7 +89,6 @@ try { window.plugins.jPushPlugin.init(); getRegistrationID(); - if (device.platform != "Android") { window.plugins.jPushPlugin.setDebugModeFromIos(); window.plugins.jPushPlugin.setApplicationIconBadgeNumber(0); diff --git a/src/android/JPushPlugin.java b/src/android/JPushPlugin.java index bfce837..e5c215c 100644 --- a/src/android/JPushPlugin.java +++ b/src/android/JPushPlugin.java @@ -70,8 +70,11 @@ public class JPushPlugin extends CordovaPlugin { private static boolean shouldCacheMsg = false; private static boolean isStatisticsOpened = false; // 是否开启统计分析功能 + public static String notificationTitle; public static String notificationAlert; public static Map notificationExtras = new HashMap(); + + public static String openNotificationTitle; public static String openNotificationAlert; public static Map openNotificationExtras = new HashMap(); @@ -93,11 +96,13 @@ public class JPushPlugin extends CordovaPlugin { //这样做是为了和iOS 统一 if (JPushPlugin.openNotificationAlert != null) { JPushPlugin.notificationAlert = null; - JPushPlugin.transmitOpen(JPushPlugin.openNotificationAlert, + JPushPlugin.transmitOpen(JPushPlugin.notificationTitle, + JPushPlugin.openNotificationAlert, JPushPlugin.openNotificationExtras); } if (JPushPlugin.notificationAlert != null) { - JPushPlugin.transmitReceive(JPushPlugin.notificationAlert, + JPushPlugin.transmitReceive(JPushPlugin.notificationTitle, + JPushPlugin.notificationAlert, JPushPlugin.notificationExtras); } //JPushInterface.init(cordova.getActivity().getApplicationContext()); @@ -121,11 +126,13 @@ public class JPushPlugin extends CordovaPlugin { } if (JPushPlugin.openNotificationAlert != null) { JPushPlugin.notificationAlert = null; - JPushPlugin.transmitOpen(JPushPlugin.openNotificationAlert, + JPushPlugin.transmitOpen(JPushPlugin.notificationTitle, + JPushPlugin.openNotificationAlert, JPushPlugin.openNotificationExtras); } if (JPushPlugin.notificationAlert != null) { - JPushPlugin.transmitReceive(JPushPlugin.notificationAlert, + JPushPlugin.transmitReceive(JPushPlugin.notificationTitle, + JPushPlugin.notificationAlert, JPushPlugin.notificationExtras); } } @@ -139,6 +146,13 @@ public class JPushPlugin extends CordovaPlugin { for (Entry entry : extras.entrySet()) { if (entry.getKey().equals("cn.jpush.android.EXTRA")) { JSONObject jo = new JSONObject((String) entry.getValue()); + String key; + Iterator keys = jo.keys(); + while(keys.hasNext()) { + key = keys.next().toString(); + Log.i(TAG, key); + jExtras.put(key, jo.getString(key)); + } jExtras.put("cn.jpush.android.EXTRA", jo); } else { jExtras.put(entry.getKey(), entry.getValue()); @@ -153,15 +167,22 @@ public class JPushPlugin extends CordovaPlugin { return data; } - private static JSONObject openNotificationObject(String alert, - Map extras) { + private static JSONObject openNotificationObject(String title, + String alert, Map extras) { JSONObject data = new JSONObject(); try { + data.put("title", title); data.put("alert", alert); JSONObject jExtras = new JSONObject(); for (Entry entry : extras.entrySet()) { if (entry.getKey().equals("cn.jpush.android.EXTRA")) { JSONObject jo = new JSONObject((String) entry.getValue()); + String key; + Iterator keys = jo.keys(); + while(keys.hasNext()) { + key = keys.next().toString(); + jExtras.put(key, jo.getString(key)); + } jExtras.put("cn.jpush.android.EXTRA", jo); } else { jExtras.put(entry.getKey(), entry.getValue()); @@ -191,14 +212,14 @@ public class JPushPlugin extends CordovaPlugin { }); } - static void transmitOpen(String alert, Map extras) { + static void transmitOpen(String title, String alert, Map extras) { if (instance == null) { return; } if (JPushPlugin.shouldCacheMsg) { return; } - JSONObject data = openNotificationObject(alert, extras); + JSONObject data = openNotificationObject(title, alert, extras); String format = "window.plugins.jPushPlugin.openNotificationInAndroidCallback(%s);"; final String js = String.format(format, data.toString()); cordovaActivity.runOnUiThread(new Runnable() { @@ -207,14 +228,15 @@ public class JPushPlugin extends CordovaPlugin { instance.webView.loadUrl("javascript:" + js); } }); + JPushPlugin.openNotificationTitle = null; JPushPlugin.openNotificationAlert = null; } - static void transmitReceive(String alert, Map extras) { + static void transmitReceive(String title, String alert, Map extras) { if (instance == null) { return; } - JSONObject data = openNotificationObject(alert, extras); + JSONObject data = openNotificationObject(title, alert, extras); String format = "window.plugins.jPushPlugin.receiveNotificationInAndroidCallback(%s);"; final String js = String.format(format, data.toString()); cordovaActivity.runOnUiThread(new Runnable() { @@ -223,6 +245,7 @@ public class JPushPlugin extends CordovaPlugin { instance.webView.loadUrl("javascript:" + js); } }); + JPushPlugin.notificationTitle = null; JPushPlugin.notificationAlert = null; } diff --git a/src/android/MyReceiver.java b/src/android/MyReceiver.java index fb79632..2c65086 100644 --- a/src/android/MyReceiver.java +++ b/src/android/MyReceiver.java @@ -44,13 +44,16 @@ public class MyReceiver extends BroadcastReceiver { private void handlingNotificationOpen(Context context, Intent intent) { Log.i(TAG, "---------------- handlingNotificationOpen"); + String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE); + JPushPlugin.openNotificationTitle = title; + String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT); JPushPlugin.openNotificationAlert = alert; Map extras = getNotificationExtras(intent); JPushPlugin.openNotificationExtras = extras; - JPushPlugin.transmitOpen(alert, extras); + JPushPlugin.transmitOpen(title, alert, extras); Intent launch = context.getPackageManager().getLaunchIntentForPackage( context.getPackageName()); @@ -62,17 +65,21 @@ public class MyReceiver extends BroadcastReceiver { private void handlingNotificationReceive(Context context, Intent intent) { Log.i(TAG, "---------------- handlingNotificationReceive"); - Intent launch = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); + 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 title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE); + JPushPlugin.notificationTitle = title; + String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT); JPushPlugin.notificationAlert = alert; Map extras = getNotificationExtras(intent); JPushPlugin.notificationExtras = extras; - JPushPlugin.transmitReceive(alert, extras); + JPushPlugin.transmitReceive(title, alert, extras); } private Map getNotificationExtras(Intent intent) {