|
@@ -15,8 +15,8 @@ let kRongCloudIMDevAppKey = "82hegw5u8xlxx"
|
|
let kRongCloudIMDevAppSecret = "NudgmZEaAV2uY"
|
|
let kRongCloudIMDevAppSecret = "NudgmZEaAV2uY"
|
|
|
|
|
|
// MARK: 生成环境key
|
|
// MARK: 生成环境key
|
|
-let kRongCloudIMProAppKey = ""
|
|
|
|
-let kRongCloudIMProAppSecret = ""
|
|
|
|
|
|
+let kRongCloudIMProAppKey = "e0x9wycfebqbq"
|
|
|
|
+let kRongCloudIMProAppSecret = "E89XIotnMKMYW"
|
|
|
|
|
|
class RongCloudIMManager: NSObject {
|
|
class RongCloudIMManager: NSObject {
|
|
|
|
|
|
@@ -59,32 +59,39 @@ class RongCloudIMManager: NSObject {
|
|
@discussion 如果设置为NO,则SDK在需要显示用户信息时,会调用用户信息提供者获取用户信息并缓存到Cache,此Cache在App生命周期结束时会被移除,下次启动时会再次通过用户信息提供者获取信息。
|
|
@discussion 如果设置为NO,则SDK在需要显示用户信息时,会调用用户信息提供者获取用户信息并缓存到Cache,此Cache在App生命周期结束时会被移除,下次启动时会再次通过用户信息提供者获取信息。
|
|
如果设置为YES,则会将获取到的用户信息持久化存储在本地,App下次启动时Cache会仍然有效。
|
|
如果设置为YES,则会将获取到的用户信息持久化存储在本地,App下次启动时Cache会仍然有效。
|
|
*/
|
|
*/
|
|
- RCIM.shared()?.enablePersistentUserInfoCache = false
|
|
|
|
|
|
+ RCIM.shared()?.enablePersistentUserInfoCache = false
|
|
//开启多端未读状态同步
|
|
//开启多端未读状态同步
|
|
- RCIM.shared()?.enableSyncReadStatus = true
|
|
|
|
|
|
+ RCIM.shared()?.enableSyncReadStatus = true
|
|
|
|
+ //是否在发送的所有消息中携带当前登录的用户信息,默认值为 NO
|
|
|
|
+ RCIM.shared()?.enableMessageAttachUserInfo = false
|
|
//设置头像为圆形
|
|
//设置头像为圆形
|
|
- RCIM.shared()?.globalMessageAvatarStyle = .USER_AVATAR_RECTANGLE
|
|
|
|
- RCIM.shared()?.globalConversationAvatarStyle = .USER_AVATAR_CYCLE
|
|
|
|
|
|
+ RCIM.shared()?.globalMessagePortraitSize = CGSize(width: 50, height: 50)
|
|
|
|
+ RCIM.shared()?.globalMessageAvatarStyle = .USER_AVATAR_CYCLE
|
|
|
|
+ RCIM.shared()?.globalConversationPortraitSize = CGSize(width: 50, height: 50)
|
|
|
|
+ RCIM.shared()?.globalConversationAvatarStyle = .USER_AVATAR_CYCLE
|
|
//设置优先使用WebView打开URL
|
|
//设置优先使用WebView打开URL
|
|
RCIM.shared()?.embeddedWebViewPreferred = true
|
|
RCIM.shared()?.embeddedWebViewPreferred = true
|
|
|
|
+ //消息回撤
|
|
|
|
+ RCIM.shared()?.enableMessageRecall = true
|
|
|
|
+ // 2分钟内的消息
|
|
|
|
+ RCIM.shared()?.maxRecallDuration = 120
|
|
|
|
+
|
|
|
|
+ if UserModel.shared().getModel()?.rongCloudToken != nil {
|
|
|
|
+ loginRCIM {}
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/// 链接融云
|
|
/// 链接融云
|
|
- func loginRCIM() {
|
|
|
|
|
|
+ func loginRCIM(success:() -> Void) {
|
|
RCIM.shared()?.connect(withToken: UserModel.shared().getModel()?.rongCloudToken, success: { userId in
|
|
RCIM.shared()?.connect(withToken: UserModel.shared().getModel()?.rongCloudToken, success: { userId in
|
|
let userModel = UserModel.shared().getModel()
|
|
let userModel = UserModel.shared().getModel()
|
|
- if kPersonalService /** 接口前缀-个人服务器*/ {
|
|
|
|
- }else if kDevelopSever /** 接口前缀-开发服务器*/ {
|
|
|
|
- userModel?.betaRCIMUid = userId
|
|
|
|
- } else if kBetaSever /** 接口前缀-测试服务器*/{
|
|
|
|
- userModel?.proRCIMUid = userId
|
|
|
|
- }else if kProductSever /** 接口前缀-生产服务器*/ {
|
|
|
|
- userModel?.devRCIMUid = userId
|
|
|
|
- }
|
|
|
|
|
|
+ userModel?.rcIMUid = userId
|
|
UserModel.shared().setModel(model: userModel ?? UserModel())
|
|
UserModel.shared().setModel(model: userModel ?? UserModel())
|
|
|
|
+ //存储当前用户的信息
|
|
|
|
+ RCIM.shared()?.currentUserInfo = RCUserInfo(userId: userId, name: userModel?.username, portrait: userModel?.avatarurl)
|
|
}, error: { [weak self] (status) in
|
|
}, error: { [weak self] (status) in
|
|
if status == .CONN_TOKEN_INCORRECT { //token无效
|
|
if status == .CONN_TOKEN_INCORRECT { //token无效
|
|
- self?.loginRCIM()
|
|
|
|
|
|
+ self?.loginRCIM {}
|
|
} else if (status == .DISCONN_KICK) { //被踢下线
|
|
} else if (status == .DISCONN_KICK) { //被踢下线
|
|
SwiftProgressHUD.shared().showText("您的帐号在别的设备上登录,/n您被迫下线!")
|
|
SwiftProgressHUD.shared().showText("您的帐号在别的设备上登录,/n您被迫下线!")
|
|
kAppDelegate.setLoginOut()
|
|
kAppDelegate.setLoginOut()
|
|
@@ -93,9 +100,18 @@ class RongCloudIMManager: NSObject {
|
|
//token过期或者不正确。
|
|
//token过期或者不正确。
|
|
//如果设置了token有效期并且token过期,请重新请求您的服务器获取新的token
|
|
//如果设置了token有效期并且token过期,请重新请求您的服务器获取新的token
|
|
//如果没有设置token有效期却提示token错误,请检查您客户端和服务器的appkey是否匹配,还有检查您获取token的流程。
|
|
//如果没有设置token有效期却提示token错误,请检查您客户端和服务器的appkey是否匹配,还有检查您获取token的流程。
|
|
- self?.loginRCIM()
|
|
|
|
|
|
+ self?.loginRCIM {}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /// 刷新用户缓存
|
|
|
|
+ func refreshUserInfoCache() {
|
|
|
|
+ let userModel = UserModel.shared().getModel()
|
|
|
|
+ let rcUserInfo = RCIM.shared()?.currentUserInfo
|
|
|
|
+ rcUserInfo?.name = userModel?.username
|
|
|
|
+ rcUserInfo?.portraitUri = userModel?.avatarurl
|
|
|
|
+ RCIM.shared()?.refreshUserInfoCache(rcUserInfo, withUserId: userModel?.rcIMUid)
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -120,7 +136,7 @@ extension RongCloudIMManager : RCIMUserInfoDataSource {
|
|
/// - Parameter completion: 获取用户信息完成之后需要执行的Block [userInfo:该用户ID对应的用户信息]
|
|
/// - Parameter completion: 获取用户信息完成之后需要执行的Block [userInfo:该用户ID对应的用户信息]
|
|
func getUserInfo(withUserId userId: String!, completion: ((RCUserInfo?) -> Void)!) {
|
|
func getUserInfo(withUserId userId: String!, completion: ((RCUserInfo?) -> Void)!) {
|
|
|
|
|
|
- let userInfo = RCUserInfo.init(userId: UserModel.shared().getModel()?.devRCIMUid, name: UserModel.shared().getModel()?.username, portrait: UserModel.shared().getModel()?.avatarurl)
|
|
|
|
|
|
+ let userInfo = RCUserInfo.init(userId: UserModel.shared().getModel()?.rcIMUid, name: UserModel.shared().getModel()?.username, portrait: UserModel.shared().getModel()?.avatarurl)
|
|
return completion(userInfo)
|
|
return completion(userInfo)
|
|
}
|
|
}
|
|
}
|
|
}
|