Skip to content

Commit 69a0cbf

Browse files
committed
add 通知点击事件处理
1 parent c92d164 commit 69a0cbf

File tree

6 files changed

+73
-20
lines changed

6 files changed

+73
-20
lines changed

android/src/main/java/com/netease/im/RNNeteaseImModule.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@
8888
import java.util.Map;
8989
import java.util.Set;
9090

91+
import static com.netease.im.ReceiverMsgParser.getIntent;
92+
9193

9294
public class RNNeteaseImModule extends ReactContextBaseJavaModule implements LifecycleEventListener, ActivityEventListener {
9395

@@ -1938,14 +1940,26 @@ public void onNewIntent(Intent intent) {
19381940

19391941
LogUtil.w(TAG, "onNewIntent:" + intent.getExtras());
19401942
// ReceiverMsgParser.openIntent(intent);
1941-
if (reactContext.getCurrentActivity() != null && ReceiverMsgParser.checkOpen(ReceiverMsgParser.getIntent())) {
1942-
intent.putExtras(ReceiverMsgParser.getIntent());
1943+
if (reactContext.getCurrentActivity() != null && ReceiverMsgParser.checkOpen(intent)) {
1944+
intent.putExtras(getIntent());
19431945
reactContext.getCurrentActivity().setIntent(intent);
1946+
ReactCache.emit(ReactCache.observeBackgroundPushEvent, ReceiverMsgParser.getWritableMap(intent));
19441947
}
19451948

19461949
}
19471950

19481951
public static String status = "";
1952+
public static Intent launch = null;
1953+
1954+
@ReactMethod
1955+
public void getLaunch(Promise promise) {
1956+
if (launch == null) {
1957+
promise.resolve(null);
1958+
} else {
1959+
promise.resolve(ReceiverMsgParser.getWritableMap(launch));
1960+
launch = null;
1961+
}
1962+
}
19491963

19501964
@Override
19511965
public void onHostResume() {

android/src/main/java/com/netease/im/ReactCache.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ public class ReactCache {
8282
public final static String observeAttachmentProgress = "observeAttachmentProgress";//'上传下载进度'
8383
public final static String observeOnKick = "observeOnKick";//'被踢出'
8484
public final static String observeAccountNotice = "observeAccountNotice";//'账户变动通知'
85+
public final static String observeLaunchPushEvent = "observeLaunchPushEvent";//''
86+
public final static String observeBackgroundPushEvent = "observeBackgroundPushEvent";//''
8587

8688
final static String TAG = "ReactCache";
8789
private static ReactContext reactContext;

android/src/main/java/com/netease/im/ReceiverMsgParser.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import com.facebook.react.bridge.Arguments;
88
import com.facebook.react.bridge.WritableMap;
99
import com.netease.im.common.push.Extras;
10+
import com.netease.im.session.SessionUtil;
1011
import com.netease.im.uikit.common.util.log.LogUtil;
12+
import com.netease.nimlib.sdk.NIMClient;
1113
import com.netease.nimlib.sdk.NimIntent;
1214
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
1315
import com.netease.nimlib.sdk.msg.model.IMMessage;
@@ -55,6 +57,7 @@ public static Bundle openIntent(Intent intent) {
5557
result.putString("type", "session");
5658
result.putString("sessionType", Integer.toString(message.getSessionType().getValue()));
5759
result.putString("sessionId", message.getSessionId());
60+
result.putString("sessionName", message.getSessionId());
5861
}
5962
} else if (intent.hasExtra(Extras.EXTRA_JUMP_P2P)) {
6063
Intent data = intent.getParcelableExtra(Extras.EXTRA_DATA);
@@ -63,6 +66,7 @@ public static Bundle openIntent(Intent intent) {
6366
result.putString("type", "session");
6467
result.putString("sessionType", Integer.toString(SessionTypeEnum.P2P.getValue()));
6568
result.putString("sessionId", account);
69+
result.putString("sessionName", account);
6670
}
6771
}
6872

@@ -85,6 +89,7 @@ public static WritableMap getWritableMap(Intent intent) {
8589
r.putString("type", "session");
8690
r.putString("sessionType", Integer.toString(message.getSessionType().getValue()));
8791
r.putString("sessionId", message.getSessionId());
92+
r.putString("sessionName", SessionUtil.getSessionName(message.getSessionId(),message.getSessionType(),false));
8893
}
8994
} else if (intent.hasExtra(Extras.EXTRA_JUMP_P2P)) {
9095
Intent data = intent.getParcelableExtra(Extras.EXTRA_DATA);
@@ -93,6 +98,7 @@ public static WritableMap getWritableMap(Intent intent) {
9398
r.putString("type", "session");
9499
r.putString("sessionType", Integer.toString(SessionTypeEnum.P2P.getValue()));
95100
r.putString("sessionId", account);
101+
r.putString("sessionName", SessionUtil.getSessionName(account,SessionTypeEnum.P2P,false));
96102
}
97103
}
98104

@@ -107,7 +113,7 @@ public static WritableMap getWritableMap(Intent intent) {
107113
* 已经登陆过,自动登陆
108114
*/
109115
private static boolean canAutoLogin() {
110-
111-
return true;//!TextUtils.isEmpty(account) && !TextUtils.isEmpty(token);
116+
return !NIMClient.getStatus().wontAutoLogin();
117+
// return true;//!TextUtils.isEmpty(account) && !TextUtils.isEmpty(token);
112118
}
113119
}

android/src/main/java/com/netease/im/session/SessionService.java

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,7 @@ public int onResult(int code, IMMessage message) {
609609
item.setStatus(MsgStatusEnum.sending);
610610
deleteItem(item, true);
611611
onMsgSend(item);
612+
appendPushConfig(item);
612613
getMsgService().sendMessage(item, true);
613614
return 0;
614615
}
@@ -627,7 +628,7 @@ public void sendTextMessage(String content, List<String> selectedMembers, OnSend
627628
// message.setPushContent("有人@了你");
628629
message.setMemberPushOption(option);
629630
}
630-
sendMessage(message, onSendMessageListener);
631+
sendMessageSelf(message, onSendMessageListener);
631632
}
632633

633634
/**
@@ -648,7 +649,7 @@ public void sendTipMessage(String content, OnSendMessageListener onSendMessageLi
648649

649650
message.setContent(content);
650651
message.setConfig(config);
651-
sendMessage(message, onSendMessageListener);
652+
sendMessageSelf(message, onSendMessageListener);
652653
}
653654
}
654655

@@ -662,15 +663,15 @@ public void sendImageMessage(String file, String displayName, OnSendMessageListe
662663
}
663664
LogUtil.w(TAG, "path:" + f.getPath() + "-size:" + FileUtil.formatFileSize(f.length()));
664665
IMMessage message = MessageBuilder.createImageMessage(sessionId, sessionTypeEnum, f, TextUtils.isEmpty(displayName) ? f.getName() : displayName);
665-
sendMessage(message, onSendMessageListener);
666+
sendMessageSelf(message, onSendMessageListener);
666667
}
667668

668669
public void sendAudioMessage(String file, long duration, OnSendMessageListener onSendMessageListener) {
669670
file = Uri.parse(file).getPath();
670671
File f = new File(file);
671672

672673
IMMessage message = MessageBuilder.createAudioMessage(sessionId, sessionTypeEnum, f, duration);
673-
sendMessage(message, onSendMessageListener);
674+
sendMessageSelf(message, onSendMessageListener);
674675
}
675676

676677
// String md5Path = StorageUtil.getWritePath(filename, StorageType.TYPE_VIDEO);
@@ -692,7 +693,7 @@ public void sendVideoMessage(String file, String duration, int width, int height
692693
e.printStackTrace();
693694
}
694695
IMMessage message = MessageBuilder.createVideoMessage(sessionId, sessionTypeEnum, f, durationL, width, height, md5);
695-
sendMessage(message, onSendMessageListener);
696+
sendMessageSelf(message, onSendMessageListener);
696697
}
697698

698699
public void sendLocationMessage(String latitude, String longitude, String address, OnSendMessageListener onSendMessageListener) {
@@ -709,7 +710,7 @@ public void sendLocationMessage(String latitude, String longitude, String addres
709710
e.printStackTrace();
710711
}
711712
IMMessage message = MessageBuilder.createLocationMessage(sessionId, sessionTypeEnum, lat, lon, address);
712-
sendMessage(message, onSendMessageListener);
713+
sendMessageSelf(message, onSendMessageListener);
713714
}
714715

715716
public void sendDefaultMessage(String type, String digst, String content, OnSendMessageListener onSendMessageListener) {
@@ -718,7 +719,7 @@ public void sendDefaultMessage(String type, String digst, String content, OnSend
718719
attachment.setDigst(digst);
719720
attachment.setContent(content);
720721
IMMessage message = MessageBuilder.createCustomMessage(sessionId, sessionTypeEnum, digst, attachment, config);
721-
sendMessage(message, onSendMessageListener);
722+
sendMessageSelf(message, onSendMessageListener);
722723
}
723724

724725
public void sendRedPacketOpenMessage(String sendId, String openId, String hasRedPacket, String serialNo, OnSendMessageListener onSendMessageListener) {
@@ -730,7 +731,7 @@ public void sendRedPacketOpenMessage(String sendId, String openId, String hasRed
730731
// IMMessage message = MessageBuilder.createCustomMessage(sessionId, sessionTypeEnum, sendId + ";" + openId, attachment, config);
731732
//
732733
//// message.
733-
// sendMessage(message, onSendMessageListener);
734+
// sendMessageSelf(message, onSendMessageListener);
734735
long timestamp = new Date().getTime() / 1000;
735736
SessionUtil.sendRedPacketOpenNotification(sessionId, sessionTypeEnum, sendId, openId, hasRedPacket, serialNo, timestamp);
736737
SessionUtil.sendRedPacketOpenLocal(sessionId, sessionTypeEnum, sendId, openId, hasRedPacket, serialNo, timestamp);
@@ -741,15 +742,15 @@ public void sendRedPacketMessage(String type, String comments, String serialNo,
741742
RedPacketAttachement attachment = new RedPacketAttachement();
742743
attachment.setParams(type, comments, serialNo);
743744
IMMessage message = MessageBuilder.createCustomMessage(sessionId, sessionTypeEnum, comments, attachment, config);
744-
sendMessage(message, onSendMessageListener);
745+
sendMessageSelf(message, onSendMessageListener);
745746
}
746747

747748
public void sendBankTransferMessage(String amount, String comments, String serialNo, OnSendMessageListener onSendMessageListener) {
748749
CustomMessageConfig config = new CustomMessageConfig();
749750
BankTransferAttachment attachment = new BankTransferAttachment();
750751
attachment.setParams(amount, comments, serialNo);
751752
IMMessage message = MessageBuilder.createCustomMessage(sessionId, sessionTypeEnum, comments, attachment, config);
752-
sendMessage(message, onSendMessageListener);
753+
sendMessageSelf(message, onSendMessageListener);
753754
}
754755

755756
public int sendForwardMessage(IMMessage selectMessage, final String sessionId, final String sessionType, String content, OnSendMessageListener onSendMessageListener) {
@@ -764,7 +765,7 @@ public int sendForwardMessage(IMMessage selectMessage, final String sessionId, f
764765
if (message == null) {
765766
return 1;
766767
}
767-
sendMessage(message, onSendMessageListener);
768+
sendMessageSelf(message, onSendMessageListener);
768769
return 2;
769770
}
770771

@@ -840,7 +841,7 @@ public void updateMessage(final IMMessage message, MsgStatusEnum statusEnum) {
840841
getMsgService().updateIMMessageStatus(message);
841842
}
842843

843-
public void sendMessage(final IMMessage message, final OnSendMessageListener onSendMessageListener) {
844+
public void sendMessageSelf(final IMMessage message, final OnSendMessageListener onSendMessageListener) {
844845

845846

846847
appendPushConfig(message);
@@ -851,12 +852,24 @@ public void sendMessage(final IMMessage message, final OnSendMessageListener onS
851852
}
852853

853854
private void appendPushConfig(IMMessage message) {
854-
// CustomPushContentProvider customConfig = NimUIKit.getCustomPushContentProvider();
855+
// CustomPushContentProvider customConfig = null;//NimUIKit.getCustomPushContentProvider();
855856
// if (customConfig != null) {
856857
// String content = customConfig.getPushContent(message);
857858
// Map<String, Object> payload = customConfig.getPushPayload(message);
858-
// message.setPushContent(content);
859-
// message.setPushPayload(payload);
859+
message.setPushContent(message.getContent());
860+
Map<String, Object> payload = new HashMap<>();
861+
Map<String, Object> body = new HashMap<>();
862+
863+
body.put("sessionType", message.getSessionType().getValue());
864+
if (message.getSessionType() == SessionTypeEnum.P2P) {
865+
body.put("sessionId", LoginService.getInstance().getAccount());
866+
} else if (message.getSessionType() == SessionTypeEnum.Team) {
867+
body.put("sessionId", message.getSessionId());
868+
869+
}
870+
body.put("sessionName", SessionUtil.getSessionName(sessionId,message.getSessionType(),true));
871+
payload.put("sessionBody", body);
872+
message.setPushPayload(payload);
860873
// }
861874
}
862875

android/src/main/java/com/netease/im/session/SessionUtil.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
import com.alibaba.fastjson.JSON;
1010
import com.alibaba.fastjson.JSONObject;
1111
import com.netease.im.IMApplication;
12+
import com.netease.im.login.LoginService;
1213
import com.netease.im.session.extension.RedPacketOpenAttachement;
14+
import com.netease.im.uikit.cache.NimUserInfoCache;
15+
import com.netease.im.uikit.cache.TeamDataCache;
1316
import com.netease.im.uikit.common.util.log.LogUtil;
1417
import com.netease.nimlib.sdk.NIMClient;
1518
import com.netease.nimlib.sdk.msg.MessageBuilder;
@@ -43,6 +46,18 @@ public static SessionTypeEnum getSessionType(String sessionType) {
4346
return sessionTypeE;
4447
}
4548

49+
public static String getSessionName(String sessionId, SessionTypeEnum sessionTypeEnum, boolean selfName) {
50+
String name = sessionId;
51+
if (sessionTypeEnum == SessionTypeEnum.P2P) {
52+
NimUserInfoCache nimUserInfoCache = NimUserInfoCache.getInstance();
53+
String pId = selfName ? LoginService.getInstance().getAccount() : sessionId;
54+
name = nimUserInfoCache.getUserName(pId);
55+
} else if (sessionTypeEnum == SessionTypeEnum.Team) {
56+
name = TeamDataCache.getInstance().getTeamName(sessionId);
57+
}
58+
return name;
59+
}
60+
4661
private static void appendPushConfig(IMMessage message) {
4762
// CustomPushContentProvider customConfig = NimUIKit.getCustomPushContentProvider();
4863
// if (customConfig != null) {
@@ -131,7 +146,7 @@ public static void receiver(NotificationManager manager, CustomNotification cust
131146
// LogUtil.w("timestamp",""+data);
132147
String sessionId = data.getString("sessionId");
133148
String sessionType = data.getString("sessionType");
134-
final String id = sessionId;//getSessionType(sessionType) == SessionTypeEnum.P2P ? openId :
149+
final String id = sessionId;//getSessionType(sessionType) == SessionTypeEnum.P2P ? openId :
135150
sendRedPacketOpenLocal(id, getSessionType(sessionType), sendId, openId, hasRedPacket, serialNo, t);
136151
}
137152
}

im/Session.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,5 +285,8 @@ class Session {
285285
updateAudioMessagePlayStatus(messageId){
286286
return RNNeteaseIm.updateAudioMessagePlayStatus(messageId);
287287
}
288+
getLaunch(){
289+
return RNNeteaseIm.getLaunch();
290+
}
288291
}
289292
module.exports = new Session();

0 commit comments

Comments
 (0)