小程序可以通过以下方式获取来源信息:
通过URL参数传递来源信息
在用户从其他页面跳转到小程序时,可以通过URL的query参数传递来源信息。例如,在跳转时构造URL如下:
```javascript
const url = `/pages/school/school?recommend_type=${idx}`;
wx.navigateTo({ url: url });
```
这种方法可以在任意场景中实现向任意页面传递参数,但只能传递简单的string或number,对于复杂的对象和数组,则需要通过JSON.stringify进行处理,获取后再解析。
使用EventChannel事件传递来源信息
可以通过EventChannel.emit向触发一个事件,然后在目标页面的onLoad中EventChannel.on监听该事件。这种方法在跳转到页面时有效,但首次加载时可能会因为官方bug导致回报错。
通过getCurrentPages获取调用栈
通过getCurrentPages获取当前页面栈,从而获取上一个页面的实例,并在这个页面获取到参数后设置到上一个页面中。例如:
```javascript
itemClick: function (e) {
let pages = getCurrentPages();
if (pages.length >= 2) {
let prevpage = pages[pages.length - 2];
console.log(prevpage.route);
}
}
```
这种方法经过实践证明是靠谱的,可以获取到上一个页面的路由信息,从而判断来源。
使用微信提供的流量来源分析工具
可以通过微信的流量来源分析工具查看小程序的访问来源,包括外部应用来源等。这个工具可以帮助你了解小程序的用户渠道,包括各个场景的小程序打开次数、访问时长和访问深度等。
通过消息回调判断来源
如果小程序绑定了接收消息API,可以通过分析消息回调来判断消息是从哪个小程序来的。例如,当收到消息回调时,会同时调用多个接收消息API,通过分析回调的顺序和参数可以判断消息来源。
通过以上方法,小程序可以较为准确地获取来源信息,从而进行更精准的用户分析和渠道追踪。建议根据具体需求和场景选择合适的方法来实现来源信息的传递和分析。