diff --git a/plugin.xml b/plugin.xml index fcb22b7..daf1275 100644 --- a/plugin.xml +++ b/plugin.xml @@ -29,7 +29,7 @@ - + @@ -49,14 +49,14 @@ $API_KEY - + - + @@ -163,11 +163,13 @@ - - - - - + + + + + + + diff --git a/src/android/JPushPlugin.java b/src/android/JPushPlugin.java index 9f9672e..b1c2d7c 100644 --- a/src/android/JPushPlugin.java +++ b/src/android/JPushPlugin.java @@ -1,14 +1,13 @@ package cn.jpush.phonegap; -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; +import android.app.Activity; +import android.app.Notification; +import android.content.ComponentName; +import android.content.Intent; +import android.content.Context; +import android.util.Log; + +import __PACKAGE_NAME__.R; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaInterface; @@ -17,16 +16,23 @@ import org.apache.cordova.CordovaWebView; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import java.util.Map.Entry; -import __PACKAGE_NAME__.R; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import cn.jpush.android.api.BasicPushNotificationBuilder; import cn.jpush.android.api.CustomPushNotificationBuilder; import cn.jpush.android.api.JPushInterface; -import cn.jpush.android.data.JPushLocalNotification; import cn.jpush.android.api.TagAliasCallback; -import android.util.Log; +import cn.jpush.android.data.JPushLocalNotification; public class JPushPlugin extends CordovaPlugin { private final static List methodList = @@ -77,7 +83,9 @@ public class JPushPlugin extends CordovaPlugin { public void initialize(CordovaInterface cordova, CordovaWebView webView) { super.initialize(cordova, webView); - Log.i(TAG, "---------------- initialize" + "-" + JPushPlugin.openNotificationAlert + "-" + JPushPlugin.notificationAlert); + Log.i(TAG, "---------------- initialize" + "-" + + JPushPlugin.openNotificationAlert + "-" + + JPushPlugin.notificationAlert); cordovaActivity = this.cordova.getActivity(); @@ -99,15 +107,17 @@ public class JPushPlugin extends CordovaPlugin { Log.i(TAG, "---------------- onPause"); shouldCacheMsg = true; if (isStatisticsOpened) { - JPushInterface.onPause(this.cordova.getActivity()); + JPushInterface.onPause(cordovaActivity); } } public void onResume(boolean multitasking) { shouldCacheMsg = false; - Log.i(TAG, "---------------- onResume" + "-" + JPushPlugin.openNotificationAlert + "-" + JPushPlugin.notificationAlert); + Log.i(TAG, "---------------- onResume" + "-" + + JPushPlugin.openNotificationAlert + "-" + + JPushPlugin.notificationAlert); if (isStatisticsOpened) { - JPushInterface.onResume(this.cordova.getActivity()); + JPushInterface.onResume(cordovaActivity); } if (JPushPlugin.openNotificationAlert != null) { JPushPlugin.notificationAlert = null; @@ -171,14 +181,14 @@ public class JPushPlugin extends CordovaPlugin { return; } JSONObject data = notificationObject(message, extras); - String format = "window.plugins.jPushPlugin.receiveMessageInAndroidCallback('%s');"; + String format = "window.plugins.jPushPlugin.receiveMessageInAndroidCallback(%s);"; final String js = String.format(format, data.toString()); cordovaActivity.runOnUiThread(new Runnable() { @Override public void run() { instance.webView.loadUrl("javascript:" + js); } - }); + }); } static void transmitOpen(String alert, Map extras) { @@ -188,10 +198,8 @@ public class JPushPlugin extends CordovaPlugin { if (JPushPlugin.shouldCacheMsg) { return; } - Log.i(TAG, "---------------- transmitOpen"); - JSONObject data = openNotificationObject(alert, extras); - String format = "window.plugins.jPushPlugin.openNotificationInAndroidCallback('%s');"; + String format = "window.plugins.jPushPlugin.openNotificationInAndroidCallback(%s);"; final String js = String.format(format, data.toString()); cordovaActivity.runOnUiThread(new Runnable() { @Override @@ -206,11 +214,8 @@ public class JPushPlugin extends CordovaPlugin { if (instance == null) { return; } - if (JPushPlugin.shouldCacheMsg) { - return; - } JSONObject data = openNotificationObject(alert, extras); - String format = "window.plugins.jPushPlugin.receiveNotificationInAndroidCallback('%s');"; + String format = "window.plugins.jPushPlugin.receiveNotificationInAndroidCallback(%s);"; final String js = String.format(format, data.toString()); cordovaActivity.runOnUiThread(new Runnable() { @Override @@ -243,7 +248,7 @@ public class JPushPlugin extends CordovaPlugin { } void init(JSONArray data, CallbackContext callbackContext) { - JPushInterface.init(this.cordova.getActivity().getApplicationContext()); + JPushInterface.init(cordovaActivity.getApplicationContext()); //callbackContext.success(); } @@ -251,13 +256,6 @@ public class JPushPlugin extends CordovaPlugin { boolean mode; try { mode = data.getBoolean(0); - // if (mode.equals("true")) { - // JPushInterface.setDebugMode(true); - // } else if (mode.equals("false")) { - // JPushInterface.setDebugMode(false); - // } else { - // callbackContext.error("error mode"); - // } JPushInterface.setDebugMode(mode); callbackContext.success(); } catch (JSONException e) { @@ -266,18 +264,18 @@ public class JPushPlugin extends CordovaPlugin { } void stopPush(JSONArray data, CallbackContext callbackContext) { - JPushInterface.stopPush(this.cordova.getActivity().getApplicationContext()); + JPushInterface.stopPush(cordovaActivity.getApplicationContext()); callbackContext.success(); } void resumePush(JSONArray data, CallbackContext callbackContext) { - JPushInterface.resumePush(this.cordova.getActivity().getApplicationContext()); + JPushInterface.resumePush(cordovaActivity.getApplicationContext()); callbackContext.success(); } void isPushStopped(JSONArray data, CallbackContext callbackContext) { boolean isStopped = JPushInterface.isPushStopped( - this.cordova.getActivity().getApplicationContext()); + cordovaActivity.getApplicationContext()); if (isStopped) { callbackContext.success(1); } else { @@ -295,7 +293,7 @@ public class JPushPlugin extends CordovaPlugin { } if (num != -1) { JPushInterface.setLatestNotificationNumber( - this.cordova.getActivity().getApplicationContext(), num); + cordovaActivity.getApplicationContext(), num); } else { callbackContext.error("error num"); } @@ -321,30 +319,30 @@ public class JPushPlugin extends CordovaPlugin { } catch (JSONException e) { callbackContext.error("error reading hour json"); } - Context context = this.cordova.getActivity().getApplicationContext(); + Context context = cordovaActivity.getApplicationContext(); JPushInterface.setPushTime(context, days, startHour, endHour); callbackContext.success(); } void getRegistrationID(JSONArray data, CallbackContext callbackContext) { - Context context = this.cordova.getActivity().getApplicationContext(); + Context context = cordovaActivity.getApplicationContext(); String regID = JPushInterface.getRegistrationID(context); callbackContext.success(regID); } void onResume(JSONArray data, CallbackContext callbackContext) { - JPushInterface.onResume(this.cordova.getActivity()); + JPushInterface.onResume(cordovaActivity); } void onPause(JSONArray data, CallbackContext callbackContext) { - JPushInterface.onPause(this.cordova.getActivity()); + JPushInterface.onPause(cordovaActivity); } void reportNotificationOpened(JSONArray data, CallbackContext callbackContext) { try { String msgID; msgID = data.getString(0); - JPushInterface.reportNotificationOpened(this.cordova.getActivity(), msgID); + JPushInterface.reportNotificationOpened(cordovaActivity, msgID); } catch (JSONException e) { e.printStackTrace(); } @@ -356,8 +354,8 @@ public class JPushPlugin extends CordovaPlugin { for (int i = 0; i < data.length(); i++) { tags.add(data.getString(i)); } - JPushInterface.setTags(this.cordova.getActivity() - .getApplicationContext(), tags, mTagWithAliasCallback); + JPushInterface.setTags(cordovaActivity.getApplicationContext(), + tags, mTagWithAliasCallback); callbackContext.success(); } catch (JSONException e) { e.printStackTrace(); @@ -368,8 +366,8 @@ public class JPushPlugin extends CordovaPlugin { void setAlias(JSONArray data, CallbackContext callbackContext) { try { String alias = data.getString(0); - JPushInterface.setAlias(this.cordova.getActivity() - .getApplicationContext(), alias, mTagWithAliasCallback); + JPushInterface.setAlias(cordovaActivity.getApplicationContext(), + alias, mTagWithAliasCallback); callbackContext.success(); } catch (JSONException e) { e.printStackTrace(); @@ -386,8 +384,8 @@ public class JPushPlugin extends CordovaPlugin { for (int i = 0; i < tagsArray.length(); i++) { tags.add(tagsArray.getString(i)); } - JPushInterface.setAliasAndTags(this.cordova.getActivity() - .getApplicationContext(), alias, tags, mTagWithAliasCallback); + JPushInterface.setAliasAndTags(cordovaActivity.getApplicationContext(), + alias, tags, mTagWithAliasCallback); callbackContext.success(); } catch (JSONException e) { e.printStackTrace(); @@ -416,7 +414,7 @@ public class JPushPlugin extends CordovaPlugin { void setBasicPushNotificationBuilder(JSONArray data, CallbackContext callbackContext) { BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder( - this.cordova.getActivity()); + cordovaActivity); builder.developerArg0 = "Basic builder 1"; JPushInterface.setPushNotificationBuilder(1, builder); JSONObject obj = new JSONObject(); @@ -431,7 +429,7 @@ public class JPushPlugin extends CordovaPlugin { void setCustomPushNotificationBuilder(JSONArray data, CallbackContext callbackContext) { CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder( - this.cordova.getActivity(), R.layout.test_notification_layout, + cordovaActivity, R.layout.test_notification_layout, R.id.icon, R.id.title, R.id.text); builder.developerArg0 = "Custom Builder 1"; builder.layoutIconDrawable = R.drawable.jpush_notification_icon; @@ -446,7 +444,7 @@ public class JPushPlugin extends CordovaPlugin { } void clearAllNotification(JSONArray data, CallbackContext callbackContext) { - JPushInterface.clearAllNotifications(this.cordova.getActivity()); + JPushInterface.clearAllNotifications(cordovaActivity); //callbackContext.success(); } @@ -459,8 +457,7 @@ public class JPushPlugin extends CordovaPlugin { callbackContext.error("error reading id json"); } if (notificationId != -1) { - JPushInterface.clearNotificationById(this.cordova.getActivity(), - notificationId); + JPushInterface.clearNotificationById(cordovaActivity, notificationId); } else { callbackContext.error("error id"); } @@ -484,18 +481,17 @@ public class JPushPlugin extends CordovaPlugin { ln.setBroadcastTime(System.currentTimeMillis() + broadcastTime); ln.setExtras(extras.toString()); - JPushInterface.addLocalNotification(this.cordova.getActivity(), ln); + JPushInterface.addLocalNotification(cordovaActivity, ln); } void removeLocalNotification(JSONArray data, CallbackContext callbackContext) throws JSONException { int notificationID = data.getInt(0); - JPushInterface.removeLocalNotification(this.cordova.getActivity(), - notificationID); + JPushInterface.removeLocalNotification(cordovaActivity, notificationID); } void clearLocalNotifications(JSONArray data, CallbackContext callbackContext) { - JPushInterface.clearLocalNotifications(this.cordova.getActivity()); + JPushInterface.clearLocalNotifications(cordovaActivity); } /** @@ -522,10 +518,15 @@ public class JPushPlugin extends CordovaPlugin { data.put("resultCode", code); data.put("tags", tags); data.put("alias", alias); - String jsEvent = String.format( + final String jsEvent = String.format( "cordova.fireDocumentEvent('jpush.setTagsWithAlias',%s)", data.toString()); - instance.webView.sendJavascript(jsEvent); + cordovaActivity.runOnUiThread(new Runnable() { + @Override + public void run() { + instance.webView.loadUrl("javascript:" + jsEvent); + } + }); } catch (JSONException e) { e.printStackTrace(); } diff --git a/src/android/arm64-v8a/libjpush206.so b/src/android/arm64-v8a/libjpush206.so deleted file mode 100644 index aef78f3..0000000 Binary files a/src/android/arm64-v8a/libjpush206.so and /dev/null differ diff --git a/src/android/arm64-v8a/libjpush210.so b/src/android/arm64-v8a/libjpush210.so new file mode 100644 index 0000000..de1f985 Binary files /dev/null and b/src/android/arm64-v8a/libjpush210.so differ diff --git a/src/android/armeabi-v7a/libjpush206.so b/src/android/armeabi-v7a/libjpush206.so deleted file mode 100644 index 3dc17f1..0000000 Binary files a/src/android/armeabi-v7a/libjpush206.so and /dev/null differ diff --git a/src/android/armeabi-v7a/libjpush210.so b/src/android/armeabi-v7a/libjpush210.so new file mode 100644 index 0000000..e8ffa23 Binary files /dev/null and b/src/android/armeabi-v7a/libjpush210.so differ diff --git a/src/android/armeabi/libjpush206.so b/src/android/armeabi/libjpush206.so deleted file mode 100644 index 078cdfd..0000000 Binary files a/src/android/armeabi/libjpush206.so and /dev/null differ diff --git a/src/android/armeabi/libjpush210.so b/src/android/armeabi/libjpush210.so new file mode 100644 index 0000000..e8ffa23 Binary files /dev/null and b/src/android/armeabi/libjpush210.so differ diff --git a/src/android/jpush-android-2.0.6.jar b/src/android/jpush-android-2.0.6.jar deleted file mode 100644 index 6074cb4..0000000 Binary files a/src/android/jpush-android-2.0.6.jar and /dev/null differ diff --git a/src/android/jpush-android-2.1.0.jar b/src/android/jpush-android-2.1.0.jar new file mode 100644 index 0000000..867ed25 Binary files /dev/null and b/src/android/jpush-android-2.1.0.jar differ diff --git a/src/android/x86/libjpush210.so b/src/android/x86/libjpush210.so new file mode 100644 index 0000000..b2cde5a Binary files /dev/null and b/src/android/x86/libjpush210.so differ diff --git a/src/android/x86_64/libjpush210.so b/src/android/x86_64/libjpush210.so new file mode 100644 index 0000000..7fde5a0 Binary files /dev/null and b/src/android/x86_64/libjpush210.so differ diff --git a/src/ios/Plugins/AppDelegate+JPush.m b/src/ios/Plugins/AppDelegate+JPush.m index 542ea00..b52c0ba 100644 --- a/src/ios/Plugins/AppDelegate+JPush.m +++ b/src/ios/Plugins/AppDelegate+JPush.m @@ -9,12 +9,30 @@ #import "AppDelegate+JPush.h" #import "JPushPlugin.h" #import "JPUSHService.h" +#import @implementation AppDelegate (JPush) --(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ - [JPushPlugin setLaunchOptions:launchOptions]; - return [super application:application didFinishLaunchingWithOptions:launchOptions]; ++(void)load{ + Method origin; + Method swizzle; + origin=class_getInstanceMethod([self class],@selector(init)); + swizzle=class_getInstanceMethod([self class], @selector(init_plus)); + method_exchangeImplementations(origin, swizzle); +} + +-(instancetype)init_plus{ + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(applicationDidLaunch:) + name:@"UIApplicationDidFinishLaunchingNotification" + object:nil]; + return [self init_plus]; +} + +-(void)applicationDidLaunch:(NSNotification*)notification{ + if (notification) { + [JPushPlugin setLaunchOptions:notification.userInfo]; + } } - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { diff --git a/www/JPushPlugin.js b/www/JPushPlugin.js index 90a9c6b..a9b5fcd 100644 --- a/www/JPushPlugin.js +++ b/www/JPushPlugin.js @@ -188,17 +188,10 @@ JPushPlugin.prototype.receiveMessageIniOSCallback = function(data) { JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data) { try { console.log("JPushPlugin:receiveMessageInAndroidCallback"); + data = JSON.stringify(data); var bToObj = JSON.parse(data); this.receiveMessage = bToObj cordova.fireDocumentEvent('jpush.receiveMessage', null); - //console.log(data); - //var message = bToObj.message; - //var extras = bToObj.extras; - - //console.log(message); - //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); } @@ -207,23 +200,10 @@ JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data) { JPushPlugin.prototype.openNotificationInAndroidCallback = function(data) { try { console.log("JPushPlugin:openNotificationInAndroidCallback"); + data = JSON.stringify(data); var bToObj = JSON.parse(data); this.openNotification = bToObj; cordova.fireDocumentEvent('jpush.openNotification', null); - - //console.log(data); - //var bToObj = JSON.parse(data); - //var alert = bToObj.alert; - //var extras = bToObj.extras; - //console.log(alert); - - //console.log(extras['cn.jpush.android.MSG_ID']); - //console.log(extras['app']); - //console.log(extras['cn.jpush.android.NOTIFICATION_CONTENT_TITLE']); - //console.log(extras['cn.jpush.android.EXTRA']); - //console.log(extras['cn.jpush.android.PUSH_ID']); - //console.log(extras['cn.jpush.android.NOTIFICATION_ID']); - //console.log("JPushPlugin:openNotificationCallback is ready"); } catch(exception) { console.log(exception); } @@ -232,23 +212,10 @@ JPushPlugin.prototype.openNotificationInAndroidCallback = function(data) { JPushPlugin.prototype.receiveNotificationInAndroidCallback = function(data) { try{ console.log("JPushPlugin:receiveNotificationInAndroidCallback"); + data = JSON.stringify(data); var bToObj = JSON.parse(data); this.receiveNotification = bToObj; cordova.fireDocumentEvent('jpush.receiveNotification', null); - - //console.log(data); - //var bToObj = JSON.parse(data); - //var alert = bToObj.alert; - //var extras = bToObj.extras; - //console.log(alert); - - //console.log(extras['cn.jpush.android.MSG_ID']); - //console.log(extras['app']); - //console.log(extras['cn.jpush.android.NOTIFICATION_CONTENT_TITLE']); - //console.log(extras['cn.jpush.android.EXTRA']); - //console.log(extras['cn.jpush.android.PUSH_ID']); - //console.log(extras['cn.jpush.android.NOTIFICATION_ID']); - //console.log("JPushPlugin:openNotificationCallback is ready"); } catch(exception) { console.log(exception); }