小程序获取用户的操作轨迹日志
微信小程序开发交流qq群 173683895
花费了两天时间,修改过数次,终于把这个功能封装成了一个独立的工具。
任何小程序都可在不修改原代码的情况下直接镶入使用!!!
步骤:
1. 在小程序 app.js 的平级目录创建一个 js , 命名为 userTrajectory.js。点击下载
userTrajectory.js 实现的代码是把 ‘存储用户在当前小程序的操作日志。然后传给后端’ 封装起来。
2.在 app.js 内引用 userTrajectory.js ,并且把当前对象赋值给 userTrajectory.js 。示例代码:
var userTrajectory = require('./userTrajectory.js');App({onLaunch: function(options) {//获取用户操作轨迹userTrajectory.initUserTrajectory.apply(this, []);}
})
3.在小程序内调用它。使用代码示例:
Page({data: {},onLoad: function (options) {//opType = '操作类型', opEvent = '操作事件',opEventId = '操作事件ID',opnEventDetail = '操作事件详情'getApp().getUserTrajectory(1, 'onLoad', 'pages/index_0', '进入小程序首页');//获取用户轨迹}
})
4.完成。用户操作轨迹的日志 log:
传给后端的数据参数说明:
参数 | 参数说明 |
pagePath | 页面路径 |
intoId | 进入小程序的场景值ID |
originId | 来源ID |
userToken | 用户标识 |
upTime | 上传信息的时间戳 |
userTrajectoryArr | 用户操作轨迹的数组 |
userTrajectoryArr 数组内的对象(用户在小程序里面进行的所有操作都保存在这):
参数 | 参数说明 |
opTime | 操作的时间戳 |
opType | 操作类型 |
opEvent | 操作事件 |
opEventId | 操作事件ID |
opnEventDetail | 操作事件详情 |
opType - 操作类型详细说明:
1.页面跳转 2.支付 3.分享小程序 4.跳转小程序
5.页面内点击 6.自定义 7.用户输入 8.拨打客服电话
996.小程序显示 997.小程序隐藏 998.小程序销毁 999.进入小程序
调用示例:
getApp().getUserTrajectory(1, 'onLoad', 'pages/index_0', '进入小程序首页');
//获取用户轨迹数据格式示例:
appQuery:{}
intoId:1001
originId:undefined
userToken:o3XPM4q-4F1IfEYDnBFt2tLZHQ5E
upTime:1546499501918
userTrajectoryArr:
[{"opTime":1546499472740,"opType":6,"opEvent":"Require","opEventId":"pages/OrderList/orderHistory/orderHistory_10","opnEventDetail":"订单记录页面请求订单接口","params1":"","params2":"","params3":""},
{"opTime":1546499495706,"opType":999,"opEvent":"AppOnLaunch","opEventId":"app.js_0","opnEventDetail":"小程序启动","params1":"","params2":"","params3":""},
{"opTime":1546499495814,"opType":996,"opEvent":"AppOnShow","opEventId":"app.js_1","opnEventDetail":"小程序显示","params1":"","params2":"","params3":""},
{"opTime":1546499495876,"opType":1,"opEvent":"onLoad","opEventId":"pages/index_0","opnEventDetail":"进入小程序首页","params1":"","params2":"","params3":""},
{"opTime":1546499498787,"opType":1,"opEvent":"navigate","opEventId":"pages/index_3","opnEventDetail":"跳转到订单记录页面","params1":"","params2":"","params3":""},
{"opTime":1546499499417,"opType":1,"opEvent":"onLoad","opEventId":"pages/OrderList/orderHistory/orderHistory_0","opnEventDetail":"进入订单记录首页","params1":"","params2":"","params3":""},
{"opTime":1546499499454,"opType":6,"opEvent":"Require","opEventId":"pages/OrderList/orderHistory/orderHistory_10","opnEventDetail":"订单记录页面请求订单接口","params1":"","params2":"","params3":""},
{"opTime":1546499501042,"opType":6,"opEvent":"Require","opEventId":"pages/OrderList/orderHistory/orderHistory_10","opnEventDetail":"订单记录页面请求订单接口","params1":"","params2":"","params3":""},
{"opTime":1546499501478,"opType":6,"opEvent":"Require","opEventId":"pages/OrderList/orderHistory/orderHistory_10","opnEventDetail":"订单记录页面请求订单接口","params1":"","params2":"","params3":""}]
相关文章:

paypal提现软件_PayPal软件工程师生命中的一天
paypal提现软件Find out what a normal day is like for a PayPal software engineer.找出PayPal软件工程师的正常日子。 Shruti Kapoor shares what she does and shows off some of the PayPal campus in San Jose, California.Shruti Kapoor分享了她的工作,并展…

关于IOS的蓝牙(转)
关于IOS的蓝牙 首先,你要了解你的目的是什么,一般的IOS蓝牙开发有以下三种目的: 1. IOS设备和IOS设备之间交互 好消息是:ios6.0可以把iPhone手机当从设备了,可以两台iPhone通过蓝牙通信传数据了,有点类似sp…

JavaSE--jdom解析之bom
参考:http://www.cnblogs.com/findumars/p/3620078.html 1 org.jdom2.input.JDOMParseException: Error on line 1: Content is not allowed in prolog. 2 13:15:55,821 [main] ERROR SajtSvrImpl:182 - 未知:org.jdom2.input.JDOMParseException: Error…

JS数组去重,JS根据数组里面的对象属性值去重
微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 微信小程序开发交流qq群 173683895 js数组简单去重 var arr1 [1, 2, 3, 4, 5, 6, 3, 4, 3];function arrayUnique1(arr) {var arr1 [], obj {};for (var i 0, elem; (elem arr[i]) ! null; i) {i…

git 设置有效目录_如何有效使用Git
git 设置有效目录The code was working yesterday but today it is not该代码昨天有效,但今天却没有 The code got deleted代码被删除 A weird bug has been introduced suddenly and no-one knows how突然引入了一个奇怪的错误,没人知道如何 If you hav…

C\C++宏大全
一、标准预定义宏The standard predefined macros are specified by the relevant language standards, so they are available with all compilers that implement those standards. Older compilers may not provide all of them. Their names all start with double undersc…

POJ 3630 Phone List
题目大意:给n个字符串,问是否有一个是另一个的前缀思路:把n个字符串插到trie里,然后判断就好,注意一个长字符串覆盖另一个短字符串和短字符串匹配长字符串的区别 1 #include<iostream>2 #include<cstring>3 #include<cstdio>4 #define maxn 10000…

微信小程序地图标记点,点击标记点显示详细信息源码加效果图
微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 效果图: 实现代码: <!-- <text>{{markers[id].placeName}}</text> --> <block wx:if{{isshow}}><map id"map" longitude"114.048410" latit…

如何仅使用HTML和JavaScript构建简单的URL缩短器
by Palash Bauri由Palash Bauri 如何仅使用HTML和JavaScript构建简单的URL缩短器 (How to build a simple URL shortener with just HTML and JavaScript) You might have used a URL shortener before, such as bit.ly, goo.gl. They are useful for shortening long URLs so…

hibernate中的hql查询语句list查询所有与iterate查询所有的区别
hibernate中的hql查询语句list查询所有与iterate查询所有的区别 list查询所有; 01,会立即产生一条select语句1select查询出来的所有语句都会被session管理, 保 存在缓存中 02,清空或者不清空session缓存中的数据,再次…

php解决 mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysq
微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 The mysql extension is deprecated and will be removed in the future: use mysq 翻译: mysql_connect这个模块将在未来弃用,请你使用mysqli或者PDO来替代。 解决方法&#x…

Test execution order
刚开始的时候,JUnit并没有规定测试方法的调用执行顺序。方法通过映射的API返回的顺序进行调用。然 而,使用JVM顺序是不明智的,因为Java平台没有规定任何特定的顺序,事实上JDK7或多或少的返回的是随机顺序。大部分写的好的测试代码…

您需要了解有关Angular中的ng-template,ng-content,ng-container和* ngTemplateOutlet的所有信息...
It was one of those days when I was busy working on new features for my office project. All a sudden, something caught my attention:那是我忙于为Office项目开发新功能的日子之一。 突然间,一些事情引起了我的注意: While inspecting the DOM …

洛谷P2587 [ZJOI2008]泡泡堂
传送门 1368 泡泡堂 省队选拔赛 时间限制: 1 s空间限制: 128000 KB题目等级 : 大师 Master题解题目描述 Description第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成…

bootstrap的日期选择器 完整源码demo附效果图
微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 效果图: (点击图1时钟显示图2自动隐藏图1,点击图2的日历会显示图1自动隐藏图2) 源码 <!DOCTYPE html> <html><head><meta charset&q…

redux 局部刷新_如何使用Redux Observables和刷新令牌API获取新的访问令牌
redux 局部刷新by Sachin Kumar由Sachin Kumar 如何使用Redux Observables和刷新令牌API获取新的访问令牌 (How to get a new access token using Redux observables and the refresh token API) This article is about how I handled a 401 status code on an API response. …

九宫格抽奖转盘源码分析
效果如上图所示,下面对其实现代码进行分析,看能不能破解其抽奖规则。需要引入jquery-1.8.3.min.js和images/9张图片。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra…

关于使用strtok的一个小问题
今天在弄一下啊小小程序的时候。报错,出现了问题。先看代码 int main(int argc, char* argv[]) {char *filename "interface_ipset_1_1.json";char* split1 "_";char* split2 ".";char splitfile1[4][NAME_MAX];sagent_string_sp…

微信小程序发送模板消息,php发送模板消息
微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 formId 在安卓系统是纯数字,在IOS系统是一串加密字符,如图: 发送模板消息(服务通知)效果图: 前端 wxml <form bindsubmit"…

使用TypeScript映射和条件类型使React组件更出色
by Deepu K Sasidharan通过Deepu K Sasidharan 使用TypeScript映射和条件类型使React组件更出色 (Make your React components great with TypeScript mapped and conditional types) You’ve probably heard about TypeScript. You may have heard someone claiming how grea…

2017年6月16号课堂笔记
2017年6月16号 星期五 空气质量:中度污染~轻度污染 内容:jQuery:remove,bind,attr,on和live,同辈和父辈节点的操作, keyup/keypress/keydown,focus-blur应用,表单事件/键…

大宗商品(Bulk Stock)交易
大宗商品(Bulk Stock)是指可进入流通领域,但非零售环节,具有商品属性用于工农业生产与消费使用的大批量买卖的物质商品。在金融投资市场,大宗商品指同质化. 可交易. 被广泛作为工业基础原材料的商品大宗商品电子交易主…

【Ant Design Pro 二】 创建页面,组件,并在页面调用
开发交流qq群 173683895 路由里面的参数作用介绍: {path: "/a_nowdayserver/nowdayserver", //随便取名,显示在访问路径url中,如果是子路由,需要和父路径匹配icon: "file", //菜单栏显示的图标name: "你好", //菜单栏显示的标题component…

安卓收取费用_作为自由职业者应收取的费用:以价值为基础的定价是否能达到炒作的目的?...
安卓收取费用by Benek Lisefski由Benek Lisefski 作为自由职业者应收取的费用:以价值为基础的定价是否能达到炒作的目的? (What to charge as a freelancer: does value-based pricing live up to the hype?) 定价很难。 (Pricing is hard.) Even afte…

Java笔记(25):设计模式概述
1、设计模式的概述和分类 设计模式: 经验的总结。 A:创建型 创建对象 B:结构型 对象的组成 C:行为型 对象的功能创建型模式:1)简单工厂模式 2)工厂方法模式 3)设计模式 2、简单工厂模式概述和使用 1 package cn.itcast_01; 2 3 public abstract class A…

Ant Design Pro 使用图表 charts bizcharts
微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 淌了一下午坑,都是辛酸泪 总结:首先要知道, 它不能直接使用 charts ,需要安装 bizcharts 插件,然后导入 bizcharts 中的 charts; 点击跳转到 bizcharts 官方文档,建议看完整个流程再跳转 首先,…

【剑指offer 面试题47】不用加减乘除做加法
思路: 利用位运算 C: 1 #include <iostream>2 using namespace std;3 4 int main()5 {6 int a 11, b 17;7 int sum, carry;8 do9 { 10 sum a ^ b; 11 carry (a & b) << 1; 12 a sum; 13 …

travis-ci自动部署_如何使用Travis CI部署(几乎)零恐惧的Cloud Foundry应用
travis-ci自动部署by Robin Bobbitt罗宾波比(Robin Bobbitt) 如何使用Travis CI部署(几乎)零恐惧的Cloud Foundry应用 (How to deploy your Cloud Foundry app with (almost) zero fear using Travis CI) Application deployments to the cloud should be painless. We should…

Activiti 规则任务(businessRuleTask)
Activiti 规则任务(businessRuleTask) 作者:邓家海 目前国内研究Activiti规则任务businessRuleTask)的文章在网上应该不超出3篇 小觑夜漫酒作伴,破晓黎明当笑言 前言: 最近一直在研究Activiti工作流的自动化…

10年工作经验老程序员推荐的7个开发类工具
做.NET软件工作已经10年了,从程序员做到高级程序员,再到技术主管,技术总监。见证了Visual Studio .NET 2003,Visul Studio 2005, Visual Studio Team System 2008, Visual Studio 2010 Ultimate,Visual Studio 2013一系列近5个版本的变化与亲…