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