Android 即时音视频解决方案2

上一篇文章介绍了环信的解决方案,见Android 即时音视频解决方案1——环信,这篇文章,介绍一下更加靠谱,也就是腾讯云的解决方案,毕竟腾讯是是这方面的头头,比较靠谱。当然,集成腾讯云比集成环信稍微复杂那么一点,需要有一点点的耐心。

官方地址音视频云通信 AVC

SDK下载AV Andriod1.3

文档地址音视频云通讯

先讲讲腾讯云的原理,使用腾讯云的时候,要有一个账号体系,这个账号体系比较灵活,可以使用独立模式也可以只用第三方账号体系,这里使用独立模式。

使用独立模式,要使用腾讯云的服务的时候,我们无需将用户的账号密码同步到腾讯,但是我们的服务端需要进行一定的处理。 用户在APP客户端输入帐号密码后到APP自有帐号登录服务器验证,验证成功后自有帐号登录服务器使用私钥派发签名(sig)给客户端;客户端提交用户帐号和私钥签名IM云(通过IMSDK或者音视频SDK接口),验证签名成功后向终端派发相应票据,进而使用IM云服务。

下面贴出官方文档的一个例子说明

假设开发者开发的APP为天天互动,天天互动自有服务器(开发自己开发)支持用户注册功能,同时天天互动接入了腾讯音视频通讯服务。某一天用户A在天天互动注册了帐号,登录天天互动后使用腾讯的音视频服务与家人视频。那么天天互动是如何实现这一功能呢?下面描述具体登录流程: – 用户A在天天互动的客户端输入自己的帐号及密码后,客户端传给天天互动的帐号服务器进行验证; – 天天互动的帐号服务器验证用户A的信息成功后,,使用天天互动的私钥通过TLS提供的后台API生成签名(sig); – 天天互动的帐号服务器将生成的签名派发给天天互动的客户端; – 天天互动的客户端使用音视频云通讯相关服务时,需要提交帐号类型(accounttype)、sdkappid、identifier(也就是我们常说的用户id)和签名(由天天互动账号服务器调用TLS后台API生成并派发的)到音视频SDK或者IMSDK的login接口进行验证,验证成功后即可使用相关服务。

下面我们进行服务器端的编码

几个有用的文档和链接 – TLS后台API开发指引 – windows 64位 API – 音视频云通讯账号登录集成

服务器端签名的函数,这里使用PHP

, $identifier, $appid_at_3rd,$sdk_appid, $expiry_after, $private_key_path){$command = ‘signature.exe’ . ‘ ‘. escapeshellarg($private_key_path) . ‘ ‘ . escapeshellarg($expiry_after) . ‘ ‘ . escapeshellarg($sdk_appid) . ‘ ‘ . escapeshellarg($account_type) . ‘ ‘ . escapeshellarg($appid_at_3rd) . ‘ ‘ .escapeshellarg($identifier);$ret = exec($command, $out, $status);if( $status == -1){return null;}return $ret;}?>

当然你还需要将服务器sdk中的signarure.exe放到当前目录下,此外还有私钥

当我们服务接收到客户端请求时,登陆成功后会进行签名,需要将签名下发到客户端,客户端利用该签名向腾讯服务器验证

<?phpinclude_once(‘function.php’);if(isset($_POST[‘username’]) && isset($_POST[‘password’])){$account[‘username’]=$_POST[‘username’] ;$account[‘password’]=$_POST[‘password’];=signature(“1071″,$account[‘username’],”1400001973″,”1400001973″,60*60*24*30,”./private_key”);if($result==null){$res[‘status’]=500;$res[‘message’]=”server error”;echo json_encode($res);}else{$res[‘status’]=200;$res[‘message’]=$result;echo json_encode($res);}}else{$res[‘status’]=404;$res[‘message’]=”params is not right”;echo json_encode($res);}?>

签名的参数在腾讯云的后台管理可以看到

注意有一个时间戳参数,该参数代表多久之后过期,由开发者控制。

接下来就是客户端的事了。首先就是集成

权限

=================”android.permission.BROADCAST_STICKY”/>

声明组件

<applicationandroid:name=”.app.App”></application > <activity=”portrait” />

App类的内容很简单,就是获得QavsdkControl

{private QavsdkControl mQavsdkControl = null;() {super.onCreate();mQavsdkControl = new QavsdkControl(this);}public QavsdkControl getQavsdkControl() {return mQavsdkControl;}}

然后需要拷几个现成的类

你需要修改内容,让他不报错,大部分都是资源相关的东西。

然后需要修改两个变量,共两处,值在腾讯云后台获得

望着它们,我睡着了。今天已经过去——我生命中所有天中的一天,

Android 即时音视频解决方案2

相关文章:

你感兴趣的文章:

标签云: