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