云通讯im怎么做php回调,腾讯云通讯IMSDK

946a6582439c

1.gif

946a6582439c

2.gif

因为我这里不集成服务器,所以我选择托管模式,由腾讯服务器负责保存用户信息和负责用户数据的校验工作(注意每个创建的应用只能选择一次模式,如果需要修改账号体系,只能重新创建应用)

快速集成登陆注册功能:效果图如下

946a6582439c

4.gif

腾讯登录服务(Tencent Login Service,TLS)是腾讯为开发者快速完成帐号集成接入音视频或即时通信云服务(后面简称云服务)而提供的一套通用帐号登录组件。实现包括QQ、微信、新浪微博、人人在内的多种帐号类型登录使用云服务。开发者可以通过简单的SDK集成,便捷的接口调用,即可实现原本复杂的登录验证服务,使代码量急剧减少。

TLS SDK 开发手册集成

TLS SDK 不需要用户每次都手动登录,通过调用[[TLSLoginHelper getInstance] needlogin:@"用户账号"],如果返回结果为 false, 即可以直接调用换票接口登录,拿到最新票据。否则完成完整的登录流程。

//请求刷新票据

NSString * userAccount = [[TLSLoginHelper getInstance] getLastUserInfo].identifier;

if (![[TLSLoginHelper getInstance] needLogin:userAccount ])

{

// userAccount 用户最近一次使用的帐号

// self 刷新票据回调,需要实现TLSPwdLoginListener协议,不能为nil

[[TLSLoginHelper getInstance] TLSRefreshTicket:userAccount andTLSRefreshTicketListener:self];

}

成功回调....

失败或超时回调如下,此时可以重新走登录流程

初始化:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

//初始化IMSDk

TIMManager *manager = [TIMManager sharedInstance];

[manager setLogLevel:(TIM_LOG_NONE)];

[manager disableCrashReport];

[manager initSdk:1400014178 accountType:@"7221"];

[manager setUserStatusListener:self];//设置用户状态通知回调

//初始化QalSDK--网络接入服务

[[QalSDKProxy sharedInstance]initWithAppid:1400014178 andSDKAppid:1400014178 andAccType:7221];

//初始化TLSAccountHelper 实例

//强烈注意:TLSSDK依赖QALSDK,因此需要先初始化QALSDK。

[[TLSAccountHelper getInstance]init:1400014178 andAccountType:7221 andAppVer:@"1.0"];

[[TLSLoginHelper getInstance]init:1400014178 andAccountType:7221 andAppVer: @"1.0"];

