Skip to content

Commit 2e9e056

Browse files
guangyaoguangyao
authored andcommitted
2 parents ae0b63b + a3fead8 commit 2e9e056

File tree

5 files changed

+69
-23
lines changed

5 files changed

+69
-23
lines changed

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

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.netease.im;
22

3+
import android.app.NotificationManager;
34
import android.content.Context;
45
import android.graphics.Color;
56
import android.location.LocationProvider;
@@ -14,6 +15,7 @@
1415
import com.netease.im.contact.DefalutUserInfoProvider;
1516
import com.netease.im.contact.DefaultContactProvider;
1617
import com.netease.im.login.LoginService;
18+
import com.netease.im.session.SessionUtil;
1719
import com.netease.im.session.extension.CustomAttachParser;
1820
import com.netease.im.uikit.LoginSyncDataStatusObserver;
1921
import com.netease.im.uikit.cache.DataCacheManager;
@@ -25,12 +27,15 @@
2527
import com.netease.im.uikit.contact.core.ContactProvider;
2628
import com.netease.im.uikit.contact.core.query.PinYin;
2729
import com.netease.nimlib.sdk.NIMClient;
30+
import com.netease.nimlib.sdk.Observer;
2831
import com.netease.nimlib.sdk.SDKOptions;
2932
import com.netease.nimlib.sdk.StatusBarNotificationConfig;
3033
import com.netease.nimlib.sdk.auth.LoginInfo;
3134
import com.netease.nimlib.sdk.mixpush.NIMPushClient;
3235
import com.netease.nimlib.sdk.msg.MessageNotifierCustomization;
3336
import com.netease.nimlib.sdk.msg.MsgService;
37+
import com.netease.nimlib.sdk.msg.MsgServiceObserve;
38+
import com.netease.nimlib.sdk.msg.model.CustomNotification;
3439
import com.netease.nimlib.sdk.msg.model.IMMessage;
3540
import com.netease.nimlib.sdk.uinfo.UserInfoProvider;
3641

