用户登录腾讯后台服务器后才能正常收发消息,登录需要用户提供 UserID
、UserSig
。如果用户保存用户票据,可能会存在过期的情况,如果用户票据过期,login
将会返回 6206
错误码,开发者可根据错误码进行票据更换。登录为异步过程,通过回调函数返回是否成功,成功后方能进行后续操作。登录成功或者失败后使用闭包 succ
和 fail
进行回调。
注意:
- 如果此用户在其他终端被踢,登录将会失败,返回错误码(
ERR_IMSDK_KICKED_BY_OTHERS:6208
)。开发者必须进行登录错误码ERR_IMSDK_KICKED_BY_OTHERS
的判断。关于被踢的详细描述,参见 用户状态变更。- 只要登录成功以后,用户没有主动登出或者被踢,网络变更会自动重连,无需开发者关心。不过特别需要注意被踢操作,需要注册 用户状态变更回调,否则被踢时得不到通知。
原型:
/**
* 登录信息
*/
@interface TIMLoginParam : NSObject
/**
* 用户名
*/
@property(nonatomic,retain) NSString* identifier;
/**
* 鉴权 Token
*/
@property(nonatomic,retain) NSString* userSig;
@end
/**
* 登录
*
* @param param 登录参数
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 请求成功
*/
- (int)login:(TIMLoginParam*)param succ:(TIMLoginSucc)succ fail:(TIMFail)fail;
@end
参数说明:
参数 | 说明 |
---|---|
param | 登录参数,详细信息参见 TIMLoginParam 结构说明 |
succ | 登录成功回调 |
fail | 登录失败回调 |
示例:
TIMLoginParam * login_param = [[TIMLoginParam alloc ]init];
// identifier 为用户名
login_param.identifier = @"iOS_001";
//userSig 为用户登录凭证
login_param.userSig = @"usersig";
[[TIMManager sharedInstance] login: login_param succ:^(){
NSLog(@"Login succ");
} fail:^(int code, NSString * err) {
NSLog(@"Login Failed: %d->%@", code, err);
}];
UserSig 正确的签发方式请参考 登录鉴权。
如用户主动注销或需要进行用户的切换,则需要调用注销操作。
原型:
@interface TIMManager : NSObject
/**
* 登出
*
* @param succ 成功回调,登出成功
* @param fail 失败回调,返回错误码和错误信息
*
* @return 0 发送登出包成功,等待回调
*/
- (int)logout:(TIMLoginSucc)succ fail:(TIMFail)fail;
@end
示例:
注意:在需要切换帐号时,需要
logout
回调成功或者失败后才能再次login
,否则login
可能会失败。
[[TIMManager sharedInstance] logout:^() {
NSLog(@"logout succ");
} fail:^(int code, NSString * err) {
NSLog(@"logout fail: code=%d err=%@", code, err);
}];
如用当前网络异常,或者想在不调用 login
的时候查看用户消息,可调用 initStorage
方法初始化存储,完成后可获取会话列表和消息。
原型:
@interface TIMManager : NSObject
/**
* 初始化存储,仅查看历史消息时使用,如果要收发消息等操作,如 login 成功,不需要调用此函数
*
* @param userID 用户名
* @param succ 成功回调,收到回调时,可以获取会话列表和消息
* @param fail 失败回调
*
* @return 0 请求成功
*/
- (int)initStorage:(NSString*)userID succ:(TIMLoginSucc)succ fail:(TIMFail)fail;
@end
参数说明:
参数 | 说明 |
---|---|
userID | 用户名 |
succ | 成功回调,成功后可获取会话列表,以及进一步登录 |
fail | 失败回调 |
以下示例中初始化存储,成功后可获取会话列表。示例:
TIMLoginParam * login_param = [[TIMLoginParam alloc ]init];
[[TIMManager sharedInstance] initStorage: @"iOS_001" succ:^(){
NSLog(@"Init Succ");
} fail:^(int code, NSString * err) {
NSLog(@"Init Failed: %d->%@", code, err);
}];
通过 TIMManager
成员方法 getLoginUser
可以获取当前用户名,也可以通过这个方法判断是否已经登录。返回值为当前登录的用户名,需要注意的是,如果是自有帐号登录,用户名与登录所传入的 UserID
相同,如果是第三方帐号,如微信登录,QQ 登录等,登录后会有内部转换过的 UserID
,后续搜索好友,入群等,都需要使用转换后的 UserID
操作。
原型:
@interface TIMManager : NSObject
/**
* 获取当前登录的用户
*
* @return 如果登录返回用户的 identifier,如果未登录返回 nil
*/
- (NSString*)getLoginUser;
@end
IM SDK 启动后会同步离线消息和最近联系人。如果不需要离线消息,可以在发消息时使用:发送在线消息。默认登录后会异步获取离线消息以及同步资料数据(如果有开启,可参见关系链资料章节),同步完成后会通过 onRefresh
回调通知更新界面,用户得到这个消息时,可以刷新界面,例如会话列表的未读等。
@interface TIMUserConfig : NSObject
/**
* 会话刷新监听器(未读计数、已读同步)
*/
@property(nonatomic,retain) id<TIMRefreshListener> refreshListener;
@end
在这个互联网横行的时代,中国 3.38 亿网民、 1.55 亿手机客,这些玲琅满目的数...
作者:闲鱼技术——觅渡 背景 随着闲鱼持续不断的需求迭代和业务迅速的发展,如...
问题场景 背景:现在很多公司使用对象存储服务来存储静态文件/图片等,充分利用...
1.什么是超参数 超参数(hyper parameters)就是机器学习或深度学习算法中需要预...
近日,线下大数据服务商WakeData惟客数据对外宣布,已完成数千万人民币的A轮融资...
域名 与网络实名的区别?我们先来看看,域名实名和网络实名分别指的是什么,然后...
数澜科技是一家数据中台服务独立供应商 成立5年 已为1000余家企业、政府机构提供...
用途 用于事件驱动的自动化场景。当包含事件触发器的模版创建执行后,该执行初始...
调用DescribeScalingConfigurations查询伸缩配置的信息。 调试 您可以在OpenAPI ...
编程框架日新月异,工具平台推陈出新。但有意思的是,代码的坏味道不会因为你使...