TLSLoginHelper *helper = [[TLSLoginHelper getInstance];

//获取最后一些登录的用户

TLSUserInfo *user = [helper getLastUserInfo];

//判断用户是否需要自动登录

BOOL login = [helper needLogin:user.identifier];

if (login == YES) {

//重新登录

self.window.rootViewController = [[LoginViewController alloc]init];

}else

{//TLS 不需要登录后,登录TIMSDK

TIMLoginParam *login = [[TIMLoginParam alloc]init];

login.accountType = @"7221";

login.identifier = user.identifier;

login.userSig = [[TLSHelper getInstance] getTLSUserSig:user.identifier];

login.sdkAppId = 1400014178;

login.appidAt3rd = @"1400014178";

[[TIMManager sharedInstance] login:login succ:^{

aleraView(@"登陆成功");

} fail:^(int code, NSString *msg) {

aleraView(@"登陆失败");

if (code == 6208) {

aleraView(msg);

}

}];

return YES;

}

#pragma - TIMUserStatusListener

/**

* 踢下线通知

*/

-(void)onForceOffline{

aleraView(@"用户被踢");

}

/**

* 断线重连失败

*/

-(void)onReConnFailed:(int)code err:(NSString *)err{

aleraView(@"断线重连失败");

}

/**

* 用户登录的userSig过期(用户需要重新获取userSig后登录)

*/

- (void)onUserSigExpired{

aleraView(@"用户登录的userSig过期");

}

注册

/**

* 字符串账号+密码注册接口

* @param account - 用户输入的账号名,最长不得超过24字节

* @param password - 用户输入的密码,密码最短8字节,最长16字节

* @param listener - 回调接口 需要实现TLSStrAccountRegProtocol协议

* @return 0表示调用成功;其他表示调用失败,返回码见:_TLS_RETURN_VALUES

*/

[[TLSAccountHelper getInstance]TLSStrAccountReg:self.nameTextField.text andPassword:self.passWordTextField.text andTLSStrAccountRegListener:self];

//遵守TLSStrAccountRegListener 协议

#pragma mark - TLSStrAccountRegListener

- (void)OnStrAccountRegSuccess:(TLSUserInfo *)userInfo

{

NSLog(@"TLS注册成功---userInfo = %@",userInfo);

aleraView(@"注册成功");

}

-(void)OnStrAccountRegFail:(TLSErrInfo *)errInfo

{

NSLog(@"TLS注册失败---errInfo = %@",errInfo);

aleraView(@"注册失败");

}

-(void)OnStrAccountRegTimeout:(TLSErrInfo *)errInfo

{

NSLog(@"TLS注册超时---errInfo = %@",errInfo);

}

在多数情况下,用户需要感知新消息的通知,这时只需注册新消息通知回调 TIMMessageListener,在用户登录状态下,会拉取离线消息,为了不漏掉消息通知,需要在登录之前注册新消息通知。

[[TIMManager sharedInstance] setMessageListener:(self)];

//遵守TIMMessageListener 协议

- (void) onNewMessage:(NSArray *)msgs{

aleraView([msgs objectAtIndex:0]);

}

//输入用户名和密码,调用密码登录接口

[[TLSAccountHelper getInstance]TLSStrAccountReg:_name.text andPassword:_password.text andTLSStrAccountRegListener:self];

//遵守TLSPwdLoginListener 协议

#pragma mark -TLSPwdLoginListener

/**

* 密码登陆要求验证图片验证码

*

* @param picData 图片验证码

* @param errInfo 错误信息

*/

-(void)OnPwdLoginNeedImgcode:(NSData *)picData andErrInfo:(TLSErrInfo *)errInfo

{

NSLog(@"登录异常请输入图片验证码----errInfo = %@", errInfo);

}

/**

* 密码登陆请求图片验证成功

*

* @param picData 图片验证码

*/

-(void)OnPwdLoginReaskImgcodeSuccess:(NSData *)picData

{

NSLog(@"图片验证码验证成功---%@",picData);

}

/**

* 密码登陆成功

*

* @param userInfo 用户信息

*/

-(void)OnPwdLoginSuccess:(TLSUserInfo *)userInfo

{

NSLog(@"TLS 密码登录成功----errInfo = %@",userInfo);

//登录

TIMLoginParam *login = [[TIMLoginParam alloc]init];

login.accountType = @"7221";

login.identifier = _name.text;

login.userSig = [[TLSHelper getInstance] getTLSUserSig:userInfo.identifier];

login.sdkAppId = 1400014178;

login.appidAt3rd = @"1400014178";

[[TIMManager sharedInstance] login:login succ:^{

aleraView(@"登陆成功");

} fail:^(int code, NSString *msg) {

aleraView(@"登陆失败");

if (code == 6208) {

aleraView(msg);

}

}];

}

/**

* 密码登陆失败

*

* @param errInfo 错误信息

*/

-(void)OnPwdLoginFail:(TLSErrInfo *)errInfo

{

NSLog(@"密码登录失败----errInfo = %@",errInfo);

}

/**

* 密码登陆超时

*

* @param errInfo 错误信息

*/

-(void)OnPwdLoginTimeout:(TLSErrInfo *)errInfo

{

NSLog(@"密码登录超时----errInfo = %@",errInfo);

}

登出

[[TIMManager sharedInstance] logout:^{

aleraView(@"登出成功");

} fail:^(int code, NSString *msg) {

aleraView(@"登出失败");

}];

用户在线状态通知

[manager setUserStatusListener:self];//设置用户状态通知回调

//遵守TIMUserStatusListener 协议

/**

* 踢下线通知

*/

-(void)onForceOffline{

aleraView(@"用户被踢");

}

/**

* 断线重连失败

*/

-(void)onReConnFailed:(int)code err:(NSString *)err{

aleraView(@"断线重连失败");

}

/**

* 用户登录的userSig过期(用户需要重新获取userSig后登录)

*/

- (void)onUserSigExpired{

aleraView(@"用户登录的userSig过期");

}

发送一条消息

TIMMessage * msg = [[TIMMessage alloc]init];

TIMTextElem * elem = [[TIMTextElem alloc]init];

[elem setText:@"我发了一条消息"];

[msg addElem:elem];

TIMConversation * sess = [[TIMManager sharedInstance ]getConversation:TIM_C2C receiver:@"tom1"];

[sess sendMessage:msg succ:^{

aleraView(@"发送成功");

} fail:^(int code, NSString *msg) {

aleraView(@"发送失败");

}];

获取消息

TIMConversation * sess = [[TIMManager sharedInstance]getConversation:TIM_C2C receiver:@"tom1"];

[sess getMessage:2 last:nil succ:^(NSArray *msgs) {

aleraView(@"获取消息成功");

} fail:^(int code, NSString *msg) {

aleraView(@"获取消息失败");

}];

消息通知

[[TIMManager sharedInstance]setMessageListener:(self)];//消息通知回调

//遵守TIMMessageListener 协议

-(void)onNewMessage:(NSArray *)msgs{

aleraView([msgs objectAtIndex:0]);

}

刷新会话未读记数

[[TIMManager sharedInstance] setRefreshListener:(self)];

//遵守TIMRefreshListener 协议

-(void)onRefresh{

//重新获取会话列表 刷新会话未读记数

NSArray * lis = [[TIMManager sharedInstance]getConversationList];

int unread = 0;

for (TIMConversation * sess in lis) {

unread += [sess getUnReadMessageNum];

}

NSString * unRead = [NSString stringWithFormat:@"未读计数%d",unread];

aleraView(unRead);

}

//设置自己的昵称

NSString * nick = @"123";

[[TIMFriendshipManager sharedInstance] SetNickname:nick succ:^() {

NSLog(@"SetNickname Succ");

} fail:^(int code, NSString * err) {

NSLog(@"SetNickname fail: code=%d err=%@", code, err);

}];

//好友验证方式

TIMFriendAllowType allowType = TIM_FRIEND_NEED_CONFIRM;

[[TIMFriendshipManager sharedInstance] SetAllowType:allowType succ:^() {

NSLog(@"SetAllowType Succ");

} fail:^(int code, NSString * err) {

NSLog(@"SetAllowType fail: code=%d err=%@", code, err);

}];

//设置自己的头像

NSString * faceUrl = @"http://faceurl";

[[TIMFriendshipManager sharedInstance] SetFaceURL:faceUrl succ:^() {

NSLog(@"SetFaceURL Succ");

} fail:^(int code, NSString * err) {

NSLog(@"SetFaceURL fail: code=%d err=%@", code, err);

}];

//获取自己的资料

[[TIMFriendshipManager sharedInstance] GetSelfProfile:^(TIMUserProfile * profile) {

NSLog(@"GetSelfProfile identifier=%@ nickname=%@ allowType=%d", profile.identifier, profile.nickname, profile.allowType);

} fail:^(int code, NSString * err) {

NSLog(@"GetSelfProfile fail: code=%d err=%@", code, err);

}];

//获取好友的资料

NSMutableArray * arr = [[NSMutableArray alloc] init];

[arr addObject:@"iOS_002"];

[arr addObject:@"iOS_003"];

[[TIMFriendshipManager sharedInstance] GetFriendsProfile:arr succ:^(NSArray * arr) {

for (TIMUserProfile * profile in arr) {

NSLog(@"user=%@", profile);

}

}fail:^(int code, NSString * err) {

NSLog(@"GetFriendsProfile fail: code=%d err=%@", code, err);

}];

//添加好友

NSMutableArray * users = [[NSMutableArray alloc] init];

TIMAddFriendRequest* req = [[TIMAddFriendRequestalloc] init];

// 添加好友 iOS_002

req.identifier = [NSString stringWithUTF8String:"iOS_002"];

// 添加备注 002Remark

req.remark = [NSString stringWithUTF8String:"002Remark"];

// 添加理由

req.addWording = [NSString stringWithUTF8String:"i am 002"];

[users addObject:req];

[[TIMFriendshipManager sharedInstance] AddFriend:users succ:^(NSArray * arr) {

for (TIMFriendResult * res in arr) {

if (res.status != TIM_FRIEND_STATUS_SUCC) {

NSLog(@"AddFriend failed: user=%@ status=%d", res.identifier, res.status);

}

else {

NSLog(@"AddFriend succ: user=%@ status=%d", res.identifier, res.status);

}

}

} fail:^(int code, NSString * err) {

NSLog(@"add friend fail: code=%d err=%@", code, err);

}];

//同意/拒绝 好友申请

/**

* 响应对方好友邀请

*

* @param users 响应的用户列表,TIMFriendResponse列表

* @param succ 成功回调,返回 TIMFriendResult* 列表

* @param fail 失败回调

*

* @return 0 发送请求成功

*/

-(int) DoResponse:(NSArray*)users succ:(TIMFriendSucc)succ fail:(TIMFail)fail;

// 获取所有好友

[[TIMFriendshipManager sharedInstance] GetFriendList:^(NSArray * arr) {

for (TIMUserProfile * profile in arr) {

NSLog(@"friend: %@", profile.identifier);

}

}fail:^(int code, NSString * err) {

NSLog(@"GetFriendList fail: code=%d err=%@", code, err);;

}];

946a6582439c

3.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值