百宝云COM组件操作教程

百宝云COM组件

百宝云提供的COM插件里,有4大类函数,分别如下:

公共接口类:用来与百宝云进行通信

②效验算法类用来效验字符串、文件合法性

加解密用来加解密字符串、文件。

④JSON类用来解析或者构建JSON字符串。

   这里我们主要来讲讲与百宝云默认事件相关的接口,其他的接口,大家可以去看看百宝云的帮助文档,文档里的描述比较详细,而且都有相应的示例代码。

    不过我们在调用插件里的函数之前,必须要先注册插件,否则调用函数会失败。

TC里,我们可以把插件加入到项目的资源目录里(导入资源、手动拷贝到资源目录),这样之后,我们只需要在TC的界面初始化事件里加入插件注册代码即可。代码如下

功能bbycom_初始化()

//这里添加你要执行的代码

变量ret=是否注册("bby.soft")

如果(!ret)

ret=注册插件("rc:t_baibaoyun.dll",真)

如果(!ret)

消息框("插件注册失败")

退出()

结束

结束

bby=插件("bby.soft")

结束

 代码中

的bby是一个全局变量,用来保存插件的对象。

5.1 login接口

程序调用插件中的login函数时,百宝云就会触发_userlogin事件。

注意调用此函数之前,需要先调用插件里的reg函数,只有在reg成功的情况下,login才会调用成功,并且触发对应的事件。

login函数原型如下:

login(custom_char,arg,msgbuff)

对应的百宝云事件原型如下

_userlogin(token,arg1,arg2,&out_ret)

这里类讲下参数的对应关系:

_userlogin中的token参数对应reg函数的token值。

_userlogin中的arg1参数对应login函数的custom_char值。

_userlogin中的arg2参数对应login函数的arg值。

_userlogin中的out_ret参数对应login函数的msgbuff值。

注意同一个百宝云应用中,custom_char值必须是唯一的,否则会踢掉原先用custom_char已经登录的用户从而导致无法收到百宝云推送过来的消息。

百宝云测试代码

function_userlogin(token,arg1,arg2,&out_ret)

out_ret="来自com插件的login函数的请求"

returntrue

end

客户端的测试代码(TC代码)

功能login登录测试()

变量result

result=bby.reg("abin","aac5ddb832bbca6d2db00a7557152d5c")

如果(result==0)

变量ret=bby.login("user","pwd",result)

如果(ret==0)

调试输出("登录成功")

返回真

否则

调试输出("login登录失败,错误代码:"&ret)

返回假

结束

否则

调试输出("注册失败,错误代码:"&result)

返回假

结束

结束

5.2pushconnect接口

程序调用插件中的pushconnect函数时,百宝云就会触发_userpush事件。

注意调用此函数之前,需要先调用插件里的reg函数,只有在reg成功的情况下,pushconnect才会调用成功,并且触发对应的事件。

pushconnect函数原型如下:

pushconnect(custom_char,arg,msgbuff)

对应的百宝云事件原型如下:

_userpush(token,arg1,arg2,&out_ret)

这里类讲下参数的对应关系:

_userpush中的token参数对应reg函数的token值。

_userpush中的arg1参数对应pushconnect函数的custom_char值。

_userpush中的arg2参数对应pushconnect函数的arg值。

_userpush中的out_ret参数对应pushconnect函数的msgbuff值。

注意同一个custom_char,在同一个百宝云应用里可以多次使用,不会出现踢掉原先登录情况。

百宝云的测试代码如下:

function_userpush(token,arg1,arg2,&out_ret)

out_ret="来自com插件的pushconnect函数的请求"

returntrue

end

TC中的测试代码如下:

功能push登录测试()

变量result

result=bby.reg("abin","aac5ddb832bbca6d2db00a7557152d5c")

如果(result==0)

变量ret=bby.pushconnect("user","pwd",result)

如果(ret==0)

调试输出("登录成功")

返回真

否则

调试输出("push登录失败,错误代码:"&ret)

返回假

结束

否则

调试输出("注册失败,错误代码:"&result)

返回假

结束

结束

5.3commoninterface接口

程序调用插件中的commoninterface函数时,百宝云就会触发_commoninterface事件。

