张延森 4 년 전
부모
커밋
a63ba3fc2c
2개의 변경된 파일54개의 추가작업 그리고 13개의 파일을 삭제
  1. 45
    0
      src/utils/share.js
  2. 9
    13
      src/utils/track.js

+ 45
- 0
src/utils/share.js 파일 보기

@@ -0,0 +1,45 @@
1
+import { getCurrentInstance } from '@tarojs/taro'
2
+import { shareTrack } from './track'
3
+import { getPage } from '.'
4
+
5
+/**
6
+ * 返回分享对象
7
+ * 一般情况下  params 需要设置 3 个属性
8
+ *    id: 如果不设置, 会从 router 里面拿 id
9
+ *    title: 分享的标题
10
+ *    image: 分享图片
11
+ * 
12
+ * @param {*} params 
13
+ * @param {*} user 
14
+ */
15
+export function getShareObject(params, user) {
16
+  const router = getCurrentInstance().router
17
+  const page = getPage() || {}
18
+  const { title, image, targetId, ...leftParams } = params || {}
19
+
20
+  const event = (params || {}).event || 'share'
21
+  const eventType =  (params || {}).eventType || page.eventType
22
+  const id = targetId || router.params.id
23
+
24
+  // 分享埋点
25
+  shareTrack({
26
+    ...leftParams,
27
+    event,
28
+    eventType,
29
+    targetId,
30
+  })
31
+
32
+  // 理论上 queryString 需要做 encodeURIComponent 处理
33
+  const queryString = [
34
+    `id=${id}`,
35
+    `from=${eventType}`,
36
+    `recommender=${user.personId}`
37
+  ].join('&')
38
+
39
+  // 返回分享对象
40
+  return {
41
+    title,
42
+    imageUrl: image,
43
+    path: `${router.path}?${queryString}`
44
+  }
45
+}

+ 9
- 13
src/utils/track.js 파일 보기

@@ -41,18 +41,17 @@ export async function trackUserSource(router, qrcode) {
41 41
  * 分享埋点
42 42
  * params 一般需要如下传值:
43 43
  *    targetId: 当前页面的ID
44
- *    shareType: 分享内容类型, 目前约定的有 main 首页, project 项目, activity 普通活动, news 资讯 等
45 44
  *    event: 默认是 share, 如果是海报分享, 请传值 poster
46 45
  * 
47 46
  * @param {*} params 
48 47
  */
49 48
 export function shareTrack(params, user) {
50
-  const { shareType, targetId, ...trackParams } = params || {}
51
-  if (!shareType || !user || !user.personId) {
52
-    return
53
-  }
49
+  // 埋点
50
+  const page = getPage() || {}
51
+  const eventType =  (params || {}).eventType || page.eventType
54 52
 
55
-  console.log(`设置 [${shareType}-${targetId}] 分享埋点` )
53
+  const { targetId, ...trackParams } = params || {}
54
+  console.log(`设置 [${eventType}-${targetId}] 分享埋点` )
56 55
 
57 56
   // 分享设置
58 57
   if (targetId) {
@@ -60,24 +59,21 @@ export function shareTrack(params, user) {
60 59
       ...apis.setShare,
61 60
       silent: true,
62 61
       args: {
63
-        type: shareType,
62
+        type: eventType,
64 63
         id: targetId
65 64
       }
66 65
     }).then(res => console.log('--分享设置-->', res))
67 66
   }
68 67
 
69
-  // 埋点
70
-  const router = getCurrentInstance().router
71
-  const page = pages.filter(x => router.path.indexOf(x.page) > -1)[0] || {}
72
-
73 68
   const data = {
74 69
     propertyName: page.name,
75 70
     data: '{}',
76 71
     ...(page.track || {}),
77 72
     targetId,
78
-    sharePersonId: user.personId,
79 73
     event: 'share',
80
-    ...trackParams
74
+    ...trackParams,
75
+    sharePersonId: user.personId,
76
+    eventType,
81 77
   }
82 78
 
83 79
   request({ ...apis.saveTracking, silent: true, data }).then(res => {