添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

本节用于指导使用 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
  •