书接上文,将环境配置好以后就可以开发云视频的各个流程了。首先我们从注册开始。目前为止我做好的只有手机号登录注册到在线直播这个流程。以后会陆续补充其他的登录注册方式。腾讯云登录注册包含了手机号、普通账号、邮箱以及第三方的方式。在腾讯云平台的文档里面我看到腾讯云要支持的第三方有微信、qq、人人网、新浪微博等等。但是代码里面暂时只看到了微信和qq的登录验证。可能是后续会支持那么多平台但是现在还没写出来(是不是腾讯在打广告啊),当然也可能是本人尚未找到其他的平台验证的接口。毕竟本人尚未将所有的登录注册方式验证过。好了,惯例,不多说废话。开始代码讲述。
1.手机号注册:
需要看文档的可以看下这个腾讯云直播接口文档
2.在写登录注册的时候需要一些demo里面封装好的接口文档(直接使用上面接口文档的可以不用看下面的步骤了)这三个文件夹里面的就是需要导入的demo里面的文件。
3.这些文件导入后引入相关头文件可以上代码了。
#import "TLSRegister.h"
#import "TLSLogin.h"
首先引入手机号注册的代理。@property (nonatomic, weak) id <TLSPwdRegListener> phoneRegisterdelegate;
4.实现委托self.phoneRegisterdelegate = self;
5.实现注册回调方法[[TLSRegister sharedInstance].accountHelper TLSPwdRegAskCode:phoneStr andTLSPwdRegListener:self.phoneRegisterdelegate];
6.引入注册的回调方法
7.手机号注册成功以后会回调这个方法
-(void) OnPwdRegAskCodeSuccess:(int)reaskDuration andExpireDuration:(int) expireDuration
{
NSLog(@"请求短信验证码成功");
}
8.然后将获取的验证码在验证方法里面写,代码如下
[[TLSRegister sharedInstance].accountHelper TLSPwdRegVerifyCode:yanzhengma andTLSPwdRegListener:self.phoneRegisterdelegate];
9.接下来就可以等待回调成功了,在验证码成功的方法里面再调用注册密码即可。
验证码验证成功方法:
-(void) OnPwdRegVerifyCodeSuccess
{
NSLog(@"验证短信验证码成功");
}
10.提交密码方法
[[TLSRegister sharedInstance].accountHelper TLSPwdRegCommit:password andTLSPwdRegListener:self.phoneRegisterdelegate];
到此注册手机号就已经结束了。下面我们开始用手机号登陆
1.如果注册的手机跟登陆的手机是同一个,并且没有登陆过其他账号则可以直接登陆,否则需要一个验证方法,验证是否需要密码登陆,然后才可以调用登陆方法。具体代码如下:
//判断本地是否需要再登录
BOOL need = [[TLSLogin sharedInstance].loginHelper needLogin:phoneStr];
//密码登录,获取票据
if (need) {
//设置登录代理
self.logindelegate = self;
NSInteger success = [[TLSLogin sharedInstance].loginHelper TLSPwdLogin:phoneStr andPassword:pwdStr andTLSPwdLoginListener:self.logindelegate];
NSLog(@"登录结果%ld",(long)success);
}
//本地已经登陆过了
else
{
//获取本地保存TLS票据
//获取签名
NSString* userSig = [[TLSLogin sharedInstance].loginHelper getTLSUserSig:phoneStr];
//如果本地有签名直接登录
if(userSig != nil)
{
//登录到IM服务器
[SVProgressHUD showInfoWithStatus:@"正在登录随心播"];
[[MultiIMManager sharedInstance] loginPhone:phoneNumStr sig:userSig succ:^(NSString* loginMsg) {
[[Business sharedInstance]getUserInfoByPhone:phoneNumStr succ:^(NSString *msg, id data) {
[[UserInfo sharedInstance]setUserFromDBSig:userSig andInfo:data ];
[SVProgressHUD showSuccessWithStatus:loginMsg];
[self changeToLivePage];
} fail:^(NSString *error) {
[SVProgressHUD showErrorWithStatus:error];
}];
} fail:^(NSString *err) {
[SVProgressHUD showErrorWithStatus:err];
}];
}
}
2.如果直接走else的方法那就不需要再放到代理回调方法中写代码,否则需要如下代理回调方法:
/**
* 密码登陆要求验证图片验证码
*
* @param picData 图片验证码
* @param errInfo 错误信息
*/
-(void) OnPwdLoginNeedImgcode:(NSData *)picData andErrInfo:(TLSErrInfo *)errInfo
{
NSLog(@"%@密码登陆请求图片验证成功%@",picData,errInfo.sErrorMsg);
}
/**
* 密码登陆请求图片验证成功
*
* @param picData 图片验证码
*/
-(void) OnPwdLoginReaskImgcodeSuccess:(NSData *)picData
{
NSLog(@"密码登陆请求图片验证成功%@",picData);
}
/**
* 密码登陆成功
*
* @param userInfo 用户信息
*/
-(void) OnPwdLoginSuccess:(TLSUserInfo *)userInfo
{
NSLog(@"密码登陆成功%@",userInfo.identifier);
//获取签名
NSString* userSig = [[TLSLogin sharedInstance].loginHelper getTLSUserSig:userInfo.identifier];
if(userSig == nil)
{
[SVProgressHUD showErrorWithStatus:@"获取签名为空"];
return;
}
//手机号登录到IM服务器
[SVProgressHUD showInfoWithStatus:@"正在登录随心播"];
[[MultiIMManager sharedInstance] loginPhone:phoneStr sig:userSig succ:^(NSString* loginMsg) {
[[Business sharedInstance]getUserInfoByPhone:phoneStr succ:^(NSString *msg, id data) {
[[UserInfo sharedInstance]setUserFromDBSig:userSig andInfo:data ];
[SVProgressHUD showSuccessWithStatus:loginMsg];
} fail:^(NSString *error) {
[SVProgressHUD showErrorWithStatus:error];
}];
} fail:^(NSString *err) {
[SVProgressHUD showErrorWithStatus:err];
}];
}
/**
* 密码登陆失败
*
* @param errInfo 错误信息
*/
-(void) OnPwdLoginFail:(TLSErrInfo *)errInfo
{
NSLog(@"密码登陆失败%@",errInfo.sErrorMsg);
}
/**
* 秘密登陆超时
*
* @param errInfo 错误信息
*/
-(void) OnPwdLoginTimeout:(TLSErrInfo *)errInfo
{
NSLog(@"密登陆超时%@",errInfo.sErrorMsg);
}
3.如果所有的回调都成功,程序会提示登陆成功。也会将个人信息保存到userinfo这个方法里面。