这是本文档旧的修订版!


Server SDK集成

云视互动提供了一系列用于开发后台业务的API接口(Server SDK),为云视互动提供如下支持:

  1. 用户集成服务:注册用户到云视互动。
  2. 消息推送服务:通过云视互动推送自定义消息。
  3. 其他服务:云视互动还为开发者提供更丰富的服务接口能力,会陆续上线。如果您有额外的需求,欢迎联系云视互动。

Server SDK提供JAVA和PHP两个版本。使用前,首先要在开发者中心注册一个应用,并获取服务器密钥(“server key”)。该server key会在每一次请求中被验证。
下载云视互动服务器SDK及DEMO
加入云视互动

SDK初始化

PHP

...
include(dirname(__FILE__) . "/YsServerSDK.php");
/*开发者需要申请自己的应用,并获得对应的server key,在接口中用*/
$server_key = "your-server-key";
$obj = new YsServerSDK($server_key);
...

JAVA

import com.yunshihudong.sdk.server.YsServerSDK;
...
/*开发者需要申请自己的应用,并获得对应的server key,在接口中用*/
String server_key = "your-server-key";
YsServerSDK client = new YsServerSDK(server_key);
...

用户集成服务

当App集成云视互动的时候, 需要把App系统内的已有用户和新注册的用户和云视互动集成, 就是为每个App用户创建一个云视互动账号,并且该帐号在当前应用内部全局唯一。
云视互动账号信息规则定义如下:

  1. 云视互动账号需要使用英文字母/数字/下划线/横线/英文点的组合,且必须是半角字符;
  2. 云视互动账号中的字母不区分大小写,内部统一为小写字母;
  3. 云视互动账号中不能有中文;
  4. 云视互动账号中不能有空格;
  5. 云视互动账号长度:6~50位,密码长度:6~50位。

添加单个账号


接口名称:AddUser
使用说明:当用户在用户系统注册成功后,然后通过该接口同步添加云视互动账号,如果失败可采取重试策略,如果仍旧失败,可回滚整个数据,保证系统数据完整性。建议在服务器端执行。
调用频率:10000/3600s
示例代码片段:
PHP

...
/*增加单个账号*/
$res = $obj->addUser("jack10001","mypassw0rd");    
if($res['ret_code'] == SdkErrorCode::SUCCESS){
    echo "Add Success\r\n";
}    
...

JAVA

...
/*添加账号*/
int ret = client.addUser("jack10001", "mypassw0rd");
if(ret == SdkErrorCode.SUCCESS){
    //添加成功
}else if(ret == SdkErrorCode.SDK_ERR_SERVERKEY_NOT_EXIST){
    //key认证失败
}else if(ret == SdkErrorCode.SDK_ERR_NAME_PWD_FORMAT_LEN_ERROR){
    //账号密码格式错误
}else if(ret == SdkErrorCode.SDK_ERR_USERNAME_EXIST){
    //账号重复 
}else if(ret == SdkErrorCode.SDK_ERR_MISSED_PARAMATER){
    //参数出错
}else if(ret == SdkErrorCode.SDK_ERR_REQEST_TOO_FAST){
    //请求过快
}else{
    //SdkErrorCode.SYSTEM_ERR
    //系统错误或其他未知错误
}
...

批量添加账号


接口名称:BatchAddUser
使用说明:批量添加账号。该接口适合把用户App已有用户系统批量注册到云视互动,建议在服务器端执行。
调用频率:100/s
示例代码片段:
PHP

...
/*批量增加账号*/
$user_data = new UserData();
$user_data->NewUser("jerry1","password");
$user_data->NewUser("jerry2","password");
$users_info = $user_data->getData();
$ret = $obj->BatchAddUser($users_info);
if($ret['ret_code'] == SdkErrorCode::SUCCESS)
    echo "Success\r\n";
