Skip to content

Commit 8f183f4

Browse files
author
詹强
committed
android-应用在后台时点击通知切到前台
1 parent f7f5198 commit 8f183f4

File tree

4 files changed

+149
-89
lines changed

4 files changed

+149
-89
lines changed

android/src/main/java/cn/jiguang/plugins/push/JPushModule.java

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11

22
package cn.jiguang.plugins.push;
33

4+
import android.app.Activity;
5+
import android.app.Application;
6+
import android.os.Bundle;
47
import android.text.TextUtils;
58
import android.util.Log;
69

@@ -29,11 +32,13 @@ public class JPushModule extends ReactContextBaseJavaModule {
2932

3033
public static ReactApplicationContext reactContext;
3134

35+
public static boolean isAppForeground = false;
36+
3237
public JPushModule(ReactApplicationContext reactApplicationContext) {
3338
super(reactContext);
3439
reactContext = reactApplicationContext;
3540
}
36-
41+
3742
@Override
3843
public String getName() {
3944
return "JPushModule";
@@ -523,4 +528,47 @@ public void deleteGeofence(ReadableMap readableMap) {
523528
}
524529
}
525530

531+
//*****************************应用前后台状态监听*****************************
532+
public static void registerActivityLifecycle(Application application) {
533+
application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
534+
@Override
535+
public void onActivityCreated(Activity activity, Bundle bundle) {
536+
JPushLogger.d("onActivityCreated");
537+
}
538+
539+
@Override
540+
public void onActivityStarted(Activity activity) {
541+
JPushLogger.d("onActivityStarted");
542+
}
543+
544+
@Override
545+
public void onActivityResumed(Activity activity) {
546+
JPushLogger.d("onActivityResumed");
547+
isAppForeground = true;
548+
}
549+
550+
@Override
551+
public void onActivityPaused(Activity activity) {
552+
JPushLogger.d("onActivityPaused");
553+
isAppForeground = false;
554+
}
555+
556+
@Override
557+
public void onActivityStopped(Activity activity) {
558+
JPushLogger.d("onActivityStopped");
559+
}
560+
561+
@Override
562+
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
563+
JPushLogger.d("onActivitySaveInstanceState");
564+
}
565+
566+
@Override
567+
public void onActivityDestroyed(Activity activity) {
568+
JPushLogger.d("onActivityDestroyed");
569+
}
570+
});
571+
}
572+
573+
526574
}

android/src/main/java/cn/jiguang/plugins/push/helper/JPushHelper.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package cn.jiguang.plugins.push.helper;
22

3+
import android.content.Context;
4+
import android.content.Intent;
35
import android.os.Bundle;
46
import android.text.TextUtils;
57

@@ -100,4 +102,14 @@ public static void convertExtras(String extras, WritableMap writableMap) {
100102
}
101103
}
102104

105+
public static void launchApp(Context context) {
106+
try {
107+
Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
108+
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
109+
context.startActivity(intent);
110+
}catch (Throwable throwable){
111+
JPushLogger.e("");
112+
}
113+
}
114+
103115
}

android/src/main/java/cn/jiguang/plugins/push/receiver/JPushBroadcastReceiver.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.os.Bundle;
77

88
import cn.jiguang.plugins.push.common.JPushLogger;
9+
import cn.jiguang.plugins.push.helper.JPushHelper;
910
import cn.jpush.android.api.JPushInterface;
1011