注意调用此函数之前,需要先调用插件里的reg函数,只有在reg成功的情况下,commoninterface才会调用成功,并且触发对应的事件。

commoninterface函数原型如下:

commoninterface(arg,retbuff)

对应的百宝云事件原型如下:

_commoninterface(token,arg)

这里类讲下参数的对应关系:

_commoninterface中的token参数对应reg函数的token值。

_commoninterface中的arg参数对应commoninterface函数的arg值。

commoninterface中的retbuff参数则是_commoninterface事件return的值。

百宝云里的事件代码:

function_commoninterface(token,arg)

return"来自com插件的请求请求"

end

TC中的测试代码如下:

功能push登录测试()

变量result

result=bby.reg("abin","aac5ddb832bbca6d2db00a7557152d5c")

如果(result==0)

变量ret=bby.commoninterface("test",result)

如果(ret==0)

调试输出("登录成功")

返回真

否则

调试输出("commoninterface失败,错误代码:"&ret)

返回假

结束

否则

调试输出("注册失败,错误代码:"&result)

返回假

结束

结束

5.4接收百宝云推送数据的函数

插件里提供了几个回调函数,用来接收百宝云推送的内容,这样我们就可以做很多事情了,例如:登录的用户群发更新软件通知、功能变更通知;对单个用户发送节日问候、警告通知等等。

百宝云里提供了几个命令用来推送内容的,命令如下:

pushtextmsg推送文本消息到连接用户

pushtextmsgall推送文本消息到所有连接用户

logintextmsg推送消息到登陆用户

logintextmsgex推送消息到登陆用户扩展

push类的推送数据

实现推送数据功能的流程如下:

1)成功注册插件

2)创建插件对象

3)成功调用插件的reg方法

4)成功调用插件的pushconnect方法

5)插件的回调函数关联一个本地的回调函数。

6)百宝云里通过pushtextmsg、pushtextmsgal对登录的用户推送内容。

TC端的代码如下(只有主要代码

功能bbycom_初始化()

//这里添加你要执行的代码

变量ret=是否注册("bby.soft")

如果(!ret)

ret=注册插件("rc:t_baibaoyun.dll",真)

如果(!ret)

消息框("插件注册失败")

退出()

结束

结束




bby=插件("bby.soft")

ret=bby.reg("abin","fb0093726c769c715c038450a52442a8")

如果(ret!=0)

消息框("向百宝云注册失败,失败原因:"&bby.TranslateErr(ret))

退出()

结束

结束




功能login_点击()

//这里添加你要执行的代码

变量result

变量ret=bby.pushconnect("user2","pwd",result)

如果(ret==0)

变量login_callback_handle=回调函数申请("login_callbackpush","bby_callback")

如果(login_callback_handle!=0)

bby.msgcallback_push(login_callback_handle)

调试输出("设置push回调函数成功")

否则

消息框("设置回调函数失败,推送消息将无法接收!")

结束

调试输出(result)

否则

调试输出(ret)

结束


结束

功能login_callbackpush(type,arg)

traceprint("触发回调函数")

变量content=当前时间()&"\r\npush类型:"&type&"\r\n"&"push内容:"&地址取值(arg,"wchar*")

traceprint(content)

消息框(content)

结束

 黄色

背景的代码就是设置回调函数并接收百宝云推送内容关键代码段。

代码演示图:

百宝云端效果

TC端的效果

login类的推送数据

实现推送数据功能的流程如下:

1)成功注册插件

2)创建插件对象

3)成功调用插件的reg方法

4)成功调用插件的login方法

5)插件的回调函数关联一个本地的回调函数。

6)百宝云里通过logintextmsg、logintextmsgex对登录的用户推送内容。

