NIMSDK-AOS  10.9.43
EnterChatRoomData.java
浏览该文件的文档.
1 package com.netease.nimlib.sdk.chatroom.model;
2 
3 import android.text.TextUtils;
4 
5 import com.netease.nimlib.abtest.ABTestConfigHelper;
6 import com.netease.nimlib.log.NimLog;
8 import java.util.Map;
9 
10 /**
11  * Created by huangjun on 2015/12/28.
12  */
13 public class EnterChatRoomData {
14 
15  private static final String TAG = "EnterChatRoomData";
16 
17  private String roomId; // 必填,聊天室ID
18 
19  private boolean enableLbs; // 启用LBS,默认false
20 
21  /*
22  * 独立模式
23  */
24  private boolean independentMode; // 是否是独立模式登录,默认为false,需要依赖IM登录。独立模式可以不依赖IM登录。
25  /**
26  * 是否匿名模式
27  */
28  private boolean isAnonymousMode;
29 
30  /**
31  * 独立登录模式下,才启用
32  */
33  private String appKey; // 聊天室可以使用独立的appkey, 不依赖于im appkey, 如果不传,则使用im appkey,
34 
35  private String account; // 登录用户名,不填则表示匿名
36 
37  private String token; // 登录token
38 
39  private ChatRoomIndependentCallback independentModeCallback; // 独立模式的回调
40 
41  /*
42  * 可选字段,如果不填则直接使用NimUserInfo的数据
43  */
44  private String nick; // 进入聊天室后展示的昵称
45 
46  private String avatar; // 进入聊天室后展示的头像
47 
48  private Map<String, Object> extension; // 进入聊天室后展示的扩展字段,长度限制4K
49 
50  private Map<String, Object> notifyExtension; // 进入聊天室通知开发者扩展字段,长度限制2K
51 
52  private String tags; // 登录标签,可以设置多个,json_array格式,例子:["tag1", "tag2"]
53 
54  private String notifyTargetTags; // 登录登出通知的目标标签,是一个标签表达式,见TagCalculator和TagPattern
55  /**
56  * 反垃圾配置参数
57  */
58  private AntiSpamConfig antiSpamConfig;
59 
60  private Integer loginAuthType; //鉴权方式,0表示最初的loginToken的校验方式,1表示基于appSecret计算的token鉴权方式,2表示基于第三方回调的token鉴权方式,默认0
61 
62  private String loginExt; //登录自定义字段,用于提交给用户的第三方回调服务进行登录检测
63 
64  private ChatRoomSpatialLocation chatRoomSpatialLocation; //空间位置信息
65  /**
66  * loginAuthType=1时必须要设置
67  * @Deprecated 请使用 SDKOptions.ChatRoomAuthProvider
68  */
69  @Deprecated
70  private ChatRoomAuthProvider chatRoomAuthProvider;//动态token提供回调
71 
72  /**
73  * 获取聊天室id
74  *
75  * @return
76  */
77  public String getRoomId() {
78  return roomId;
79  }
80 
81  /**
82  * 设置聊天室id
83  *
84  * @param roomId
85  */
86  public void setRoomId(String roomId) {
87  this.roomId = roomId;
88  }
89 
90  public boolean isEnableLbs() {
91  String abTestConfig = ABTestConfigHelper.getChatRoomLinkConfig();
92  if (TextUtils.isEmpty(abTestConfig)) {
93  return enableLbs;
94  } else {
95  NimLog.w(TAG, "abTestConfig as isEnableLbs: " + abTestConfig);
96  return true;
97  }
98  }
99 
100  public void setEnableLbs(boolean enableLbs, String account, String token, boolean isAnonymousMode) {
101  this.enableLbs = enableLbs;
102  setIndependentModeInternal(account, token, isAnonymousMode);
103  }
104 
105  /**
106  * 获取聊天室appKey
107  *
108  * @return
109  */
110  public String getAppKey() {
111  return appKey;
112  }
113 
114  /**
115  * 设置聊天室appKey,独立登录模式下,才启用, 不传则使用IM对应的appKey, 需要保证roomId与appKey的对应关系
116  *
117  * @param appKey
118  */
119  public void setAppKey(String appKey) {
120  this.appKey = appKey;
121  }
122 
123  /**
124  * 获取聊天室展示的昵称
125  *
126  * @return
127  */
128  public String getNick() {
129  return nick;
130  }
131 
132  /**
133  * 设置聊天室展示的昵称,可选字段,如果不填则直接使用NimUserInfo的数据
134  *
135  * @param nick
136  */
137  public void setNick(String nick) {
138  this.nick = nick;
139  }
140 
141  /**
142  * 获取聊天室展示的头像
143  *
144  * @return
145  */
146  public String getAvatar() {
147  return avatar;
148  }
149 
150  /**
151  * 设置聊天室展示的头像
152  *
153  * @param avatar
154  */
155  public void setAvatar(String avatar) {
156  this.avatar = avatar;
157  }
158 
159  /**
160  * 获取进入聊天室后展示的扩展字段
161  *
162  * @return
163  */
164  public Map<String, Object> getExtension() {
165  return extension;
166  }
167 
168  /**
169  * 设置进入聊天室后展示的扩展字段,长度限制4k
170  *
171  * @param extension
172  */
173  public void setExtension(Map<String, Object> extension) {
174  this.extension = extension;
175  }
176 
177  /**
178  * 获取聊天室通知开发者扩展字段
179  *
180  * @return
181  */
182  public Map<String, Object> getNotifyExtension() {
183  return notifyExtension;
184  }
185 
186  /**
187  * 设置聊天室通知开发者扩展字段,长度限制1k
188  *
189  * @param notifyExtension
190  */
191  public void setNotifyExtension(Map<String, Object> notifyExtension) {
192  this.notifyExtension = notifyExtension;
193  }
194 
195  /**
196  * 获取 登录标签
197  * @return
198  */
199  public String getTags() {
200  return tags;
201  }
202 
203  /**
204  * 设置 登录标签
205  * @param tags
206  */
207  public void setTags(String tags) {
208  this.tags = tags;
209  }
210 
211  /**
212  * 获取 登录登出通知的目标标签
213  * @return
214  */
215  public String getNotifyTargetTags() {
216  return notifyTargetTags;
217  }
218 
219  /**
220  * 设置 登录登出通知的目标标签
221  * @param notifyTargetTags
222  */
223  public void setNotifyTargetTags(String notifyTargetTags) {
224  this.notifyTargetTags = notifyTargetTags;
225  }
226 
227  /**
228  * 是否是独立登录聊天室
229  *
230  * @return false,需要IM先登录才可以进入聊天室。true,不需要依赖IM,支持匿名登录,实际账号密码登录。
231  */
232  public boolean isIndependentMode() {
233  return independentMode;
234  }
235 
236  public boolean isAnonymousMode() {
237  return isAnonymousMode;
238  }
239 
240  /**
241  * 获取独立登录模式的用户账号
242  *
243  * @return 账号,null表示匿名登录
244  */
245  public String getAccount() {
246  return account;
247  }
248 
249  /**
250  * 获取独立登录模式的用户密码
251  *
252  * @return 登录口令
253  */
254  public String getToken() {
255  return token;
256  }
257 
258  /**
259  * 获取鉴权方式
260  * @return
261  */
262  public Integer getLoginAuthType() {
263  return loginAuthType;
264  }
265 
266  /**
267  * 设置鉴权方式
268  * @param loginAuthType
269  */
270  public void setLoginAuthType(Integer loginAuthType) {
271  this.loginAuthType = loginAuthType;
272  }
273 
274  /**
275  * 获取登录自定义字段
276  * @return
277  */
278  public String getLoginExt() {
279  return loginExt;
280  }
281 
282  /**
283  * 设置登录自定义字段
284  * @param loginExt
285  */
286  public void setLoginExt(String loginExt) {
287  this.loginExt = loginExt;
288  }
289 
291  return chatRoomSpatialLocation;
292  }
293 
294  public void setChatRoomSpatialLocation(ChatRoomSpatialLocation chatRoomSpatialLocation) {
295  this.chatRoomSpatialLocation = chatRoomSpatialLocation;
296  }
297 
298  @Deprecated
300  return chatRoomAuthProvider;
301  }
302 
303  @Deprecated
305  ChatRoomAuthProvider chatRoomAuthProvider) {
306  this.chatRoomAuthProvider = chatRoomAuthProvider;
307  }
308 
310  return independentModeCallback;
311  }
312 
314  return antiSpamConfig;
315  }
316 
317  public void setAntiSpamConfig(AntiSpamConfig antiSpamConfig) {
318  this.antiSpamConfig = antiSpamConfig;
319  }
320 
321  /**
322  * 设置聊天室独立模式
323  *
324  * @param cb 如果是独立模式,必须提供回调函数,用于SDK向APP获取聊天室地址信息的数据。
325  * @param account 独立登录的账号,可以不填。不填即为匿名登录
326  * @param token 独立登录的密码。
327  */
328  public void setIndependentMode(ChatRoomIndependentCallback cb, String account, String token) {
329  this.independentMode = true;
330  this.independentModeCallback = cb;
331  setIndependentModeInternal(account, token, TextUtils.isEmpty(account));
332  }
333 
334  protected void setIndependentModeInternal(String account, String token, boolean isAnonymousMode) {
335  this.account = account;
336  this.token = token;
337  this.isAnonymousMode = isAnonymousMode;
338  }
339 
340  /**
341  * 设置聊天室独立模式
342  *
343  * @param cb 如果是独立模式,必须提供回调函数,用于SDK向APP获取聊天室地址信息的数据。
344  * @param account 独立登录的账号,
345  * @param token 独立登录的密码。
346  * @param isAnonymousMode 是否匿名模式,如果为false,account参数不可为空
347  */
348  public void setIndependentMode(ChatRoomIndependentCallback cb, String account, String token,boolean isAnonymousMode) {
349  this.independentMode = true;
350  this.independentModeCallback = cb;
351  setIndependentModeInternal(account, token, isAnonymousMode);
352  }
353 
354  public EnterChatRoomData(String roomId) {
355  this.roomId = roomId;
356  }
357 
358  public boolean isValid() {
359  if (TextUtils.isEmpty(roomId)) {
360  return false;
361  }
362  try {
363  Long.parseLong(roomId);
364  return true;
365  } catch (NumberFormatException e) {
366  return false;
367  }
368  }
369 }
聊天室独立登录模式的回调函数,用于上层 APP 向 SDK 提供数据
void setLoginAuthType(Integer loginAuthType)
设置鉴权方式
Map< String, Object > getExtension()
获取进入聊天室后展示的扩展字段
void setNotifyTargetTags(String notifyTargetTags)
设置 登录登出通知的目标标签
String getAvatar()
获取聊天室展示的头像
String getNotifyTargetTags()
获取 登录登出通知的目标标签
void setIndependentMode(ChatRoomIndependentCallback cb, String account, String token)
设置聊天室独立模式
String getAccount()
获取独立登录模式的用户账号
使用进入聊天室时使用动态token方式时,SDK通过该接口从App获取动态token
void setAvatar(String avatar)
设置聊天室展示的头像
void setExtension(Map< String, Object > extension)
设置进入聊天室后展示的扩展字段,长度限制4k
void setLoginExt(String loginExt)
设置登录自定义字段
String getToken()
获取独立登录模式的用户密码
Map< String, Object > getNotifyExtension()
获取聊天室通知开发者扩展字段
void setIndependentModeInternal(String account, String token, boolean isAnonymousMode)
void setNick(String nick)
设置聊天室展示的昵称,可选字段,如果不填则直接使用NimUserInfo的数据
void setAppKey(String appKey)
设置聊天室appKey,独立登录模式下,才启用, 不传则使用IM对应的appKey, 需要保证roomId与appKey的对应关...
void setChatRoomAuthProvider(ChatRoomAuthProvider chatRoomAuthProvider)
void setIndependentMode(ChatRoomIndependentCallback cb, String account, String token, boolean isAnonymousMode)
设置聊天室独立模式
void setEnableLbs(boolean enableLbs, String account, String token, boolean isAnonymousMode)
boolean isIndependentMode()
是否是独立登录聊天室
void setChatRoomSpatialLocation(ChatRoomSpatialLocation chatRoomSpatialLocation)
void setNotifyExtension(Map< String, Object > notifyExtension)
设置聊天室通知开发者扩展字段,长度限制1k