NIMSDK-AOS  10.9.90
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) {
101  this.enableLbs = enableLbs;
102  }
103 
104  /**
105  * 兼容旧接口,enableLbs 只控制是否通过 LBS 获取聊天室链路。
106  * account/token/isAnonymousMode 仅在独立模式下才会生效。
107  */
108  public void setEnableLbs(boolean enableLbs, String account, String token, boolean isAnonymousMode) {
109  this.enableLbs = enableLbs;
110  if (independentMode) {
111  setIndependentModeInternal(account, token, isAnonymousMode);
112  }
113  }
114 
115  /**
116  * 获取聊天室appKey
117  *
118  * @return
119  */
120  public String getAppKey() {
121  return appKey;
122  }
123 
124  /**
125  * 设置聊天室appKey,独立登录模式下,才启用, 不传则使用IM对应的appKey, 需要保证roomId与appKey的对应关系
126  *
127  * @param appKey
128  */
129  public void setAppKey(String appKey) {
130  this.appKey = appKey;
131  }
132 
133  /**
134  * 获取聊天室展示的昵称
135  *
136  * @return
137  */
138  public String getNick() {
139  return nick;
140  }
141 
142  /**
143  * 设置聊天室展示的昵称,可选字段,如果不填则直接使用NimUserInfo的数据
144  *
145  * @param nick
146  */
147  public void setNick(String nick) {
148  this.nick = nick;
149  }
150 
151  /**
152  * 获取聊天室展示的头像
153  *
154  * @return
155  */
156  public String getAvatar() {
157  return avatar;
158  }
159 
160  /**
161  * 设置聊天室展示的头像
162  *
163  * @param avatar
164  */
165  public void setAvatar(String avatar) {
166  this.avatar = avatar;
167  }
168 
169  /**
170  * 获取进入聊天室后展示的扩展字段
171  *
172  * @return
173  */
174  public Map<String, Object> getExtension() {
175  return extension;
176  }
177 
178  /**
179  * 设置进入聊天室后展示的扩展字段,长度限制4k
180  *
181  * @param extension
182  */
183  public void setExtension(Map<String, Object> extension) {
184  this.extension = extension;
185  }
186 
187  /**
188  * 获取聊天室通知开发者扩展字段
189  *
190  * @return
191  */
192  public Map<String, Object> getNotifyExtension() {
193  return notifyExtension;
194  }
195 
196  /**
197  * 设置聊天室通知开发者扩展字段,长度限制1k
198  *
199  * @param notifyExtension
200  */
201  public void setNotifyExtension(Map<String, Object> notifyExtension) {
202  this.notifyExtension = notifyExtension;
203  }
204 
205  /**
206  * 获取 登录标签
207  * @return
208  */
209  public String getTags() {
210  return tags;
211  }
212 
213  /**
214  * 设置 登录标签
215  * @param tags
216  */
217  public void setTags(String tags) {
218  this.tags = tags;
219  }
220 
221  /**
222  * 获取 登录登出通知的目标标签
223  * @return
224  */
225  public String getNotifyTargetTags() {
226  return notifyTargetTags;
227  }
228 
229  /**
230  * 设置 登录登出通知的目标标签
231  * @param notifyTargetTags
232  */
233  public void setNotifyTargetTags(String notifyTargetTags) {
234  this.notifyTargetTags = notifyTargetTags;
235  }
236 
237  /**
238  * 是否是独立登录聊天室
239  *
240  * @return false,需要IM先登录才可以进入聊天室。true,不需要依赖IM,支持匿名登录,实际账号密码登录。
241  */
242  public boolean isIndependentMode() {
243  return independentMode;
244  }
245 
246  public boolean isAnonymousMode() {
247  return isAnonymousMode;
248  }
249 
250  /**
251  * 获取独立登录模式的用户账号
252  *
253  * @return 账号,null表示匿名登录
254  */
255  public String getAccount() {
256  return account;
257  }
258 
259  /**
260  * 获取独立登录模式的用户密码
261  *
262  * @return 登录口令
263  */
264  public String getToken() {
265  return token;
266  }
267 
268  /**
269  * 获取鉴权方式
270  * @return
271  */
272  public Integer getLoginAuthType() {
273  return loginAuthType;
274  }
275 
276  /**
277  * 设置鉴权方式
278  * @param loginAuthType
279  */
280  public void setLoginAuthType(Integer loginAuthType) {
281  this.loginAuthType = loginAuthType;
282  }
283 
284  /**
285  * 获取登录自定义字段
286  * @return
287  */
288  public String getLoginExt() {
289  return loginExt;
290  }
291 
292  /**
293  * 设置登录自定义字段
294  * @param loginExt
295  */
296  public void setLoginExt(String loginExt) {
297  this.loginExt = loginExt;
298  }
299 
301  return chatRoomSpatialLocation;
302  }
303 
304  public void setChatRoomSpatialLocation(ChatRoomSpatialLocation chatRoomSpatialLocation) {
305  this.chatRoomSpatialLocation = chatRoomSpatialLocation;
306  }
307 
308  @Deprecated
310  return chatRoomAuthProvider;
311  }
312 
313  @Deprecated
315  ChatRoomAuthProvider chatRoomAuthProvider) {
316  this.chatRoomAuthProvider = chatRoomAuthProvider;
317  }
318 
320  return independentModeCallback;
321  }
322 
324  return antiSpamConfig;
325  }
326 
327  public void setAntiSpamConfig(AntiSpamConfig antiSpamConfig) {
328  this.antiSpamConfig = antiSpamConfig;
329  }
330 
331  /**
332  * 设置聊天室独立模式
333  *
334  * @param cb 如果是独立模式,必须提供回调函数,用于SDK向APP获取聊天室地址信息的数据。
335  * @param account 独立登录的账号,可以不填。不填即为匿名登录
336  * @param token 独立登录的密码。
337  */
338  public void setIndependentMode(ChatRoomIndependentCallback cb, String account, String token) {
339  this.independentMode = true;
340  this.independentModeCallback = cb;
341  setIndependentModeInternal(account, token, TextUtils.isEmpty(account));
342  }
343 
344  protected void setIndependentModeInternal(String account, String token, boolean isAnonymousMode) {
345  this.account = account;
346  this.token = token;
347  this.isAnonymousMode = isAnonymousMode;
348  }
349 
350  /**
351  * 设置聊天室独立模式
352  *
353  * @param cb 如果是独立模式,必须提供回调函数,用于SDK向APP获取聊天室地址信息的数据。
354  * @param account 独立登录的账号,
355  * @param token 独立登录的密码。
356  * @param isAnonymousMode 是否匿名模式,如果为false,account参数不可为空
357  */
358  public void setIndependentMode(ChatRoomIndependentCallback cb, String account, String token,boolean isAnonymousMode) {
359  this.independentMode = true;
360  this.independentModeCallback = cb;
361  setIndependentModeInternal(account, token, isAnonymousMode);
362  }
363 
364  public EnterChatRoomData(String roomId) {
365  this.roomId = roomId;
366  }
367 
368  public boolean isValid() {
369  if (TextUtils.isEmpty(roomId)) {
370  return false;
371  }
372  try {
373  Long.parseLong(roomId);
374  return true;
375  } catch (NumberFormatException e) {
376  return false;
377  }
378  }
379 }
聊天室独立登录模式的回调函数,用于上层 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)
兼容旧接口,enableLbs 只控制是否通过 LBS 获取聊天室链路。 account/token/isAnonymousMode 仅在独立模式...
boolean isIndependentMode()
是否是独立登录聊天室
void setChatRoomSpatialLocation(ChatRoomSpatialLocation chatRoomSpatialLocation)
void setNotifyExtension(Map< String, Object > notifyExtension)
设置聊天室通知开发者扩展字段,长度限制1k