1112
public class JPushBroadcastReceiver extends BroadcastReceiver {
@@ -15,12 +16,10 @@ public class JPushBroadcastReceiver extends BroadcastReceiver {
1516
@Override
1617
public void onReceive(Context context, Intent data) {
1718
if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(data.getAction())) {
18-
JPushLogger.e("JPushBroadcastReceiver ACTION_NOTIFICATION_OPENED");
19+
JPushLogger.d("JPushBroadcastReceiver ACTION_NOTIFICATION_OPENED");
1920
try {
2021
NOTIFICATION_BUNDLE = data.getExtras();
21-
Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
22-
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
23-
context.startActivity(intent);
22+
JPushHelper.launchApp(context);
2423
} catch (Throwable throwable) {
2524
JPushLogger.e("JPushBroadcastReceiver ACTION_NOTIFICATION_OPENED error:" + throwable.getMessage());
2625
}

android/src/main/java/cn/jiguang/plugins/push/receiver/JPushModuleReceiver.java

Lines changed: 85 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -17,90 +17,91 @@
1717

1818
public class JPushModuleReceiver extends JPushMessageReceiver {
1919

20-
@Override
21-
public void onMessage(Context context, CustomMessage customMessage) {
22-
JPushLogger.d("onMessage:" + customMessage.toString());
23-
WritableMap writableMap = JPushHelper.convertCustomMessage(customMessage);
24-
JPushHelper.sendEvent(JPushConstans.CUSTOM_MESSAGE_EVENT, writableMap);
25-
}
26-
27-
@Override
28-
public void onNotifyMessageArrived(Context context, NotificationMessage notificationMessage) {
29-
JPushLogger.d("onNotifyMessageArrived:" + notificationMessage.toString());
30-
WritableMap writableMap = JPushHelper.convertNotificationToMap(JPushConstans.NOTIFICATION_ARRIVED, notificationMessage);
31-
JPushHelper.sendEvent(JPushConstans.NOTIFICATION_EVENT, writableMap);
32-
}
33-
34-
@Override
35-
public void onNotifyMessageOpened(Context context, NotificationMessage notificationMessage) {
36-
JPushLogger.d("onNotifyMessageOpened:" + notificationMessage.toString());
37-
if (JPushModule.reactContext != null) {
38-
WritableMap writableMap = JPushHelper.convertNotificationToMap(JPushConstans.NOTIFICATION_OPENED, notificationMessage);
39-
JPushHelper.sendEvent(JPushConstans.NOTIFICATION_EVENT, writableMap);
40-
} else {
41-
super.onNotifyMessageOpened(context, notificationMessage);
42-
}
43-
}
44-
45-
@Override
46-
public void onNotifyMessageDismiss(Context context, NotificationMessage notificationMessage) {
47-
JPushLogger.d("onNotifyMessageDismiss:" + notificationMessage.toString());
48-
WritableMap writableMap = JPushHelper.convertNotificationToMap(JPushConstans.NOTIFICATION_DISMISSED, notificationMessage);
49-
JPushHelper.sendEvent(JPushConstans.NOTIFICATION_EVENT, writableMap);
50-
}
51-
52-
@Override
53-
public void onRegister(Context context, String registrationId) {
54-
JPushLogger.d("onRegister:" + registrationId);
55-
}
56-
57-
@Override
58-
public void onConnected(Context context, boolean state) {
59-
JPushLogger.d("onConnected state:" + state);
60-
WritableMap writableMap = Arguments.createMap();
61-
writableMap.putBoolean(JPushConstans.CONNECT_ENABLE, state);
62-
JPushHelper.sendEvent(JPushConstans.CONNECT_EVENT, writableMap);
63-
}
64-
65-
@Override
66-
public void onCommandResult(Context context, CmdMessage message) {
67-
JPushLogger.d("onCommandResult:" + message.toString());
68-
WritableMap writableMap = Arguments.createMap();
69-
writableMap.putInt(JPushConstans.COMMAND, message.cmd);
70-
writableMap.putString(JPushConstans.COMMAND_EXTRA, message.extra.toString());
71-
writableMap.putString(JPushConstans.COMMAND_MESSAGE, message.msg);
72-
writableMap.putInt(JPushConstans.COMMAND_RESULT, message.errorCode);
73-
JPushHelper.sendEvent(JPushConstans.COMMAND_EVENT, writableMap);
74-
}
75-
76-
@Override
77-
public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
78-
JPushLogger.d("onTagOperatorResult:" + jPushMessage.toString());
79-
WritableMap writableMap = JPushHelper.convertJPushMessageToMap(1, jPushMessage);
80-
JPushHelper.sendEvent(JPushConstans.TAG_ALIAS_EVENT, writableMap);
81-
}
82-
83-
@Override
84-
public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {
85-
JPushLogger.d("onCheckTagOperatorResult:" + jPushMessage.toString());
86-
WritableMap writableMap = JPushHelper.convertJPushMessageToMap(2, jPushMessage);
87-
JPushHelper.sendEvent(JPushConstans.TAG_ALIAS_EVENT, writableMap);
88-
}
89-
90-
@Override
91-
public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
92-
JPushLogger.d("onAliasOperatorResult:" + jPushMessage.toString());
93-
WritableMap writableMap = JPushHelper.convertJPushMessageToMap(3, jPushMessage);
94-
JPushHelper.sendEvent(JPushConstans.TAG_ALIAS_EVENT, writableMap);
95-
}
96-
97-
@Override
98-
public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
99-
JPushLogger.d("onMobileNumberOperatorResult:" + jPushMessage.toString());
100-
WritableMap writableMap = Arguments.createMap();
101-
writableMap.putInt(JPushConstans.CODE, jPushMessage.getErrorCode());
102-
writableMap.putInt(JPushConstans.SEQUENCE, jPushMessage.getSequence());
103-
JPushHelper.sendEvent(JPushConstans.MOBILE_NUMBER_EVENT, writableMap);
20+
@Override
21+
public void onMessage(Context context, CustomMessage customMessage) {
22+
JPushLogger.d("onMessage:" + customMessage.toString());
23+
WritableMap writableMap = JPushHelper.convertCustomMessage(customMessage);
24+
JPushHelper.sendEvent(JPushConstans.CUSTOM_MESSAGE_EVENT, writableMap);
25+
}
26+
27+
@Override
28+
public void onNotifyMessageArrived(Context context, NotificationMessage notificationMessage) {
29+
JPushLogger.d("onNotifyMessageArrived:" + notificationMessage.toString());
30+
WritableMap writableMap = JPushHelper.convertNotificationToMap(JPushConstans.NOTIFICATION_ARRIVED, notificationMessage);
31+
JPushHelper.sendEvent(JPushConstans.NOTIFICATION_EVENT, writableMap);
32+
}
33+
34+
@Override
35+
public void onNotifyMessageOpened(Context context, NotificationMessage notificationMessage) {
36+
JPushLogger.d("onNotifyMessageOpened:" + notificationMessage.toString());
37+
if (JPushModule.reactContext != null) {
38+
if (!JPushModule.isAppForeground) JPushHelper.launchApp(context);
39+
WritableMap writableMap = JPushHelper.convertNotificationToMap(JPushConstans.NOTIFICATION_OPENED, notificationMessage);
40+
JPushHelper.sendEvent(JPushConstans.NOTIFICATION_EVENT, writableMap);
41+
} else {
42+
super.onNotifyMessageOpened(context, notificationMessage);
10443
}
44+
}
45+
46+
@Override
47+
public void onNotifyMessageDismiss(Context context, NotificationMessage notificationMessage) {
48+
JPushLogger.d("onNotifyMessageDismiss:" + notificationMessage.toString());
49+
WritableMap writableMap = JPushHelper.convertNotificationToMap(JPushConstans.NOTIFICATION_DISMISSED, notificationMessage);
50+
JPushHelper.sendEvent(JPushConstans.NOTIFICATION_EVENT, writableMap);
51+
}
52+
53+
@Override
54+
public void onRegister(Context context, String registrationId) {
55+
JPushLogger.d("onRegister:" + registrationId);
56+
}
57+
58+
@Override
59+
public void onConnected(Context context, boolean state) {
60+
JPushLogger.d("onConnected state:" + state);
61+
WritableMap writableMap = Arguments.createMap();
62+
writableMap.putBoolean(JPushConstans.CONNECT_ENABLE, state);
63+
JPushHelper.sendEvent(JPushConstans.CONNECT_EVENT, writableMap);
64+
}
65+
66+
@Override
67+
public void onCommandResult(Context context, CmdMessage message) {
68+
JPushLogger.d("onCommandResult:" + message.toString());
69+
WritableMap writableMap = Arguments.createMap();
70+
writableMap.putInt(JPushConstans.COMMAND, message.cmd);
71+
writableMap.putString(JPushConstans.COMMAND_EXTRA, message.extra.toString());
72+
writableMap.putString(JPushConstans.COMMAND_MESSAGE, message.msg);
73+
writableMap.putInt(JPushConstans.COMMAND_RESULT, message.errorCode);
74+
JPushHelper.sendEvent(JPushConstans.COMMAND_EVENT, writableMap);
75+
}
76+
77+
@Override
78+
public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
79+
JPushLogger.d("onTagOperatorResult:" + jPushMessage.toString());
80+
WritableMap writableMap = JPushHelper.convertJPushMessageToMap(1, jPushMessage);
81+
JPushHelper.sendEvent(JPushConstans.TAG_ALIAS_EVENT, writableMap);
82+
}
83+
84+
@Override
85+
public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {
86+
JPushLogger.d("onCheckTagOperatorResult:" + jPushMessage.toString());
87+
WritableMap writableMap = JPushHelper.convertJPushMessageToMap(2, jPushMessage);
88+
JPushHelper.sendEvent(JPushConstans.TAG_ALIAS_EVENT, writableMap);
89+
}
90+
91+
@Override
92+
public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
93+
JPushLogger.d("onAliasOperatorResult:" + jPushMessage.toString());
94+
WritableMap writableMap = JPushHelper.convertJPushMessageToMap(3, jPushMessage);
95+
JPushHelper.sendEvent(JPushConstans.TAG_ALIAS_EVENT, writableMap);
96+
}
97+
98+
@Override
99+
public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
100+
JPushLogger.d("onMobileNumberOperatorResult:" + jPushMessage.toString());
101+
WritableMap writableMap = Arguments.createMap();
102+
writableMap.putInt(JPushConstans.CODE, jPushMessage.getErrorCode());
103+
writableMap.putInt(JPushConstans.SEQUENCE, jPushMessage.getSequence());
104+
JPushHelper.sendEvent(JPushConstans.MOBILE_NUMBER_EVENT, writableMap);
105+
}
105106

106107
}

0 commit comments

Comments
 (0)