当前位置:主页 > 公司动态 >

安装包UI美化之路-在安装过程中调用Http接口能力,进行安装行为上报

浏览记录: 93次日期:2023-11-08

今天记录一下使用nsNiuniuSkin+Nsis制作安装包过程中,如何使用nsNiuniuSkin的接口来进行安装行为上报,希望对大家有帮助!

问题背景

在互联网应用快速发展的当下,对于用户活跃,新增加用户以及新安装或者卸载数目,对于运营都是非常重要的数据;而如何在安装包中实现安装或者卸载时进行安装行为的上报,并进而在后端能够进行统计呢?

这个一直是困扰我们不少客户的问题,虽然我们已经在脚本中提供了示例,但还是经常收到客户咨询,需要我们提供更进一步的指导。希望通过今天的文章,能够让大家更顺利的进行集成。

实现方案

nsNiuniuSkin在插件中实现了Http接口请求的能力,能够支持GET与POST两种不同的请求方式;同时支持同步与异步两种调用方式,以支持不同的应用场景;

有了接口调用能力,那么就能够很方便的在安装与卸载过程中进行埋点,将特定的行为进行上报;同时服务端通过接口收到上报的数据后,进行入库保存,即可进行后续的统计处理了。

实际操作

接下来我将实际演示一下使用nsNiuniuSkin+Nsis来实现安装行为的上报:

1. 接口说明

nsNiuniuSkin::HttpInvoke "url" "customize_header" "post_data" async_flag

此接口用于在NSIS中发起HTTP请求,主要用于安装行为上报以及安全验证等。

参数名 参数类型 参数说明 备注
url 字符串 要请求的完整的url路径
customize_header 字符串 要携带的httpheader
post_data 字符串 要post的数据包 如果为空字符串,则直接GET请求
async_flag int 是否异步请求 0:同步请求,1:异步请求

0:表示同步请求,请求后,会在结果中返回请求是否成功(0表示成功)以及内容;

1:表示异步请求 将会在插件内启动线程去访问,不管成功与否,都不会有结果通知到脚本中(适用于安装行为上报,不需要处理结果的场景)

customize_header一般取如下两种值:

用在post keyvalue数据的场景:

Content-Type: application/x-www-form-urlencoded;charset=utf-8

用在post json数据的时候:

Content-Type:application/xml;charset=UTF-8

3. 调用示例

需要注意的是,如果使用同步调用,需要放到BgWorker中,避免主线程阻塞;而如果采用异步调用,则需要考虑调用的时间提前量,避免在安装包退出,接口调用仍未完成的情况。

GET请求调用可参考如下代码:

同步调用示例(在BgWorker绑定的函数中调用):

nsNiuniuSkin::HttpInvoke "http://www.ggniu.cn/test/test.html" "" "" 0
pop $R0
pop $R1
MessageBox MB_OK|MB_ICONINFORMATION "retval: $R0, retstr: $R1"

异步调用示例:

nsNiuniuSkin::HttpInvoke "http://www.ggniu.cn/test/test.html" "" ""  1

如果要进行json的post调用,可以参考如下代码:

同步调用示例(在BgWorker绑定的函数中调用):

StrCpy $R1 '{"mac":"xxxxx", "time":172929292992, "flag":1}'
nsNiuniuSkin::HttpInvoke "http://www.ggniu.cn/test/post.php" "Content-Type:application/xml;charset=UTF-8" "$R1" 0
pop $R0
pop $R1
MessageBox MB_OK|MB_ICONINFORMATION "retval: $R0, retstr: $R1"

异步调用示例:

StrCpy $R1 '{"mac":"xxxxx", "time":172929292992, "flag":1}'
nsNiuniuSkin::HttpInvoke "http://www.ggniu.cn/test/post.php" "Content-Type:application/xml;charset=UTF-8" "$R1" 1

如果要进行key value的post调用,可以参考如下代码:

同步调用示例(在BgWorker绑定的函数中调用):

nsNiuniuSkin::HttpInvoke "http://www.ggniu.cn/test/post2.php" "Content-Type:application/xml;charset=UTF-8" "key1=1&key2=xxx" 0
pop $R0
pop $R1
MessageBox MB_OK|MB_ICONINFORMATION "retval: $R0, retstr: $R1"

异步调用示例:

StrCpy $R1 '{"mac":"xxxxx", "time":172929292992, "flag":1}'
nsNiuniuSkin::HttpInvoke "http://www.ggniu.cn/test/post2.php" "Content-Type:application/xml;charset=UTF-8" "key1=1&key2=xxx" 1

4. 同步调用与异步调用的选择

同步调用会阻塞当前函数的调用,同时会返回服务器响应的数据到脚本中,比较适用于做鉴权、认证的场景;如果只是做安装行为上报,则同步或异步的均可,考虑好脚本放置的位置即可。

对于行为上报,安装时,我们建议放到OnBtnInstall函数的start_install:标签下面,使用异步接口;或者放到CustomizeInstall函数中,使用同步接口;

卸载时,建议放到un.OnCustomizeUnInstall函数中,使用异步接口。

利洽双11活动,震撼开启

为答谢新老客户的支持,值此双11购物节,利洽科技全线产品从即日起至11月15日,统一8折优惠,欢迎新老顾客选购! ^_^

为答谢新老客户的支持,值此双11购物节,利洽科技全线产品从即日起至11月15日,统一8折优惠,欢迎新老顾客选购! ^_^

为答谢新老客户的支持,值此双11购物节,利洽科技全线产品从即日起至11月15日,统一8折优惠,欢迎新老顾客选购! ^_^

结语

在安装包安装过程中,精美的UI往往能让客户对所安装产品的印象更加深刻,更能体现出软件服务商在用户体验上的专注与用心! 希望我们的努力,能够让安装包制作再容易一点,再快乐一点!

愿天下没有难做的安装包!

Copyright © 2015 - 2023 深圳市利洽科技有限公司 All Rights Reserved 粤ICP备15043258号-2