else if($ret['ret_code'] == SdkErrorCode::SDK_ERR_NAME_PWD_FORMAT_LEN_ERROR){
    $invalid_user = $ret['result'];//获得出错的账号信息
    echo "Invalid User info is :$invalid_user";
}else{
    echo "failed,code:$ret\r\n";
}
...

JAVA

...
import com.yunshihudong.sdk.server.UserInfo;
UserInfo UserInfoData = new UserInfo();
UserInfoData.NewUser("jerry1", "password");
UserInfoData.NewUser("jerry2", "password");
HashMap result = client.BatchAddUser(UserInfoData.GetData());
int ret_muti = Integer.parseInt(result.get("ret_code"));
if(ret_muti == SdkErrorCode.SUCCESS){
    //添加成功
}else if(ret_muti == SdkErrorCode.SDK_ERR_SERVERKEY_NOT_EXIST){
    //key认证失败
}else if(ret_muti == SdkErrorCode.SDK_ERR_NAME_PWD_FORMAT_LEN_ERROR){
    //账号密码格式错误
    //打印result返回的错误名字列表
    System.out.println("错误的账号信息:"+result.get("result"));
}else if(ret_muti == SdkErrorCode.SDK_ERR_MORE_THAN_MAX_USERS_ERROR){
    //添加人数超过最大允许上限
}else if(ret_muti == SdkErrorCode.SDK_ERR_MISSED_PARAMATER){
    //参数错误
}else if(ret == SdkErrorCode.SDK_ERR_REQEST_TOO_FAST){
    //请求过快
}else{
    //SdkErrorCode.SYSTEM_ERR
    //系统错误或其他未知错误
}
...

消息推送服务

云视互动后台提供了专门用于传输用户自定义数据的接口,开发者可以看做是云视互动提供的推送服务。用户数据被统一透传到云视互动后台,由后台负责适配不同的推送服务(APNS,云视互动推送云),最终数据被推给客户端。
接口名称:SendUserMsg
使用说明:支持给一个或者多个账号发送消息,格式为文本消息,目前长度限制在1024个字符。
调用频率:100/s
示例代码片段:
PHP

...
/*给指定账号推送用户自定义消息*/
//发送者账号
$sender = "sunnys"; 
//接受者账号,多个接收者用 半角逗号','隔开
$recivers = "jerrygao,tomliu,lucy123"; 
// 推送内容
$msg = "{type:"invite",content:"Play MangJiang Together?",date:"17:28 2015/5/27"}";
// 发起推送消息的动作
$ret = $obj->sendUserMsg($sender, $recivers, $msg);
// 结果处理
if($ret['ret_code'] == SdkErrorCode::SUCCESS){
    echo "Success\r\n";
}else{
    echo "failed,code:$ret\r\n";
}
...

JAVA

...
//发送者账号
String sender = "sunnys";
//接受者账号,多个接收者用 半角逗号','隔开
String recivers = "jerrygao,tomliu,lucy123";
// 推送内容
String content = "北京今天的天气:多云转雷阵雨 30℃~20℃ ";
// 发起推送的动作
int result = client.SendMessage(sender, recivers, content);
// 结果处理
if(result == SdkErrorCode.SUCCESS){
	//发送成功
}else if(result == SdkErrorCode.SDK_ERR_SERVERKEY_NOT_EXIST){
	//key认证失败
}else if(result == SdkErrorCode.SDK_ERR_MESSAGE_SEND_ERROR){
	//发送失败,可以尝试重发 
}else if(result == SdkErrorCode.SDK_ERR_MISSED_PARAMATER){
	//参数错误
}else if(result == SdkErrorCode.SDK_ERR_MORE_THAN_MAX_USERS_ERROR){
	//消息提过大,不大于1024
}else if(ret == SdkErrorCode.SDK_ERR_REQEST_TOO_FAST){
    //请求过快
}else{
    //SdkErrorCode.SYSTEM_ERR
    //系统错误或其他未知错误
}
...