跨平台应用开发进阶(二十九) :uni-app 实现Android原生APP-云打包集成神策详细教程
文章目录
- 一、前言
- 二、集成
- 2.1 集成 uni-app 插件
- 2.2 云端集成原生插件
- 2.3 离线集成
- 2.3.1 获取插件包
- 2.3.2 在 HBuilderX 中集成原生插件
- 2.4 集成结果验证
- 三、使用 uni-app 进行埋点
- 3.1 APP.vue文件配置 + globalData 全局埋点
- 3.2 代码埋点(代码侵入性强)
- 3.3 用户登录
- 3.4 记录激活事件
- 3.5 设置公共属性
- 3.6 设置用户属性
- 三、拓展阅读
一、前言
uni-app
应用开发过程中,考虑接入神策做数字化运营。
在采用神策采集用户行为数据前,首先需要根据业务分析需求明确采集的目标行为,进一步搞清楚应该在哪些地方埋什么样的点。这个环节的输出物一般被称之为“埋点需求文档(DRD
)”。在大部分互联网公司,规范的产品迭代流程是,业务侧产品经理在输出“产品需求文档(PRD
)”的同时,数据产品经理或分析师等角色需要同步输出 DRD
,双方的需求同步进入开发和测试验收。
由于神策的底层数据模型是 Event + User
的事件模型,因此埋点在神策分析里被称之为“事件”,埋点需求文档则被统称为“采集方案设计
”,该工作需要借助神策方提供的《数据采集方案》模板来完成。
神策采集方案设计的核心思路,大体来说分为如下几点:
- 将用户行为拆解为单个的点击或浏览动作;
- 将需要分析的目标动作抽象为“事件”,添加事件维度;
- 根据业务需求,整体完善采集方案设计;
实战应用感想:通过阅读神策官方操作文档,发现神策体量较重,对于想要采集的用户行为均需要手工代码埋点,代码侵入严重。
二、集成
插件市场下载相关sdk->Sensorsdata-UniPlugin-JS
文件,放进项目文件夹。
2.1 集成 uni-app 插件
下载神策 uni-app 插件,将下载的 Sensorsdata-UniPlugin-JS
文件夹放在自己项目中的 common
文件夹中。
添加后目录如下图所示:
2.2 云端集成原生插件
打开 DCloud 插件市场中神策分析 uni-app 插件主页,并点击 ”购买(0 元)for 云打包“ 按钮。
绑定包名
- 云打包时会校验 Appid、包名和已购买插件的关系。至少需要填一个,如果暂不填,后续可以在"已购买插件"栏目补填。
- 包名一旦绑定后将不能修改,请务必注意在此处输入的包名应与打包时的包名完全一致!
2.1.2. 加载原生插件
在mainifest.json
文件中的 App 原生插件配置中下载已购买的云端插件。
2.3 离线集成
2.3.1 获取插件包
打开 DCloud 插件市场中神策分析 uni-app 插件主页,并点击 ”下载 for 离线打包“ 按钮。
2.3.2 在 HBuilderX 中集成原生插件
用 HBuilderX
打开 uni-app
项目,并在项目根目录下新建 nativeplugins
目录(已存在不需要新建)。
解压下载的离线插件包,并添加至 nativeplugins
目录下。
打开 manifest.json
配置面板,选择 App 原生插件配置,并选择点击 ”选择本地插件“ 按钮,添加本地插件。
添加插件参数信息。
配置信息完成后,需制作自定义调试基座。运行 → 运行到手机或模拟器 → 制作自定义调试基座,并填写应用相关信息后提交打包。
2.4 集成结果验证
经过上面的云集成或离线集成操作后,如何验证集成成功与否呢?
集成成功后,APP端并不会看到验证结果,需要到相应的神策Web控制台查看。
三、使用 uni-app 进行埋点
3.1 APP.vue文件配置 + globalData 全局埋点
在app.vue
中导入index.js
文件后进行配置
import sensors from '@/js_sdk/Sensorsdata-UniPlugin-JS/index.js'; //埋点
var server_url ="https://m.qxdaojia.com/"
if($config.api_url == "https://m.qxdaojia.com/api/"){server_url = "https://scdata.qxdaojia.com/sa?project=product"
} else if ($config.api_url == 'https://day.m.qxdaojia.com/api/'){server_url = "https://scdata.qxdaojia.com/sa?project=default"
}sensors.setPara({server_url: server_url, //数据上报地址 必填 @Platform Allshow_log: true, //日志打印 @Platform Allname:'sensors', //参考小程序文档 @Platform 小程序autoTrack: {appLaunch: true, // 默认为 true,false 则关闭 $MPLaunch 事件采集appShow: true, // 默认为 true,false 则关闭 $MPShow 事件采集appHide: true, // 默认为 true,false 则关闭 $MPHide 事件采集pageShow: true, // 默认为 true,false 则关闭 $MPViewScreen 事件采集pageShare: true, // 默认为 true,false 则关闭 $MPShare 事件采集mpClick: true, // 默认为 false,true 则开启 $MPClick 事件采集mpFavorite: true, // 默认为 true,false 则关闭 $MPAddFavorites 事件采集pageLeave: false // 默认为 false, true 则开启 $MPPageLeave事件采集},// #ifdef H5heatmap: {//是否开启点击图,default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭。clickmap:'default',//是否开启触达图,not_collect 表示关闭,不会自动采集 $WebStay 事件,可以设置 'default' 表示开启。scroll_notice_map:'default',collect_tags:{div: true,img: true},} ,// #endifapp_flush_interval: 15000, // 设置两次数据发送的最小时间间隔 @Platform Android&iOSapp_flush_bulkSize: 100, // 设置本地缓存日志的最大条目数,最小 50 条 @Platform Android&iOSapp_flush_network_policy: 30, // 设置 flush 时网络发送策略,默认 3G、4G、WI-FI 环境下都会尝试 flush @Platform Android&iOSapp_session_interval_time: 30000, // Session 时长,若 App 在后台超过设定事件,则认为当前 Session 结束,发送 $AppEnd 事件,单位毫秒 @Platform Andoridapp_data_collect: true ,//是否开启数据采集 @Platform Androidallow_amend_share_path: true // 是否允许修改 onShareAppMessage 里 return 的 path,用来增加(登录 ID,分享层级,当前的 path),在 app onShow 中自动获取这些参数来查看具体分享来源、层级等
});
进行全局注册
globalData: {sensors: sensors
}
通过使用gettApp().globalData
获取全局案例。
页面中使用例如: getApp().globalData.sensors.track('ApplyReturnClick',{});
3.2 代码埋点(代码侵入性强)
在具体的位置添加事件埋点,以按钮点击时触发事件为例
其中对应的事件名为:BuyProduct; 对应的事件自定义属性为 ProductID 和 UserLevel;
sensors.track("BuyProduct",{ProductID : "Laptop Computer", UserLevel : 3});
3.3 用户登录
当用户注册成功或者登录成功时,需要调用 login 接口
sensors.login("<#登录 id#>");
为了准确记录登录用户的行为信息,建议在以下时机调用一次 login
接口:
- 用户在注册成功时;
- 用户登录成功时;
- 已登录用户每次启动 App 时。
注意⚠️:登录接口传入的类型需要字符串类型,切勿传入 Number 类型,否则会导致打包成 iOS App 时登录不生效。
3.4 记录激活事件
可以在设置全局变量后调用激活接口:
sensors.trackAppInstall({DownloadChannel : "AppStore"});
3.5 设置公共属性
对于所有事件都需要添加的属性,在设置全局变量后调用 register 方法将属性注册为公共属性
sensors.register({key1:"value1",key2 : "value2"});
- 公共属性在 H5 的页面生命周期内有效;
- 小程序在 App 生命周期内有效;
- App 会保存在本地缓存中;
- 可以通过调用 unRegister 方法删除一个或者多个公共属性。也可以使用 clearRegister 方法删除所有已经设置的公共属性;
3.6 设置用户属性
setProfile
方法可以设置用户属性,同一个 key 多次设置时,value 值会进行覆盖替换。
sensors.setProfile({key1:"value1",key2:"value2"});
三、拓展阅读
- 神策官网
- 神策官方文档
- 神策分析 JS 插件
跨平台应用开发进阶(二十九) :uni-app 实现Android原生APP-云打包集成神策详细教程相关推荐
- 跨平台应用开发进阶(二十五) :uni-app实现IOS云打包解决IOS提交审核相册等隐私描述语导致审核失败问题
文章目录 一.问题描述 二.问题分析 三.解决方案:IOS云打包修改权限提示语 3.1 IOS隐私信息 3.2 设置方法 四.拓展阅读 一.问题描述 Guideline 5.1.1 - Legal - ...
- 跨平台应用开发进阶(二十二) :Android 应用安全机制实现方案
文章目录 一.为什么要做安全加固? 二.如何为 App 应用加固? 三.APP签名 3.1 Android 签名机制 3.2 Android 签名原理 3.2.1 MANIFEST.MF 3.2.2 ...
- 跨平台应用开发进阶(二十六) :忐忑悲壮路,心酸出坑史——记第一次iOS艰辛上架路
文章目录 一.前言 二.上架问题汇总 2.1 Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage We noticed th ...
- 跨平台应用开发进阶(三十九)uni-app实现内容分享
文章目录 一.前言 二.系统分享组件 三.uniShare SDK调用 四.题外话 4.1 不支持的分享类型 4.2 微信转发链接不显示图片和描述文字 五.拓展阅读 一.前言 APP开发过程中,需要实 ...
- 网站开发进阶(二十九)HTML特殊转义字符
HTML特殊转义字符 参考文献 http://tool.oschina.net/commons?type=2 美文美图
- 跨平台应用开发进阶(三十八)uni-app前端监控方案:基调听云APP探究
文章目录 一.前言 二.产品介绍 2.1 工作原理 2.1.1 Android平台工作原理 2.1.2 iOS平台工作原理 三.项目集成 3.1 Android集成 3.2 iOS集成 四.答疑解惑 ...
- 跨平台应用开发进阶(四十六)webview方式嵌套H5应用加载慢解决方案
文章目录 一.前言 二.优化建议 三.实施方案 3.1 优化项目结构,减小项目组包体积 3.2 去除项目冗余字体文件 3.2.1 字体筛选 3.2.2 字体压缩 3.3 gzip压缩 3.4 ETag ...
- 跨平台应用开发进阶(三十):uni-app 实现集成火山视频直播服务
文章目录 一.前言 二.技术实现 2.1 web-view组件在app中的窗体关系和plus.webview操作方式 三.双向通信 3.1 uni-app与内嵌网页通信 3.2 内嵌网页向uni-ap ...
- 跨平台应用开发进阶(四十五)uni-app集成企微客服实战
文章目录 一.前言 二.功能实现 2.1 环境准备 2.2 代码层面 2.3 拓展工具 三.拓展阅读 一.前言 应用运营过程中,考虑接入企业微信客服功能,大致看了下官方接入文档,并不困难,引入代码量也 ...
最新文章
- css 伪元素::after与::before的使用
- 深度学习框架Caffe源码解析
- HTML之表格篇——表格的嵌套
- 一本彻底搞懂MySQL索引优化EXPLAIN百科全书
- wxWidgets:wxRichToolTip类用法
- boost::static_pointer_cast相关的测试程序
- 【转】如何开始学习CoreCLR源代码?
- 五子棋项目结束总结_居家活动系列总结
- 【TensorFlow】TensorFlow从浅入深系列之五 -- 教你详解滑动平均模型
- 谋求“同股不同权”,旷视赴港上市渐近
- VS生产dll把双目追踪四个圆点计算的物体位姿给unity,在unity中实时变化
- MATLAB----输入和输出
- java 进度条 百分比_java怎么让进度条带百分数
- turtle库 科赫雪花(bug)的绘制
- maxscale的causal_reads参数
- 树莓派蜂鸣器python代码_树莓派之蜂鸣器模块基础应用
- 【ERP知识】一个VMI(供应商管理库存)实现方案
- 【Updating】二〇二一流水账
- AC/DC电源的设计原理
- Rust - 过程宏
热门文章
- DefCampCTF2122取证
- 基于布谷鸟优化的BP神经网络(分类应用) - 附代码
- 中国移动手机邮箱测试将扩展至北京用户
- 电子科技大学2021计算机考研复试科目,2021西安电子科技大学考研复试时间_西安交通大学考研复试科目...
- 2020 - 1024 = 996 ?
- 电机三角形接法和星形接法的理解
- 计算机禁止用户登录,win7系统禁止显示用户登录信息的设置方法
- 转:没有深度思考,所有努力都是扯淡
- Java后端接收前端post方式传来的表单数据
- 计算机组成原理的exec是什么,exec...