TC端的代码如下(只有主要代码

功能bbycom_初始化()

//这里添加你要执行的代码

变量ret=是否注册("bby.soft")

如果(!ret)

ret=注册插件("rc:t_baibaoyun.dll",真)

如果(!ret)

消息框("插件注册失败")

退出()

结束

结束




bby=插件("bby.soft")

ret=bby.reg("abin","fb0093726c769c715c038450a52442a8")

如果(ret!=0)

消息框("向百宝云注册失败,失败原因:"&bby.TranslateErr(ret))

退出()

结束

结束




功能login_点击()

//这里添加你要执行的代码

变量result

变量ret=bby.login("user","pwd",result)

如果(ret==0)

变量login_callback_handle=回调函数申请("login_callbacklogin","bby_callback")

如果(login_callback_handle!=0)

bby.msgcallback_login(login_callback_handle)

调试输出("设置login回调函数成功")

否则

消息框("设置回调函数失败,推送消息将无法接收!")

结束

调试输出(result)

否则

调试输出(ret)

结束


结束


功能login_callbacklogin(type,arg)

traceprint("触发回调函数")

变量content=当前时间()&"\r\nlogin类型:"&type&"\r\n"&"login内容:"&地址取值(arg,"wchar*")

traceprint(content)

消息框(content)

结束

黄色背景的代码就是设置回调函数并接收百宝云推送内容关键代码段。

百宝云端的代码:

百宝云主要是实现了_userlogin事件之后在主按钮里调用命令logintextmsg推送内容。

//程序入口功能

功能_initial()

发送文本消息("初始化接口")

结束

//按下主按钮触发的功能方法

功能_mainbutton()

发送文本消息("开始推送内容")

if(logintextmsg("user","HI,你好"))

sendtextmsg("login推送内容成功")

else

sendtextmsg("login推送内容失败")

end

结束




功能_userlogin(token,arg1,arg2,&out_ret)

sendtextmsg("loginname="&arg1&"pwd="&arg2)

out_ret="来自com插件的login函数的请求"

returntrue

结束

演示图

百宝云APP图

TC端的图:

注意

TC代码中,因为申请的回调函数都是bby_callback,所以login与push的推送在本地只有最后一次申请的回调函数有效。

但是在C++里,因为回调函数可以自己定义,所以就不存在这个问题。

5.5效验与加解密类接口

COM插件里的效验接口、加解密接口与百宝云里提供的效验接口、加解密函数是对应的,可以通用的。现在通过一个示例来验证下如下的需求:

在COM里使用AES加密算法aesencrypt加密一个字符串”abcd”,之后把密文通过commoninterface发送给百宝云进行解密,得到数据。

TC端的代码

功能test()

变量bby=插件("bby.soft")

变量sourcestr="abcd",key="bby"

变量result=bby.aesencrypt(sourcestr,key)

变量retbuff=""

如果(bby.reg("abin","aac5ddb832bbca6d2db00a7557152d5c")==0)

变量ret=bby.commoninterface(result,retbuff)

如果(ret==0)

消息框(retbuff)

否则

消息框("commoninterface失败")

结束

否则

消息框("reg失败")

结束

结束

百宝云端的代码

功能_commoninterface(token,arg)

变量ret=aesdecrypt(arg,"bby")

返回"百宝云解密的内容是:"&ret

结束

5.6Json操作接口

5.6.1利用com构建json字符串

TC代码如下

变量pJson=bby.jsoncreate()

bby.jsonpushstring(pJson,"str","用户向作者反馈信息")

bby.jsonpushstring(pJson,"type","sendApp")

变量conent=bby.jsontostring(pJson)

bby.jsonfree(pJson)

变量retstr

bby.commoninterface(conent,retstr)

消息框(retstr)




百宝云代码如下

功能_commoninterface(token,arg)

发送文本消息("接收到的内容是:"&arg)

变量ret=json转数组(arg)

发送文本消息("str="&ret["str"])

发送文本消息("type="&ret["type"])

返回"解析成功"

结束




5.6.2解析JSON字符串

百宝云代码

功能_commoninterface(token,arg)

变量arr=数组()

arr["zhangsan"]="学生"

arr["lisi"]="工程师"

返回数组转json(arr)

结束




TC的代码

功能解析JSON字符串(json字符串)

变量a=bby.jsonparse(json字符串)

变量size=bby.jsongetsize(a)

变量key,value

遍历(变量i=0;i<size;i++)

bby.jsongetat(a,i,value,key)

调试输出(i&":key="&key&"value="&value)

结束

结束



猜你喜欢

转载自baibaiyun.iteye.com/blog/2264548