@@ -41,8 +46,6 @@
4146
public class IMApplication {
4247

4348

44-
45-
4649
public static class MiPushConfig {
4750

4851
public String certificate;
@@ -78,7 +81,7 @@ public MiPushConfig(String certificate, String appID, String appKey) {
7881
private static ImageLoaderKit imageLoaderKit;
7982
private static StatusBarNotificationConfig statusBarNotificationConfig;
8083

81-
public static void init(Context context, Class mainActivityClass,@DrawableRes int notify_msg_drawable_id, MiPushConfig miPushConfig) {
84+
public static void init(Context context, Class mainActivityClass, @DrawableRes int notify_msg_drawable_id, MiPushConfig miPushConfig) {
8285
IMApplication.context = context.getApplicationContext();
8386
IMApplication.mainActivityClass = mainActivityClass;
8487
IMApplication.notify_msg_drawable_id = notify_msg_drawable_id;
@@ -101,8 +104,17 @@ public static void init(Context context, Class mainActivityClass,@DrawableRes in
101104
initKit();
102105

103106
}
107+
NIMClient.getService(MsgServiceObserve.class).observeCustomNotification(notificationObserver, true);
104108
}
105109

110+
private static Observer<CustomNotification> notificationObserver = new Observer<CustomNotification>() {
111+
@Override
112+
public void onEvent(CustomNotification customNotification) {
113+
NotificationManager notificationManager = (NotificationManager) IMApplication.getContext().getSystemService(Context.NOTIFICATION_SERVICE);
114+
SessionUtil.receiver(notificationManager,customNotification);
115+
}
116+
};
117+
106118
private static boolean inMainProcess(Context context) {
107119
String packageName = context.getPackageName();
108120
String processName = SystemUtil.getProcessName(context);
@@ -130,7 +142,7 @@ private static SDKOptions getOptions(Context context) {
130142
SDKOptions options = new SDKOptions();
131143

132144
// 如果将新消息通知提醒托管给SDK完成,需要添加以下配置。
133-
initStatusBarNotificationConfig(options,context);
145+
initStatusBarNotificationConfig(options, context);
134146

135147
// 配置保存图片,文件,log等数据的目录
136148
String sdkPath = Environment.getExternalStorageDirectory() + "/" + context.getPackageName() + "/nim";
@@ -156,6 +168,7 @@ private static SDKOptions getOptions(Context context) {
156168

157169
return options;
158170
}
171+
159172
// 这里开发者可以自定义该应用初始的 StatusBarNotificationConfig
160173
private static StatusBarNotificationConfig loadStatusBarNotificationConfig(Context context) {
161174
StatusBarNotificationConfig config = new StatusBarNotificationConfig();
@@ -164,7 +177,7 @@ private static StatusBarNotificationConfig loadStatusBarNotificationConfig(Conte
164177
config.notificationSmallIconId = notify_msg_drawable_id;
165178

166179
// 通知铃声的uri字符串
167-
config.notificationSound = "android.resource://"+context.getPackageName()+"/raw/msg";
180+
config.notificationSound = "android.resource://" + context.getPackageName() + "/raw/msg";
168181

169182
// 呼吸灯配置
170183
config.ledARGB = Color.GREEN;
@@ -175,6 +188,7 @@ private static StatusBarNotificationConfig loadStatusBarNotificationConfig(Conte
175188
setStatusBarNotificationConfig(config);
176189
return config;
177190
}
191+
178192
private static void initStatusBarNotificationConfig(SDKOptions options, Context context) {
179193
// load 应用的状态栏配置
180194
StatusBarNotificationConfig config = loadStatusBarNotificationConfig(context);
@@ -194,6 +208,7 @@ private static void initStatusBarNotificationConfig(SDKOptions options, Context
194208
// SDK statusBarNotificationConfig 生效
195209
options.statusBarNotificationConfig = userConfig;
196210
}
211+
197212
private static MessageNotifierCustomization messageNotifierCustomization = new MessageNotifierCustomization() {
198213
@Override
199214
public String makeNotifyContent(String nick, IMMessage message) {
@@ -207,10 +222,8 @@ public String makeTicker(String nick, IMMessage message) {
207222
};
208223

209224

210-
211-
212225
/*********************/
213-
public static void initKit(){
226+
public static void initKit() {
214227
NIMClient.getService(MsgService.class).registerCustomAttachmentParser(new CustomAttachParser());
215228
initUserInfoProvider(userInfoProvider);
216229
initContactProvider(contactProvider);
@@ -236,6 +249,7 @@ public static void initKit(){
236249

237250

238251
}
252+
239253
// 初始化用户信息提供者
240254
private static void initUserInfoProvider(UserInfoProvider userInfoProvider) {
241255

@@ -255,13 +269,15 @@ private static void initContactProvider(ContactProvider contactProvider) {
255269

256270
IMApplication.contactProvider = contactProvider;
257271
}
272+
258273
public static UserInfoProvider getUserInfoProvider() {
259274
return userInfoProvider;
260275
}
261276

262277
public static ContactProvider getContactProvider() {
263278
return contactProvider;
264279
}
280+
265281
public static ImageLoaderKit getImageLoaderKit() {
266282
return imageLoaderKit;
267283
}

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

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import com.netease.im.uikit.cache.SimpleCallback;
3838
import com.netease.im.uikit.cache.TeamDataCache;
3939
import com.netease.im.uikit.common.util.log.LogUtil;
40-
import com.netease.im.uikit.common.util.string.MD5;
4140
import com.netease.im.uikit.contact.core.model.ContactDataList;
4241
import com.netease.im.uikit.permission.MPermission;
4342
import com.netease.im.uikit.permission.annotation.OnMPermissionDenied;
@@ -140,9 +139,9 @@ public void init(Promise promise) {
140139
*/
141140
@ReactMethod
142141
public void login(String contactId, String token, final Promise promise) {
143-
LogUtil.i(TAG, "contactId:" + contactId);
144-
LogUtil.i(TAG, "token:" + token);
145-
LogUtil.i(TAG, "md5:" + MD5.getStringMD5(token));
142+
// LogUtil.i(TAG, "contactId:" + contactId);
143+
// LogUtil.i(TAG, "token:" + token);
144+
// LogUtil.i(TAG, "md5:" + MD5.getStringMD5(token));
146145
LoginService.getInstance().login(new LoginInfo(contactId, token), new RequestCallback<LoginInfo>() {
147146
@Override
148147
public void onSuccess(LoginInfo loginInfo) {
@@ -1031,13 +1030,27 @@ public void onResult(int code, Void aVoid, Throwable throwable) {
10311030
/**
10321031
* 发送文本消息
10331032
*
1034-
* @param content 文本内容
1033+
* @param content 文本内容
1034+
* @param atUserIds
10351035
* @param promise
10361036
*/
10371037
@ReactMethod
1038+
public void sendTextMessage(String content, ReadableArray atUserIds, final Promise promise) {
1039+
LogUtil.i(TAG, "sendTextMessage" + content);
1040+
1041+
List<String> atUserIdList = array2ListString(atUserIds);
1042+
sessionService.sendTextMessage(content, atUserIdList, new SessionService.OnSendMessageListener() {
1043+
@Override
1044+
public int onResult(int code, IMMessage message) {
1045+
// promise.resolve(ReactCache.createMessage(message,null));
1046+
return 0;
1047+
}
1048+
});
1049+
}
1050+
10381051
public void sendTextMessage(String content, final Promise promise) {
10391052
LogUtil.i(TAG, "sendTextMessage" + content);
1040-
sessionService.sendTextMessage(content, new SessionService.OnSendMessageListener() {
1053+
sessionService.sendTextMessage(content, null, new SessionService.OnSendMessageListener() {
10411054
@Override
10421055
public int onResult(int code, IMMessage message) {
10431056
// promise.resolve(ReactCache.createMessage(message,null));

android/src/main/java/com/netease/im/receiver/CustomNotificationReceiver.java

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

99
import com.netease.im.IMApplication;
10-
import com.netease.im.session.SessionUtil;
1110
import com.netease.im.uikit.common.util.log.LogUtil;
1211
import com.netease.nimlib.sdk.NimIntent;
13-
import com.netease.nimlib.sdk.msg.model.CustomNotification;
1412

1513
/**
1614
* 自定义通知消息广播接收器
@@ -26,12 +24,12 @@ public void onReceive(Context context, Intent intent) {
2624
if (action.equals(intent.getAction())) {
2725

2826
// 从intent中取出自定义通知
29-
try {
30-
CustomNotification notification = (CustomNotification) intent.getSerializableExtra(NimIntent.EXTRA_BROADCAST_MSG);
31-
SessionUtil.receiver(getNotificationManager(), notification);
32-
} catch (Exception e) {
33-
LogUtil.e("CustomNotificationReceiver", e.getMessage());
34-
}
27+
// try {
28+
// CustomNotification notification = (CustomNotification) intent.getSerializableExtra(NimIntent.EXTRA_BROADCAST_MSG);
29+
// SessionUtil.receiver(getNotificationManager(), notification);
30+
// } catch (Exception e) {
31+
// LogUtil.e("CustomNotificationReceiver", e.getMessage());
32+
// }
3533
}
3634
}
3735
public NotificationManager getNotificationManager() {

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

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.netease.nimlib.sdk.msg.model.AttachmentProgress;
3535
import com.netease.nimlib.sdk.msg.model.CustomMessageConfig;
3636
import com.netease.nimlib.sdk.msg.model.IMMessage;
37+
import com.netease.nimlib.sdk.msg.model.MemberPushOption;
3738
import com.netease.nimlib.sdk.msg.model.MessageReceipt;
3839
import com.netease.nimlib.sdk.msg.model.QueryDirectionEnum;
3940

@@ -558,9 +559,14 @@ public int onResult(int code, IMMessage message) {
558559
/**
559560
* @param content
560561
*/
561-
public void sendTextMessage(String content, OnSendMessageListener onSendMessageListener) {
562+
public void sendTextMessage(String content, List<String> selectedMembers, OnSendMessageListener onSendMessageListener) {
562563

563564
IMMessage message = MessageBuilder.createTextMessage(sessionId, sessionTypeEnum, content);
565+
566+
if (selectedMembers != null && !selectedMembers.isEmpty()) {
567+
MemberPushOption option = createMemPushOption(selectedMembers, message);
568+
message.setMemberPushOption(option);
569+
}
564570
sendMessage(message, onSendMessageListener);
565571
}
566572

@@ -770,6 +776,18 @@ private void appendPushConfig(IMMessage message) {
770776
// }
771777
}
772778

779+
private MemberPushOption createMemPushOption(List<String> selectedMembers, IMMessage message) {
780+
781+
if (selectedMembers.isEmpty()) {
782+
return null;
783+
}
784+
785+
MemberPushOption memberPushOption = new MemberPushOption();
786+
memberPushOption.setForcePush(true);
787+
memberPushOption.setForcePushContent(message.getContent());
788+
memberPushOption.setForcePushList(selectedMembers);
789+
return memberPushOption;
790+
}
773791
private boolean isOriginImageHasDownloaded(final IMMessage message) {
774792

775793
if (message.getAttachStatus() == AttachStatusEnum.transferred) {

index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ export default class NIM{
276276
/**
277277
*1.发送文本消息
278278
* @param content 文本内容
279+
* @param atUserIds @的群成员ID ["abc","abc12"]
279280
*/
280281
static sendTextMessage(content,atUserIds){
281282
return RNNeteaseIm.sendTextMessage(content,atUserIds);

0 commit comments

Comments
 (0)