今天记录一下使用nsNiuniuSkin+Nsis制作安装包过程中,如何使用nsNiuniuSkin的接口来进行安装行为上报,希望对大家有帮助!
在互联网应用快速发展的当下,对于用户活跃,新增加用户以及新安装或者卸载数目,对于运营都是非常重要的数据;而如何在安装包中实现安装或者卸载时进行安装行为的上报,并进而在后端能够进行统计呢?
这个一直是困扰我们不少客户的问题,虽然我们已经在脚本中提供了示例,但还是经常收到客户咨询,需要我们提供更进一步的指导。希望通过今天的文章,能够让大家更顺利的进行集成。
nsNiuniuSkin在插件中实现了Http接口请求的能力,能够支持GET与POST两种不同的请求方式;同时支持同步与异步两种调用方式,以支持不同的应用场景;
有了接口调用能力,那么就能够很方便的在安装与卸载过程中进行埋点,将特定的行为进行上报;同时服务端通过接口收到上报的数据后,进行入库保存,即可进行后续的统计处理了。
接下来我将实际演示一下使用nsNiuniuSkin+Nsis来实现安装行为的上报:
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一般取如下两种值:
Content-Type: application/x-www-form-urlencoded;charset=utf-8
Content-Type:application/xml;charset=UTF-8
需要注意的是,如果使用同步调用,需要放到BgWorker中,避免主线程阻塞;而如果采用异步调用,则需要考虑调用的时间提前量,避免在安装包退出,接口调用仍未完成的情况。
同步调用示例(在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
同步调用示例(在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
同步调用示例(在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
同步调用会阻塞当前函数的调用,同时会返回服务器响应的数据到脚本中,比较适用于做鉴权、认证的场景;如果只是做安装行为上报,则同步或异步的均可,考虑好脚本放置的位置即可。
对于行为上报,安装时,我们建议放到OnBtnInstall函数的start_install:标签下面,使用异步接口;或者放到CustomizeInstall函数中,使用同步接口;
卸载时,建议放到un.OnCustomizeUnInstall函数中,使用异步接口。
为答谢新老客户的支持,值此双11购物节,利洽科技全线产品从即日起至11月15日,统一8折优惠,欢迎新老顾客选购! ^_^
为答谢新老客户的支持,值此双11购物节,利洽科技全线产品从即日起至11月15日,统一8折优惠,欢迎新老顾客选购! ^_^
为答谢新老客户的支持,值此双11购物节,利洽科技全线产品从即日起至11月15日,统一8折优惠,欢迎新老顾客选购! ^_^
在安装包安装过程中,精美的UI往往能让客户对所安装产品的印象更加深刻,更能体现出软件服务商在用户体验上的专注与用心! 希望我们的努力,能够让安装包制作再容易一点,再快乐一点!
愿天下没有难做的安装包!