本节用于指导使用 PPVIEW 客户端 SDK 开发 WINDOWS 平台客户端。
在本SDK中,与平台交互的接口封装为了
VVCloudSdk
库,与设备交互的接口封装为
VVCliSdk.dll
库, 推送相关的封装
VVPushSdk
库,均可单独独立使用。请参考
Windows PPVIEW SDK接口说明
。
演示程序和DEMO使用VC++2008开发。使用本SDK建议使用主流开发工具和语言。
4.2. 开发准备
4.2.1. 创建VC++项目
由于的本SDK和demo中使用了json格式数据因此另外包含了cJSON,验证码使用了GDI+绘图。GDI+需要初始化,具体细节请自行查阅相关windows编程相关文档。按照上图所示添加必要的头文件和库文件就可以正式使用本SDK来开发监控系统了。
4.3. 流程指南
4.3.1. 初始化流程
初始化设备交互相关库:VVCliSdk
默认使用杭州威威的p2p服务器相关设置,调用接口:
vv_cli_init();
如果使用自定义的p2p服务器地址请使用:
vv_cli_init_v2("server_addr", p2p_port, "p2p_key");
vv_cli_setcallback(回调函数, 上下文参数);
初始化平台交互相关库:VVCloudSdk
cloud_handle = vv_cloud_init();
注:返回句柄在平台交互相关的接口中会使用。
初始化推送库:VVPushSdk
vv_cli_push_init();
设置推送回调:
vv_cli_push_set_callback(回掉函数, 上下文参数);
注册推送服务器:默认是使用杭州威威的推送服务器。
int res = vv_cli_push_regist("客户端生成的唯一id,并且以后也一直用的。可以保存到PC本地, 账户");
如果使用指定服务器地址,请使用
vv_cli_push_regist_v2 (char* server, char* user, char* appkey, char* apppass, char* client_id);
初始化设备交互库:vv_cli_init
初始化设备交互库V2:vv_cli_init
设置回调函数:vv_cli_setcallback
初始化平台交互库:vv_cloud_init
初始化推送库:vv_cli_push_init
设置推送回调:vv_cli_push_set_callback
注册到推送服务器:vv_cli_push_regist
注册到推送服务器V2:vv_cli_push_regist_v2
4.3.2. 用户账户注册流程
4.3.2.1. 通过手机号注册用户
Windows APP->WINDOWS APP: 1. 输入手机号
Windows APP->云平台: 2. 请求短信验证码
云平台-->Windows APP: 3. 请求短信验证码回复
云平台->用户: 4. 短信验证码
用户->Windows APP: 5. 手工输入短信验证码
Windows APP->云平台: 6. 注册新用户请求
云平台-->Windows APP: 7. 注册请求回复
请求短信验证码
int res = vv_cloud_get_sms_vcode(cloud_handle, "要注册的手机号", 1);
注册新用户
int res = vv_cloud_user_regist(cloud_handle, user, pass, vcode, nick, email, mobile);
请求短信验证码:vv_cloud_get_sms_vcode
注册新用户:vv_cloud_user_regist
4.3.2.2. 通过邮箱注册用户
Windows APP->Windows APP: 1. 输入邮箱号
Windows APP->云平台: 2. 请求邮箱验证码
云平台-->Windows APP: 3. 请求邮箱验证码回复
云平台->用户: 4. 邮箱验证码
用户->用户: 5. 打开邮箱,读取验证码
用户->Windows APP: 6. 手工输入邮箱验证码
Windows APP->云平台: 7. 注册新用户请求
云平台-->Windows APP: 8. 注册请求回复
请求邮箱验证码
int res = vv_cloud_get_email_vcode(cloud_handle, 邮箱地址, 1, "zh_cn");
int res = vv_cloud_user_regist(cloud_handle, user, pass, vcode, nick, email, mobile);
请求邮箱验证码:vv_cloud_get_email_vcode
注册新用户:vv_cloud_user_regist
4.3.3. 密码重置流程
4.3.3.1. 通过手机号重置密码
Windows APP->Windows APP: 1. 输入手机号
Windows APP->云平台: 2. 请求短信验证码
云平台->用户: 3. 短信验证码
用户->Windows APP: 4. 用户手工输入验证码
Windows APP->Windows APP: 5. 输入新密码
Windows APP->云平台: 6. 重置密码请求
云平台-->Windows APP: 7. 重置密码回复
请求短信验证码
int res = vv_cloud_get_sms_vcode(cloud_handle, "手机号", 1);
验证短信验证码
int res = vv_cloud_sms_vcode_check(cloud_handle, "手机号", "验证码");
在调用vv_cloud_user_resetpass_sms
接口重置密码时,也会验证短信验证码。之所以有这个接口,是为了改善用户体验,在用户设置新密码前就可以验证短信码的正确性,以免用户在设置了新密码后,由于短信码的不正确而需要重新输入新密码。
根据短信验证码重置密码
int res = vv_cloud_user_resetpass_sms(cloud_handle, "账号", "验证码", "新密码");
请求短信验证码:vv_cloud_get_sms_vcode
验证短信验证码:vv_cloud_sms_vcode_check
根据短信验证码重置密码:vv_cloud_user_resetpass_sms
4.3.3.2. 通过邮箱号重置密码
Windows APP->Windows APP: 1. 输入邮箱号
Windows APP->云平台: 2. 通过邮箱重置密码
云平台-->Windows APP: 3. 回复结果
云平台->用户邮箱: 4. 发送重置邮件
用户->用户邮箱: 5. 打开邮件,点击链接
用户邮箱->云平台: 6. 跳转至平台密码重置页
云平台->云平台: 7. 重置密码
注:客户端请求平台向用户邮箱发送密码重置邮件后,流程结束,用户须登录自己的邮箱,点开邮箱中的链接进行重置。
使用邮箱号请求重置密码
int res = vv_cloud_user_resetpass_email_v2(cloud_handle, email);
使用邮箱号请求重置密码:vv_cloud_user_resetpass_email_v2
4.3.3.3. 修改密码
在密码已知的情况下,可直接修改密码,不需要使用密码重置流程。
用手机号和邮箱号新注册的用户,其默认密码为手机验证码或邮箱验证码。可以在注册的最后一步,通过修改密码接口,让用户设置一个自己容易记住的密码。
int res = vv_cloud_user_modify_pass(cloud_handle, user, oldpass, newpass);
修改密码:vv_cloud_user_modify_pass
4.3.4. 登录流程
Windows APP->Windows APP: 1. 输入账号及密码
Windows APP->云平台: 2. 登录
云平台-->Windows APP: 3. 回复结果
用户登录只需要被执行一次。
int res = vv_cloud_login(cloud_handle, user, pass);
登录:vv_cloud_login
4.3.5. 修改用户昵称流程
Windows APP->Windows APP: 1. 输入新昵称
Windows APP->云平台: 2. 请求修改
云平台-->Windows APP: 3. 回复结果
以上步骤请在登录后进行。
int res = vv_cloud_user_modify_nick(cloud_handle, user, pass, nick);
登录:vv_cloud_user_modify_nick
4.3.6. 获取设备列表流程
由于单个设备可能会有多个通道(摄像头),因此这个接口通常不需要调用,呈现给用户的列表通常是摄像头列表。如果需要在界面上显示设备列表,再分级显示设备下的通道的话,需要获取设备列表和摄像头列表,并自己进行组合。
Windows APP->Windows APP: 1. 登录(略,参见4.3.4.)
Windows APP->云平台: 2. 请求获取设备列表
云平台-->Windows APP: 3. 回复结果
以上步骤请在登录后进行。
取设备列表
int res = vv_cloud_get_dev_list(cloud_handle, out_devlist);
获取设备列表(2):vv_cloud_get_dev_list
Windows APP->Windows APP: 1. 登录(略,参见2.3.4.)
Windows APP->云平台: 2. 请求获取摄像头列表
云平台-->Windows APP: 3. 回复结果
Windows APP->云平台: 4. 获取摄像头缩略图
云平台-->Windows APP: 5. 回复
Windows APP->Windows APP: 6. 打开P2P预连接
以上步骤请在登录后进行。
取摄像头列表
int res = vv_cloud_get_cam_list(cloud_handle, out_camlist);
获取摄像头缩略图
int res = vv_cloud_get_cam_pic(cloud_handle, cam_id, out_pic, out_size);
创建设备句柄
Long device_handle = vv_cli_create(p2pid, ip, port, pass);
注:当摄像头列表发生变化时(通常发生在同一个账号多个手机登录,并且添加或删除摄像头时),会收到摄像头列表变化推送,此时需要更新一下摄像头列表。
获取摄像头列表(2):cli_lib_getcamlist_ex
获取摄像头列表回复消息的代理(3):cli_lib_GetCamlist_CALLBACK
获取摄像头缩略图(4~5):cli_lib_GetCamThumbnail
P2P预连接:cli_lib_set_preconnects