Commit f7c3ca7dbca8f1f8b0c44ad8166ab792949fff2f
1 parent
4f63bbe3
Exists in
master
完结分享模块
Showing
12 changed files
with
490 additions
and
129 deletions
Show diff stats
SUMMARY.md
@@ -12,7 +12,7 @@ | @@ -12,7 +12,7 @@ | ||
12 | * [关卡分析打点️️✔️](stat_level.md) | 12 | * [关卡分析打点️️✔️](stat_level.md) |
13 | * [自定义事件打点✔️](stat_event.md) | 13 | * [自定义事件打点✔️](stat_event.md) |
14 | * [交叉推广位✔️](stat_ads.md) | 14 | * [交叉推广位✔️](stat_ads.md) |
15 | -* [分享视频模块](share.md) | 15 | +* [分享视频模块✔️](share.md) |
16 | * [配置参数模块️✔️](online.md) | 16 | * [配置参数模块️✔️](online.md) |
17 | * [多平台接口模块](platform.md) | 17 | * [多平台接口模块](platform.md) |
18 | * [支付打点](platform_pay.md) | 18 | * [支付打点](platform_pay.md) |
46.2 KB
97 KB
99.3 KB
96.5 KB
online.md
@@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
5 | 5 | ||
6 | #### **简介** | 6 | #### **简介** |
7 | 7 | ||
8 | -在线配置参数是噗嗤游戏开放的一个新模块功能,可以让开发者在后台配置参数中动态修改游戏中的参数值。例如:动态修改游戏的数值,小到一个简单开关0/1切换、一个简单的数字配置;打到一个游戏json配置等等。 | 8 | +在线配置参数是噗嗤游戏开放的一个新模块功能,可以让开发者在后台【配置参数】栏中动态修改游戏使用的参数值。例如:动态修改游戏的数值,小到一个简单开关0/1切换、一个简单的数字配置;大到一个游戏json配置等。 |
9 | 9 | ||
10 | 该模块借鉴了[友盟在线配置参数](http://www.it610.com/article/4896789.htm)的设计思路。 | 10 | 该模块借鉴了[友盟在线配置参数](http://www.it610.com/article/4896789.htm)的设计思路。 |
11 | 11 | ||
@@ -40,7 +40,7 @@ | @@ -40,7 +40,7 @@ | ||
40 | 40 | ||
41 | 提示: | 41 | 提示: |
42 | 42 | ||
43 | - > [config.js中配置IsOnlineAutoUse](install.md#config_env)为true:SDK启动时自动去拉取在线配置参数,开发者不需要调用此接口,不然会导致重复拉取 | 43 | + > [config.js中配置IsOnlineAutoUse](install.md#config_env)为true:SDK启动时会自动去拉取在线配置参数,开发者不需要调用此接口,不然会导致重复拉取 |
44 | > | 44 | > |
45 | > [config.js中配置IsOnlineAutoUse](install.md#config_env)为false:有两种理解方式:1)不接入使用在线配置参数模块;2)接入使用在线配置参数模块,开发者自己手动调用updateOnlineConfig api处理逻辑。 | 45 | > [config.js中配置IsOnlineAutoUse](install.md#config_env)为false:有两种理解方式:1)不接入使用在线配置参数模块;2)接入使用在线配置参数模块,开发者自己手动调用updateOnlineConfig api处理逻辑。 |
46 | > | 46 | > |
share.md
@@ -4,13 +4,32 @@ | @@ -4,13 +4,32 @@ | ||
4 | ------ | 4 | ------ |
5 | 5 | ||
6 | #### **简介** | 6 | #### **简介** |
7 | -小游戏生态中,大家普遍把平台提供的分享/视频接口更多用于某个奖励领取、获取n倍奖励、游戏死亡复活、转盘额外次数获得等等一种有效途径(分享:拉取新用户,视频:赚钱广告费);噗嗤游戏在分享or视频平衡推送切换不断的探索迭代中,总结了一套分享/视频积分策略,集成在SDK中开放给开发者,开发者在后台界面化操作下能方便的对某个功能点分享文案、分享图、推送类型(分享、视频)进行添加修改: | 7 | +小游戏生态中,普遍把平台提供的分享/视频接口更多用于某个奖励领取、获取n倍奖励、游戏死亡复活、转盘额外次数获得等等一种有效途径(分享:拉取新用户,视频:赚钱广告费);噗嗤游戏在分享or视频推送不断的探索迭代中,总结了一套分享/视频积分策略,集成在SDK中开放给开发者,开发者只需对游戏中分享视频功能点命名一个英文名称key(分享视频key),这个key关联分享文案、分享图、分享开关(推送类型)、视频uid等等在后台配置好,使用SDK提供的一个dispatch api传入英文名称key即可完成接入工作。 |
8 | 8 | ||
9 | -- 分享/视频配置可以让开发者在后台中动态修改相关功能的分享/视频配置内容。 | 9 | +- 分享/视频配置可以让开发者在后台中动态修改相关功能点的分享/视频配置内容。 |
10 | 10 | ||
11 | -- 新增某个功能的分享点配置、在线修改相关功能的分享图或文案、在线切换某个功能按钮的分享/视频功能。 | 11 | +- 新增某个功能的分享点配置、在线修改相关功能点的分享图或文案、在线切换某个功能点按钮的分享/视频推送类型。 |
12 | + | ||
13 | +- 调用SDK的dispatch api,dispatch会根据后台配置的分享开关(推送类型)自动进行分发:推送分享还是视频全权交由SDK去处理,开发者只需要传入成功/失败回调函数,成功回调函数处理发放领取奖励、n倍奖励、成功复活等操作,失败回调函数处理参数传递的msg信息。 | ||
14 | + | ||
15 | +#### **疑惑解答** | ||
16 | +1. 为什么要引入这个模块? | ||
17 | + | ||
18 | + > 游戏中很多n倍奖励、复活、额外奖励等功能点通常需要分享或者视频才能额外获得,游戏上线后,运营很有可能会对某些功能点有额外的需求修改:a功能点获取由分享改成视频方式获取、b功能点由视频改成分享方式获取、c功能点需要在前面n次看视频获得后全是分享获得、为某某功能的分享图想换一个、拉取视频不成功自动切换分享等等;为了应对这些不同情形,我们把分享和视频点包装成一个模块,a功能点也不在局限于只是简单的分享、b功能只是视频,而是通过后台分享开关去灵活切换。所有功能点入口调用都是使用dispatch,每个功能点都是转化为一个分享视频key在后台管理。 | ||
19 | + | ||
20 | +2. 什么是分享视频key? | ||
21 | + | ||
22 | + > 分享视频key是一个功能点的英文名称,这个key配置在后台中,关联分享文案、分享图、分享开关(推送类型)、视频uid等等信息。某个功能点(不论是分享还是视频方式)调用dispatch传入这个key,SDK会读取这个key关联的信息,根据分享开关(推送类型)来推送分享(需要分享文案、分享图)还是推送视频(需要视频uid)。 | ||
23 | + | ||
24 | +3. 什么是分享视频分发? | ||
25 | + | ||
26 | + > 调用dispatch api传入分享视频key,SDK会查找这个key在后台配置的数据,SDK读取数据中分享开关(推送类型)的字段信息,通过这个开关类型来判断推给用户是分享还是视频,这个根据类型来推送的操作就是分发操作。 | ||
27 | + | ||
28 | +4. 游戏中之前是玩家分享n次后变成看视频或者是看视频n次后全是分享,dispatch能满足吗? | ||
29 | + | ||
30 | + > 上面的问题dispatch也同样支持,还是同样的调用方式,不需要做其他额外处理,dispatch是怎么做到的了:分享开关(推送类型)有一个分享积分选择项,这个选项就是通过积分策略实现了上面问题。 | ||
31 | + > | ||
12 | 32 | ||
13 | - | ||
14 | 33 | ||
15 | #### **后台使用** | 34 | #### **后台使用** |
16 | 35 | ||
@@ -20,7 +39,7 @@ | @@ -20,7 +39,7 @@ | ||
20 | 39 | ||
21 |  | 40 |  |
22 | 41 | ||
23 | -接入分享视频模块后,后台已经对分享和视频数据分别进行整理统计了,游戏接入方可实时阅览分享/视频的各项数据: | 42 | +接入分享视频模块后,后台已经对分享和视频数据分别进行整理统计了,游戏接入方可实时查看分享/视频的各项数据: |
24 | 43 | ||
25 | 查看分享分析,登录后台->头部tab切换到【游戏数据】->【产品分析】->【分享分析】可阅览游戏分享数据的各项统计: | 44 | 查看分享分析,登录后台->头部tab切换到【游戏数据】->【产品分析】->【分享分析】可阅览游戏分享数据的各项统计: |
26 | 45 | ||
@@ -34,151 +53,488 @@ | @@ -34,151 +53,488 @@ | ||
34 | 53 | ||
35 | #### **接入必读** | 54 | #### **接入必读** |
36 | 55 | ||
37 | -- 接入此模块前,请[**前往sdk/config.js文件中配置【IsUseShareModule: true 】开启share模块功能**](install.md#config_env),此参数配置为true,SDK启动时将自动拉取后台 -> 【分享/视频配置】配置的分享/视频配置列表。 | ||
38 | -- 微信小游戏开发者接入此模块,<font color="#FF0000">提审时候为了避免触犯微信平台的</font>[滥用分享行为](https://developers.weixin.qq.com/minigame/product/#_5-1-滥用分享行为),在后台【配置参数】中配置了一个系统级别的配置参数share_unlock,进行分享开关切换:1(开启)0(关闭),提审时候设置为0,审核通过后设置为1,SDK中读取此参数,如果推送的是分享,最终处理为无视频无分享模式。 | ||
39 | -- 开发者如 | 56 | +- 接入此模块前,请[**前往sdk/config.js文件中配置【IsUseShareModule: true 】开启分享视频模块功能**](install.md#config_env),此参数配置为true,才能正常使用此模块的功能,SDK启动时会自动拉取后台配置所有功能点的分享/视频配置列表。 |
57 | + | ||
58 | +- <font color="#FF0000">微信小游戏开发者接入此模块,如果游戏有很多分享点,提审时避免触犯微信平台的[滥用分享行为](https://developers.weixin.qq.com/minigame/product/#_5-1-滥用分享行为),在后台【配置参数】中配置了一个SDK内部使用的[配置参数](online.md)share_unlock,进行分享开关切换:1(开启)0(关闭),提审时设置为0,审核通过后设为1。share_unlock设置为0,所有的功能点不会分享完成、拉起看完视频后发放奖励,而是直接发放奖励,这样就能避免审核时,如果是推送分享拉起分享,被微信认为是诱导分享,被拒的可能性。 | ||
59 | + | ||
60 | +- sdk/config.js的配置参数ShareRightKey,表示右上角分享的分享视频key,请配置到后台【分享/视频配置】中。如果ShareRightKey配置不为空,SDK会自动调用微信的右上角分享接口(wx.onShareAppMessage),实现右上角分享功能,注意的是开发者在游戏中已经有注册wx.onShareAppMessage需要删除掉,不然游戏中onShareAppMessage的注册事件会把SDK中的注册事件处理函数覆盖掉,导致还是使用的是开发者注册的右上角分享功能。 | ||
61 | + | ||
62 | +- sdk/config.js的配置参数ShareData表示默认分享视频配置,此条配置应用在两种情况下: | ||
40 | 63 | ||
64 | + > 1、请求功能点的分享/视频配置列表出错,使用key去查找对应的分享配置肯定是查找不到的,会读取此条默认数据。 | ||
65 | + > | ||
66 | + > | ||
67 | + > | ||
68 | + > 2、请求功能点的分享/视频配置列表成功了,但是这个key没有配置到后台,也会读取此条默认数据 | ||
41 | 69 | ||
42 | -#### 接入API:** | 70 | +#### **接入**API: |
43 | 71 | ||
44 | | **名称** | **功能说明** | | 72 | | **名称** | **功能说明** | |
45 | | ------------------------------- | ------------------------------------------------------------ | | 73 | | ------------------------------- | ------------------------------------------------------------ | |
46 | -| PCSDK.online.updateOnlineConfig | 拉取后台配置的配置参数数据,可代码中手动调用,也可以通过config.js中配置SDK主动拉取,注意:使用前请详细[阅读config.js的IsOnlineAutoUse和IsOnlineDebug参数详解](install.md#config_env) | | ||
47 | -| PCSDK.online.getParamsInt | 根据在线参数key获取number类型参数值,适合配置参数为:整数、浮点数 | | ||
48 | -| PCSDK.online.getParamsObj | 根据在线参数key获取object类型参数值,适合配置参数为:数组、json对象 | | ||
49 | -| PCSDK.online.getParamsString | 根据在线参数key获取string类型参数值,适合配置参数为:字符串、json字符串 | | 74 | +| PCSDK.shareVideo.share | 普通分享,不需要处理回调的场景,例如分享到群、分享到好友,这些普通的分享,而不用处理成功/失败回调函数。 | |
75 | +| PCSDK.shareVideo.dispatch | 分享视频分发入口,传入功能点英文命名的分享/视频key | | ||
76 | +| PCSDK.shareVideo.getShareVideoType | 根据功能点在后台配置的分享/视频key,得到此功能点分享开关(推送类型)SDK计算得到最终推送类型:-1(无视频无分享)、0(分享)、1(异步分享)、5(分享积分)、2(视频)、3(无视频则分享)、4(视频和分享)(控制分享和视频两个按钮的显示) | | ||
50 | 77 | ||
51 | 78 | ||
52 | 79 | ||
53 | -1. ##### **updateOnlineConfig** | 80 | +1. ##### **share** |
54 | 81 | ||
55 | ```javascript | 82 | ```javascript |
56 | - PCSDK.online.updateOnlineConfig(): Promise<any> | 83 | + PCSDK.shareVideo.share(key:sring, params?: any, opts?: any): void |
57 | ``` | 84 | ``` |
58 | 85 | ||
59 | - 定义:拉取后台配置的配置参数数据, | ||
60 | - | ||
61 | - 提示: | ||
62 | - | ||
63 | - > [config.js中配置IsOnlineAutoUse](install.md#config_env)为true:SDK启动时自动去拉取在线配置参数,开发者不需要调用此接口,不然会导致重复拉取 | ||
64 | - > | ||
65 | - > [config.js中配置IsOnlineAutoUse](install.md#config_env)为false:有两种理解方式:1)不接入使用在线配置参数模块;2)接入使用在线配置参数模块,开发者自己手动调用updateOnlineConfig api处理逻辑。 | ||
66 | - > | ||
67 | - > 下面示例会演示两种不同配置的使用范例: | 86 | + 定义:普通分享,不需要处理回调的场景,例如分享到群、分享到好友,这些普通的分享,而不用处理成功/失败回调函数。 |
68 | 87 | ||
69 | 参数: | 88 | 参数: |
70 | 89 | ||
71 | - ``` | ||
72 | - 无 | ||
73 | - ``` | 90 | + ```javascript |
91 | + key: string 必传 功能点的分享/视频key(后台 ->【游戏数据】 ->【配置相关】->【分享/视频配置】配置的key) | ||
92 | + | ||
93 | + params: object 选传 扩展参数:分享链接query携带自定义参数,{ key: value }对象形式,该对象传递的参数会与SDK内部query参数一起组成query(查询参数, key1=val1&key2=val2的格式)的值,SDK内部参数key有:channel_id、user_invite_uid、share_id、share_key。 | ||
94 | + | ||
95 | + 提示:params传递的对象中如果含有传递SDK内部query参数key,会被SDK内部参数值覆盖,所以开发者避免传递这些key。 | ||
74 | 96 | ||
97 | + opts: object 选传 可不传递 | ||
98 | + | ||
99 | + ``` | ||
100 | + | ||
75 | 返回值: | 101 | 返回值: |
76 | - | 102 | + |
103 | + ```javascript | ||
104 | + void | ||
77 | ``` | 105 | ``` |
78 | - Promise<any> | 106 | + |
107 | + 示例:游戏首页分享到群的功能,假如config.js配置的ChannelId: 20024;后台配置的分享视频key: home_share2group、此分享key的id:512;用户id:100000。 | ||
108 | + | ||
109 | + ```javascript | ||
110 | + // 示例1: | ||
111 | + // 分享后生成的query:share_id=512&share_key=home_share2group&channel_id=20024&user_invite_uid=100000 | ||
112 | + PCSDK.shareVideo.share( 'home_share2group' ); | ||
113 | + | ||
114 | + // 示例2:第二个参数是分享生成的query携带的参数 | ||
115 | + // 分享后生成的query:type=99&share_id=512&share_key=home_share2group&channel_id=20024&user_invite_uid=100000 | ||
116 | + PCSDK.shareVideo.share( 'home_share2group', { | ||
117 | + type:99 | ||
118 | + }); | ||
119 | + | ||
120 | + // 示例3:第二个参数是分享生成的query携带的参数,传递SDK内部query参数:channel_id | ||
121 | + // 分享后生成的query:type=99&share_id=512&share_key=home_share2group&channel_id=20024&user_invite_uid=100000 | ||
122 | + PCSDK.shareVideo.share( 'home_share2group', { | ||
123 | + type:99, | ||
124 | + channel_id:10000 | ||
125 | + }); | ||
79 | ``` | 126 | ``` |
80 | - | ||
81 | - <div id="sample"></div> | ||
82 | -示例1:config.js配置IsOnlineAutoUse为false,开发者调用updateOnlineConfig api手动拉取在线配置参数数据 | ||
83 | - | ||
84 | -```javascript | ||
85 | - // 后台 ->【游戏数据】->【配置参数】栏配置了:是否显示微信插屏广告、交叉推广位是否展示动态开关 | ||
86 | - PCSDK.online.updateOnlineConfig().then(() => { | ||
87 | - // 使用1:获取是否后台动态配置开启插屏广告,1为开启,0为关闭 | ||
88 | - let isInterstitialAd = PCSDK.online.getParamsInt('interstitial_ad_open', 0) === 1; | ||
89 | - // isInterstitialAd && '显示插屏广告'; | ||
90 | - | ||
91 | - // 使用2:获取动态多个广告位开启的配置 | ||
92 | - let pcGameOpenMap = PCSDK.online.getParamsObj('pc_games_open', { "Drawer": 0, "GuessLike": 0, "Cross": 0 }); | ||
93 | - // pcGameOpenMap.Drawer === 1 && '显示抽屉推广位'; | ||
94 | - // pcGameOpenMap.GuessLike === 1 && '显示猜你喜欢推广位'; | ||
95 | - // pcGameOpenMap.Cross === 1 && '显示交叉推广位'; | ||
96 | - | ||
97 | - // 使用3:获取签到配置 | ||
98 | - let signRewardCfg = PCSDK.online.getParamsObj('sign_reward_cfg', [100, 300, 500, 700, 900, 2000, 3000]); | ||
99 | - | ||
100 | - // 使用4:获取动态bannerUid | ||
101 | - let bannerUid = PCSDK.online.getParamsString('banner_common_uid', 'adunit-fe38438f074c717f'); | ||
102 | - // bannerUid && '显示banner'; | ||
103 | - }); | ||
104 | -``` | ||
105 | - | ||
106 | -示例2:config.js配置IsOnlineAutoUse为true,SDK启动时会自动调用 updateOnlineConfig api拉取在线配置参数数据 | ||
107 | - | ||
108 | -```javascript | ||
109 | - let isInterstitialAd = PCSDK.online.getParamsInt('interstitial_ad_open', 0) === 1; | ||
110 | - let pcGameOpenMap = PCSDK.online.getParamsObj('pc_games_open', { "Drawer": 0, "GuessLike": 0, "Cross": 0 }); | ||
111 | -``` | ||
112 | - | ||
113 | - | ||
114 | - | ||
115 | -2. ##### **getParamsInt** | 127 | + |
128 | +2. ##### **dispatch** | ||
116 | 129 | ||
117 | ```javascript | 130 | ```javascript |
118 | - PCSDK.online.getParamsInt( key: string, defaultVal?: number ): number | 131 | + PCSDK.shareVideo.dispatch( key: string, params?: { success: Function, fail: Function, context?: any} ): void |
119 | ``` | 132 | ``` |
120 | 133 | ||
121 | - 定义:根据在线参数key获取number类型参数值,适合配置参数为:整数、浮点数 | 134 | + 定义:普通分享,不需要处理回调的场景,例如分享到群、分享到好友,这些普通的分享,而不用处理成功/失败回调函数。 |
122 | 135 | ||
123 | 参数: | 136 | 参数: |
124 | 137 | ||
125 | ```javascript | 138 | ```javascript |
126 | - key: string 必传 后台 ->【配置参数】配置的key | ||
127 | - defaultVal: number 选传 默认值 后台没有配置此key,或在线配置参数数据拉取失败,则返回此值 | 139 | + key: string 必传 功能点的分享/视频key(后台 ->【游戏数据】 ->【配置相关】->【分享/视频配置】配置的key) |
140 | + | ||
141 | + params: object 选传 扩展参数:success分享视频成功回调处理函数,fail分享视频失败回调处理函数,contex函数执行上下文 | ||
142 | + { | ||
143 | + success: ( from:number, ret: any | null ) => void, | ||
144 | + error: ( from:number, error: object | null ) => void, | ||
145 | + context: any | ||
146 | + } | ||
147 | + | ||
148 | + from:此次分发成功推送类型 | ||
149 | + from返回枚举值为: | ||
150 | + 0:无视频无分享(后台配置分享开关(推送类型)or 应对审核分享关闭:配置参数share_unlock设置为0) | ||
151 | + 1:推送同步分享 | ||
152 | + 2:推送异步分享 | ||
153 | + 3:推送视频 | ||
154 | + | ||
155 | + error:此次分发失败的错误消息 | ||
156 | + error返回枚举值为: | ||
157 | + { code: 1000, msg: '要看完视频哦!' }, | ||
158 | + { code: 1001, msg: '加载视频广告失败!' }, | ||
159 | + { code: 999, msg: '视频UID不存在!' }, | ||
160 | + { code: 1002, msg: '加载视频广告失败!' }, | ||
161 | + { code: 1003, msg: '正在观看视频中...' }, | ||
162 | + { code: 1004, msg: '分享失败,请尝试发送至不同群!' }, | ||
163 | + { code: 1005, msg: '别总骚扰这个群,换个群分享吧!' }, | ||
164 | + { code: 1006, msg: '请分享到群哦!' }, | ||
165 | + { code: 1007, msg: '分享到群才能领取更多~' }, | ||
166 | + { code: 1008, msg: '分享失败,请尝试发送至不同群!' }, | ||
167 | + { code: 1009, msg: '今日已达分享上限次数,请明日再来' } | ||
128 | ``` | 168 | ``` |
129 | - | 169 | + |
130 | 返回值: | 170 | 返回值: |
131 | - | 171 | + |
172 | + ```javascript | ||
173 | + void | ||
132 | ``` | 174 | ``` |
133 | - number | 175 | + |
176 | + 示例:下面只是api的简单演示,详细案例,请戳[详细使用示例](share.md#detail)。 | ||
177 | + | ||
178 | + 演示 | ||
179 | + | ||
180 | + ```javascript | ||
181 | + // DiamondDoublePopwin.ts文件 | ||
182 | + export default class DiamondDoublePopwin extends BaseView{ | ||
183 | + protected addEvent() { | ||
184 | + super.addEvent(); | ||
185 | + // 免费领取双倍(应对微信审核,审核分享不能开放时候使用) | ||
186 | + this.btnFree.on(Laya.Event.CLICK, this, this.onReward); | ||
187 | + // 分享双倍 | ||
188 | + this.btnShare.on(Laya.Event.CLICK, this, this.onReward); | ||
189 | + // 视频双倍 | ||
190 | + this.btnVideo.on(Laya.Event.CLICK, this, this.onReward); | ||
191 | + } | ||
192 | + | ||
193 | + protected removeEvent() { | ||
194 | + super.removeEvent(); | ||
195 | + this.btnFree.off(Laya.Event.CLICK, this, this.onReward); | ||
196 | + this.btnShare.off(Laya.Event.CLICK, this, this.onReward); | ||
197 | + this.btnVideo.off(Laya.Event.CLICK, this, this.onReward); | ||
198 | + } | ||
199 | + | ||
200 | + // 领取奖励操作 | ||
201 | + private onReward(){ | ||
202 | + PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), { | ||
203 | + success: this.handleReward, | ||
204 | + fail: this.handleError, | ||
205 | + context: this | ||
206 | + } ); | ||
207 | + } | ||
208 | + | ||
209 | + // 分享/视频成功后回调处理函数:发奖励 | ||
210 | + private handleReward(from: ShareVideoFrom, ret: any | null){ | ||
211 | + // 分享成功、视频成功、无视频无分享 | ||
212 | + } | ||
213 | + | ||
214 | + // 分享/视频失败后回调处理函数:弹出提示 | ||
215 | + private handleError(from: ShareVideoFrom, error: any | null){ | ||
216 | + // 返回错误,处理错误msg信息,自定义处理 | ||
217 | + if( error ){ | ||
218 | + wx.showToast({ | ||
219 | + title: error.msg | ||
220 | + }); | ||
221 | + } | ||
222 | + } | ||
223 | + } | ||
224 | + | ||
225 | + // Enums.ts文件 | ||
226 | + // 分享视频key枚举,每个key表示一个功能点 | ||
227 | + enum ShareVideoKeys { | ||
228 | + // 钻石双倍获取 | ||
229 | + DiamondDouble = 'diamond_double', | ||
230 | + // 失败获得双倍奖励 | ||
231 | + FailRewardDouble = 'fail_reward_double' | ||
232 | + } | ||
233 | + | ||
234 | + // 分享视频功能点最终处理方式 | ||
235 | + enum ShareVideoFrom{ | ||
236 | + None = 0, // 无视频无分享 | ||
237 | + Share = 1, // 分享 | ||
238 | + ShareAsync = 2, // 异步分享 | ||
239 | + Video = 3, // 看视频 | ||
240 | + } | ||
134 | ``` | 241 | ``` |
135 | - | ||
136 | - 示例:[查看上面的示例代码](online.md#sample) | ||
137 | - | ||
138 | -3. **getParamsObj** | 242 | + |
243 | +3. ##### **getShareVideoType** | ||
139 | 244 | ||
140 | ```javascript | 245 | ```javascript |
141 | - PCSDK.online.getParamsObj( key: string, defaultVal?: any ): any | 246 | + PCSDK.shareVideo.getShareVideoType( key: string ): number |
142 | ``` | 247 | ``` |
143 | 248 | ||
144 | - 定义:根据在线参数key获取object类型参数值,适合配置参数为:数组、json对象 | ||
145 | - | 249 | + 定义:根据分享视频key获取此次shareVideo模块推送的分享视频类型值:-1(无视频无分享:提审时返回)、0(推送同步分享)、1(推送异步分享)、2(推送看视频)、3(无视频则分享)、4(视频和分享)、5(分享积分);此api用于通过得到的类型值处理页面的ui状态(微信和QQ平台对按钮的icon有强制限制):显示视频icon、显示分享icon、既没有分享icon,也没有视频icon。 |
250 | + | ||
146 | 参数: | 251 | 参数: |
147 | - | ||
148 | ```javascript | 252 | ```javascript |
149 | - key: string 必传 后台 ->【配置参数】配置的key | ||
150 | - defaultVal: any 选传 默认值 后台没有配置此key,或在线配置参数数据拉取失败,则返回此值 | 253 | + key: string 必传 功能点的分享/视频key(后台 ->【游戏数据】 ->【配置相关】->【分享/视频配置】配置的key) |
151 | ``` | 254 | ``` |
152 | - | 255 | + |
153 | 返回值: | 256 | 返回值: |
154 | - | ||
155 | - ``` | ||
156 | - object | array | null | 257 | + |
258 | + ```javascript | ||
259 | + number | ||
260 | + 返回值此次点击功能按钮触发的推送类型:-1(无视频无分享:提审时返回)、0(推送同步分享)、1(推送异步分享)、2(推送看视频)、3(无视频则分享)、4(视频和分享)、5(分享积分) | ||
261 | + 分享视频类型枚举值如下: | ||
262 | + // 推送类型:分享视频类型枚举 | ||
263 | + enum ShareVideoType { | ||
264 | + None = -1, // -1无分享无视频 | ||
265 | + Share = 0, // 0分享 | ||
266 | + ShareAysnc = 1, // 1异步分享 | ||
267 | + ShareIntegral = 5, // 5分享积分 | ||
268 | + Video = 2, // 2看视频 | ||
269 | + VideoToShare = 3, // 3无视频则分享 | ||
270 | + VideoAndShare = 4 // 4视频和分享(控制分享和视频两个按钮的显示) , | ||
271 | + } | ||
157 | ``` | 272 | ``` |
158 | - | ||
159 | - 示例:[查看上面的示例代码](online.md#sample) | ||
160 | - | ||
161 | -1. **getParamsString** | ||
162 | - | 273 | + |
274 | + 示例:下面只是api的简单演示,详细案例,请戳[详细使用示例](share.md#detail)。 | ||
275 | + | ||
163 | ```javascript | 276 | ```javascript |
164 | - PCSDK.online.getParamsString( key: string, defaultVal?: string ): string | 277 | + // DiamondDoublePopwin.ts文件 |
278 | + export default class DiamondDoublePopwin extends BaseView{ | ||
279 | + protected addEvent() { | ||
280 | + super.addEvent(); | ||
281 | + // 免费领取双倍(应对微信审核,审核分享不能开放时候使用) | ||
282 | + this.btnFree.on(Laya.Event.CLICK, this, this.onReward); | ||
283 | + // 分享双倍 | ||
284 | + this.btnShare.on(Laya.Event.CLICK, this, this.onReward); | ||
285 | + // 视频双倍 | ||
286 | + this.btnVideo.on(Laya.Event.CLICK, this, this.onReward); | ||
287 | + } | ||
288 | + | ||
289 | + protected removeEvent() { | ||
290 | + super.removeEvent(); | ||
291 | + this.btnFree.off(Laya.Event.CLICK, this, this.onReward); | ||
292 | + this.btnShare.off(Laya.Event.CLICK, this, this.onReward); | ||
293 | + this.btnVideo.off(Laya.Event.CLICK, this, this.onReward); | ||
294 | + } | ||
295 | + | ||
296 | + // 每次打开此popwin执行onOpen | ||
297 | + protected onOpen(){ | ||
298 | + super.onOpen(); | ||
299 | + this.iniitRewardUI(); | ||
300 | + } | ||
301 | + | ||
302 | + // 初始化/更新获得奖励按钮ui | ||
303 | + private initRewardUI() { | ||
304 | + let shareVideoType: ShareVideoType = PCSDK.shareVideo.getShareVideoType(ShareVideoKeys.DiamondDouble.toString()); | ||
305 | + switch (shareVideoType) { | ||
306 | + case ShareVideoType.Share: // 同步分享 | ||
307 | + case ShareVideoType.ShareAysnc: // 异步分享 | ||
308 | + case ShareVideoType.ShareIntegral: // 分享积分 | ||
309 | + this.btnFree.visible = false; | ||
310 | + this.btnShare.visible = true; | ||
311 | + this.btnVideo.visible = false; | ||
312 | + break; | ||
313 | + | ||
314 | + case ShareVideoType.Video: // 推送视频 | ||
315 | + case ShareVideoType.VideoToShare: // 无视频则分享 | ||
316 | + // 视频ui状态 | ||
317 | + this.btnFree.visible = false; | ||
318 | + this.btnShare.visible = false; | ||
319 | + this.btnVideo.visible = true; | ||
320 | + break; | ||
321 | + | ||
322 | + default: // 无视频和无分享 | ||
323 | + // 既不显示分享ui又不显示视频ui,直接领奖ui状态 | ||
324 | + this.btnFree.visible = true; | ||
325 | + this.btnShare.visible = false; | ||
326 | + this.btnVideo.visible = false; | ||
327 | + break; | ||
328 | + } | ||
329 | + } | ||
330 | + | ||
331 | + // 领取奖励操作 | ||
332 | + private onReward(){ | ||
333 | + PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), { | ||
334 | + success: this.handleReward, | ||
335 | + fail: this.handleError, | ||
336 | + context: this | ||
337 | + } ); | ||
338 | + } | ||
339 | + | ||
340 | + // 分享/视频成功后回调处理函数:发奖励 | ||
341 | + private handleReward(from: ShareVideoFrom, ret: any | null){ | ||
342 | + // 分享成功、视频成功、无视频无分享 | ||
343 | + } | ||
344 | + | ||
345 | + // 分享/视频失败后回调处理函数:弹出提示 | ||
346 | + private handleError(from: ShareVideoFrom, error: any | null){ | ||
347 | + // 返回错误,处理错误msg信息,自定义处理 | ||
348 | + if( error ){ | ||
349 | + wx.showToast({ | ||
350 | + title: error.msg | ||
351 | + }); | ||
352 | + } | ||
353 | + } | ||
354 | + } | ||
355 | + | ||
356 | + // Enums.ts文件 | ||
357 | + // 分享视频类型(与后台一一对应) | ||
358 | + export enum ShareVideoType { | ||
359 | + None = -1, // -1无分享无视频 | ||
360 | + Share = 0, // 0同步分享 | ||
361 | + ShareAysnc = 1, // 1异步分享 | ||
362 | + ShareIntegral = 5, // 5分享积分 | ||
363 | + Video = 2, // 2看视频 | ||
364 | + VideoToShare = 3, // 3无视频则分享 | ||
365 | + VideoAndShare = 4, // 4视频和分享(控制分享和视频两个按钮的显示) | ||
366 | + } | ||
367 | + | ||
368 | + // 分享视频key枚举,每个key表示一个功能点 | ||
369 | + enum ShareVideoKeys { | ||
370 | + // 钻石双倍获取 | ||
371 | + DiamondDouble = 'diamond_double', | ||
372 | + // 失败获得双倍奖励 | ||
373 | + FailRewardDouble = 'fail_reward_double' | ||
374 | + } | ||
375 | + | ||
376 | + // 分享视频功能点最终推送类型 | ||
377 | + enum ShareVideoFrom{ | ||
378 | + None = 0, // 无视频无分享 | ||
379 | + Share = 1, // 分享 | ||
380 | + ShareAsync = 2, // 异步分享 | ||
381 | + Video = 3, // 看视频 | ||
382 | + } | ||
383 | + | ||
165 | ``` | 384 | ``` |
385 | + <div id="detail"></div> | ||
386 | + 下面演示dispatch和getShareVideoType两个api的完整使用,Laya引擎开发: | ||
166 | 387 | ||
167 | - 定义:根据在线参数key获取string类型参数值,适合配置参数为:字符串、json字符串 | ||
168 | - | ||
169 | - 参数: | 388 | + 页面功能点按钮做三个状态: |
170 | 389 | ||
390 | + 1、看视频状态(显示视频icon) | ||
391 | + | ||
392 | + 2、分享状态(显示分享icon) | ||
393 | + | ||
394 | + 3、直接领奖(没有icon,审核状态) | ||
395 | + | ||
396 | +  | ||
397 | + | ||
398 | +  | ||
399 | + | ||
400 | +  | ||
401 | + | ||
402 | +  | ||
403 | + | ||
404 | + 例如,一个领取钻石双倍,页面的按钮ui通过下面的方式进行切换 | ||
405 | + | ||
406 | + 1、页面做三个按钮:视频icon按钮、分享icon按钮、直接领取按钮 | ||
407 | + | ||
408 | + 2、进入页面根据配置的key获取类型,显示对应类型ui:调用下面的initRewardUI(可随意命名) | ||
409 | + | ||
410 | + 3、<font color="#FF0000">分享或者视频后,SDK会发送一个tactic.update的消息过来,使用PCSDK.event.add注册监听,PCSDK.event.remove移除监听(PCSDK.event详细了解请查看[事件模块](event.md)),监听事件处理下一次推送显示ui状态:执行一下initRewardUI。</font> | ||
411 | + | ||
412 | + 4、给三个按钮都注册事件:onReward | ||
413 | + | ||
171 | ```javascript | 414 | ```javascript |
172 | - key: string 必传 后台 ->【配置参数】配置的key | ||
173 | - defaultVal: string 选传 默认值 后台没有配置此key,或在线配置参数数据拉取失败,则返回此值 | 415 | + // DiamondDoublePopwin.ts文件 |
416 | + export default class DiamondDoublePopwin extends BaseView { | ||
417 | + protected addEvent() { | ||
418 | + super.addEvent(); | ||
419 | + // 免费领取双倍(应对微信审核,审核分享不能开放时候使用) | ||
420 | + this.btnFree.on(Laya.Event.CLICK, this, this.onReward); | ||
421 | + // 分享双倍 | ||
422 | + this.btnShare.on(Laya.Event.CLICK, this, this.onReward); | ||
423 | + // 视频双倍 | ||
424 | + this.btnVideo.on(Laya.Event.CLICK, this, this.onReward); | ||
425 | + // PCSDK.event.add注册监听SDK发送的消息:tactic.update,更新获得奖励按钮ui | ||
426 | + PCSDK.event.add('tactic.update', this.initRewardUI, this); | ||
427 | + } | ||
428 | + | ||
429 | + protected removeEvent() { | ||
430 | + super.removeEvent(); | ||
431 | + this.btnFree.off(Laya.Event.CLICK, this, this.onReward); | ||
432 | + this.btnShare.off(Laya.Event.CLICK, this, this.onReward); | ||
433 | + this.btnVideo.off(Laya.Event.CLICK, this, this.onReward); | ||
434 | + // PCSDK.event.remove移除监听SDK发送的消息:tactic.update | ||
435 | + PCSDK.event.remove('tactic.update', this.initRewardUI, this); | ||
436 | + } | ||
437 | + | ||
438 | + // 每次打开此popwin执行onOpen | ||
439 | + protected onOpen(){ | ||
440 | + super.onOpen(); | ||
441 | + // 界面打开 | ||
442 | + this.initRewardUI(); | ||
443 | + } | ||
444 | + | ||
445 | + // 领取奖励操作 | ||
446 | + private onReward(){ | ||
447 | + PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), { | ||
448 | + success: this.handleReward, | ||
449 | + context: this | ||
450 | + } ) | ||
451 | + } | ||
452 | + | ||
453 | + // 分享/视频成功后回调处理函数:发奖励 | ||
454 | + private handleReward(from: ShareVideoFrom, ret: any | null){ | ||
455 | + // 分享成功、视频成功、无视频无分享 | ||
456 | + } | ||
457 | + | ||
458 | + // 分享/视频失败后回调处理函数:弹出提示 | ||
459 | + private handleError(from: ShareVideoFrom, error: any | null){ | ||
460 | + // 返回错误,处理错误msg信息,自定义处理 | ||
461 | + if( error ){ | ||
462 | + wx.showToast({ | ||
463 | + title: error.msg | ||
464 | + }); | ||
465 | + } | ||
466 | + } | ||
467 | + | ||
468 | + // 初始化/更新获得奖励按钮ui | ||
469 | + private initRewardUI() { | ||
470 | + let shareVideoType: ShareType = PCSDK.shareVideo.getShareVideoType(ShareVideoKeys.DiamondDouble.toString()); | ||
471 | + switch (shareVideoType) { | ||
472 | + case ShareVideoType.Share: // 同步分享 | ||
473 | + case ShareVideoType.ShareAysnc: // 异步分享 | ||
474 | + case ShareVideoType.ShareIntegral: // 分享积分 | ||
475 | + // 分享ui状态 | ||
476 | + this.stat_share.play(0,false); | ||
477 | + // 等同于 | ||
478 | + // this.btnFree.visible = false; | ||
479 | + // this.btnShare.visible = true; | ||
480 | + // this.btnVideo.visible = false; | ||
481 | + break; | ||
482 | + | ||
483 | + case ShareVideoType.Video: // 视频 | ||
484 | + case ShareVideoType.VideoToShare: // 无视频则分享 | ||
485 | + // 视频ui状态 | ||
486 | + this.stat_video.play(0,false); | ||
487 | + // 等同于 | ||
488 | + // this.btnFree.visible = false; | ||
489 | + // this.btnShare.visible = false; | ||
490 | + // this.btnVideo.visible = true; | ||
491 | + break; | ||
492 | + | ||
493 | + default: // 无视频和无分享 | ||
494 | + // 既不显示分享ui又不显示视频ui,直接领奖ui状态 | ||
495 | + this.stat_free.play(0,false); | ||
496 | + // 等同于 | ||
497 | + // this.btnFree.visible = true; | ||
498 | + // this.btnShare.visible = false; | ||
499 | + // this.btnVideo.visible = false; | ||
500 | + break; | ||
501 | + } | ||
502 | + } | ||
503 | + } | ||
504 | + | ||
505 | + // Enums.ts文件 | ||
506 | + // 分享视频类型(与后台一一对应) | ||
507 | + export enum ShareVideoType { | ||
508 | + None = -1, // -1无分享无视频 | ||
509 | + Share = 0, // 0同步分享 | ||
510 | + ShareAysnc = 1, // 1异步分享 | ||
511 | + ShareIntegral = 5, // 5分享积分 | ||
512 | + Video = 2, // 2看视频 | ||
513 | + VideoToShare = 3, // 3无视频则分享 | ||
514 | + VideoAndShare = 4, // 4视频和分享(控制分享和视频两个按钮的显示) | ||
515 | + } | ||
516 | + | ||
517 | + // 分享视频key枚举,每个key表示一个功能点 | ||
518 | + enum ShareVideoKeys { | ||
519 | + // 钻石双倍获取 | ||
520 | + DiamondDouble = 'diamond_double', | ||
521 | + // 失败获得双倍奖励 | ||
522 | + FailRewardDouble = 'fail_reward_double' | ||
523 | + } | ||
524 | + | ||
525 | + // 分享视频功能点最终推送类型 | ||
526 | + enum ShareVideoFrom{ | ||
527 | + None = 0, // 无视频无分享 | ||
528 | + Share = 1, // 分享 | ||
529 | + ShareAsync = 2, // 异步分享 | ||
530 | + Video = 3, // 看视频 | ||
531 | + } | ||
174 | ``` | 532 | ``` |
175 | 533 | ||
176 | - 返回值: | ||
177 | 534 | ||
178 | - ``` | ||
179 | - string | ||
180 | - ``` | ||
181 | 535 | ||
182 | - 示例:[查看上面的示例代码](online.md#sample) | 536 | +#### **终章:** |
537 | + | ||
538 | +这个模块的内容点比较多,接入的注意事项也比较多,望接入者细度使用说明和理解示例意图。 | ||
183 | 539 | ||
184 | - | ||
185 | \ No newline at end of file | 540 | \ No newline at end of file |
541 | +<font color="#FF0000">噗嗤游戏的小伙伴在开发公司内部游戏中使用此模块,简单封装了SDK分享视频模块的几个通用方法,提供开发者参考,</font>**[点击下载](https://dep.miso-lab.com/sdkword/sdk-share-tools-1.0.0.zip)**。 |
stat_active.md
@@ -26,7 +26,7 @@ | @@ -26,7 +26,7 @@ | ||
26 | | **名称** | **功能说明** | | 26 | | **名称** | **功能说明** | |
27 | | ------------------------ | ------------------------------------------------------------ | | 27 | | ------------------------ | ------------------------------------------------------------ | |
28 | | PCSDK.stat.loadingFinish | 加载游戏资源完成时打点,不是微信代码包白屏加载完成,游戏加载完成游戏ui界面图、json资源 | | 28 | | PCSDK.stat.loadingFinish | 加载游戏资源完成时打点,不是微信代码包白屏加载完成,游戏加载完成游戏ui界面图、json资源 | |
29 | -| PCSDK.stat.setLogind | 设置SDK必须要使用的用户id、第一次创建角色的注册时间,游戏接入方登录游戏服务器后调用 | | 29 | +| PCSDK.stat.setLogind | 设置SDK必须要使用的用户id、第一次创建角色的注册时间(单位秒),游戏接入方登录游戏服务器后调用 | |
30 | | PCSDK.stat.active | 用户活跃/新增注册上报,切记在setLogind设置需要的信息过后使用(设置setLogind后此api不限于使用位置),不然会导致新增注册数据统计异常 | | 30 | | PCSDK.stat.active | 用户活跃/新增注册上报,切记在setLogind设置需要的信息过后使用(设置setLogind后此api不限于使用位置),不然会导致新增注册数据统计异常 | |
31 | 31 | ||
32 | 32 | ||
@@ -82,7 +82,7 @@ | @@ -82,7 +82,7 @@ | ||
82 | PCSDK.stat.setLogind( data: object ): void | 82 | PCSDK.stat.setLogind( data: object ): void |
83 | ``` | 83 | ``` |
84 | 84 | ||
85 | - 定义:游戏成功登录到服务器后得到用户信息(用户id和用户第一次注册时间),设置SDK必需的用户信息 | 85 | + 定义:游戏成功登录到服务器后得到用户信息:<font color="#FF0000">用户id和用户第一次注册时间(时间戳,单位秒),设置SDK必需的用户信息</font> |
86 | 86 | ||
87 | 参数: | 87 | 参数: |
88 | 88 | ||
@@ -90,7 +90,7 @@ | @@ -90,7 +90,7 @@ | ||
90 | data: object | 90 | data: object |
91 | { | 91 | { |
92 | userId: string | number 必传, 用户唯一标识id | 92 | userId: string | number 必传, 用户唯一标识id |
93 | - regTime: number 必传,用户第一次创建角色的注册时间戳 | 93 | + regTime: number 必传,用户第一次创建角色的注册时间(时间戳,单位秒) |
94 | } | 94 | } |
95 | ``` | 95 | ``` |
96 | 96 | ||
@@ -102,7 +102,7 @@ | @@ -102,7 +102,7 @@ | ||
102 | let { user_id, user_reg_time } = data; | 102 | let { user_id, user_reg_time } = data; |
103 | PCSDK.stat.setLogind({ | 103 | PCSDK.stat.setLogind({ |
104 | userId: data.user_id, | 104 | userId: data.user_id, |
105 | - regTime: data.user_reg_time | 105 | + regTime: data.user_reg_time // 用户第一次注册时间,时间戳,单位秒 |
106 | }); | 106 | }); |
107 | }); | 107 | }); |
108 | ``` | 108 | ``` |
@@ -129,8 +129,8 @@ | @@ -129,8 +129,8 @@ | ||
129 | let { user_id, user_reg_time } = data; | 129 | let { user_id, user_reg_time } = data; |
130 | // 设置用户信息 | 130 | // 设置用户信息 |
131 | PCSDK.stat.setLogind({ | 131 | PCSDK.stat.setLogind({ |
132 | - userId: data.user_id, | ||
133 | - regTime: data.user_reg_time | 132 | + userId: data.user_id, // 用户id |
133 | + regTime: data.user_reg_time // 用户第一次注册时间,时间戳,单位秒 | ||
134 | }); | 134 | }); |
135 | // 用户活跃注册打点 | 135 | // 用户活跃注册打点 |
136 | PCSDK.stat.active(); | 136 | PCSDK.stat.active(); |
@@ -149,8 +149,8 @@ | @@ -149,8 +149,8 @@ | ||
149 | let { user_id, user_reg_time } = data; | 149 | let { user_id, user_reg_time } = data; |
150 | // 设置用户信息 | 150 | // 设置用户信息 |
151 | PCSDK.stat.setLogind({ | 151 | PCSDK.stat.setLogind({ |
152 | - userId: data.user_id, | ||
153 | - regTime: data.user_reg_time | 152 | + userId: data.user_id, // 用户id |
153 | + regTime: data.user_reg_time // 用户第一次注册时间,时间戳,单位秒 | ||
154 | }); | 154 | }); |
155 | // 进入home主页场景 | 155 | // 进入home主页场景 |
156 | SceneManager.I.switchScene(HomeScene); | 156 | SceneManager.I.switchScene(HomeScene); |
stat_ads.md
@@ -6,19 +6,19 @@ | @@ -6,19 +6,19 @@ | ||
6 | 6 | ||
7 | 交叉推广位是在游戏中展示其他游戏,用户点击某个游戏跳转进入游戏,达到共享用户的目的。 | 7 | 交叉推广位是在游戏中展示其他游戏,用户点击某个游戏跳转进入游戏,达到共享用户的目的。 |
8 | 8 | ||
9 | -噗嗤游戏提供了3种类型的交叉推广位,后台可对交叉推广位进行配置管理,对交叉推广位各项指标分析阅览。 | 9 | +噗嗤游戏提供了3种类型的交叉推广位,后台可对交叉推广位进行配置管理,对交叉推广位各项指标分析查看。 |
10 | 10 | ||
11 | **3种广告类型:交叉悬浮广告框、交叉抽屉式广告位、交叉猜你喜欢广告位** | 11 | **3种广告类型:交叉悬浮广告框、交叉抽屉式广告位、交叉猜你喜欢广告位** |
12 | 12 | ||
13 | -1. 交叉悬浮广告框,放置到首页、结算页 | 13 | +1. 交叉悬浮广告框,推荐位置:首页、结算页 |
14 | 14 | ||
15 |  | 15 |  |
16 | 16 | ||
17 | -2. 交叉抽屉式广告位,放置到首页、结算页 | 17 | +2. 交叉抽屉式广告位,推荐位置:首页、结算页 |
18 | 18 | ||
19 |  | 19 |  |
20 | 20 | ||
21 | -3. 交叉猜你喜欢广告位,推荐放置到结算页 | 21 | +3. 交叉猜你喜欢广告位,推荐位置:结算页 |
22 | 22 | ||
23 |  | 23 |  |
24 | 24 | ||
@@ -86,7 +86,7 @@ | @@ -86,7 +86,7 @@ | ||
86 | | --------------------------- | ------------------------------------------------------------ | | 86 | | --------------------------- | ------------------------------------------------------------ | |
87 | | PCSDK.stat.bannerList | 根据类型获取对应类型交叉广告列表,目前SDK支持3种类型:40(交叉悬浮广告框)、70(交叉抽屉式广告位)、50(交叉猜你喜欢广告位) | | 87 | | PCSDK.stat.bannerList | 根据类型获取对应类型交叉广告列表,目前SDK支持3种类型:40(交叉悬浮广告框)、70(交叉抽屉式广告位)、50(交叉猜你喜欢广告位) | |
88 | | PCSDK.stat.bannerNavigateTo | 交叉推广位点击跳转到对应appid的游戏,该接口封装了小游戏的跳转功能(navigateToMiniProgram) | | 88 | | PCSDK.stat.bannerNavigateTo | 交叉推广位点击跳转到对应appid的游戏,该接口封装了小游戏的跳转功能(navigateToMiniProgram) | |
89 | -| PCSDK.stat.addExposure | 交叉推广位一条或者多条广告展示,添加曝光数据,SDK在onHide时候上报数据到后台 | | 89 | +| PCSDK.stat.addExposure | 交叉推广位一条或者多条广告展示,添加曝光数据,SDK内部会在onHide时候上报数据到后台 | |
90 | 90 | ||
91 | 91 | ||
92 | 92 |
stat_event.md
stat_level.md
@@ -29,7 +29,7 @@ | @@ -29,7 +29,7 @@ | ||
29 | 1. #### **logLevelRelive** | 29 | 1. #### **logLevelRelive** |
30 | 30 | ||
31 | ```javascript | 31 | ```javascript |
32 | - PCSDK.stat.logLevelRelive(levelId: string | number , opts?: { attr: number } ): void | 32 | + PCSDK.stat.logLevelRelive(levelId: string | number , params?: { attr?: number, ext?: string } ): void |
33 | ``` | 33 | ``` |
34 | 34 | ||
35 | 定义:关卡复活成功数据上报 | 35 | 定义:关卡复活成功数据上报 |
@@ -39,9 +39,10 @@ | @@ -39,9 +39,10 @@ | ||
39 | ``` | 39 | ``` |
40 | levelId: string | number 必传,游戏关卡id | 40 | levelId: string | number 必传,游戏关卡id |
41 | 41 | ||
42 | - opts: object 选传,扩展参数,目前只支持传递一个属性: attr | 42 | + params: object 选传,关卡需要的其他参数,目前只支持传递2个属性: attr、ext |
43 | { | 43 | { |
44 | - attr: number 战斗属性(例如:关卡战斗中所使用的枪支等级) | 44 | + attr: number 选传 战斗属性(例如:关卡战斗中所使用的枪支等级) |
45 | + ext: string 选传 扩展参数:key1=val1&key2=val2的格式 | ||
45 | } | 46 | } |
46 | ``` | 47 | ``` |
47 | 48 | ||
@@ -50,7 +51,7 @@ | @@ -50,7 +51,7 @@ | ||
50 | 2. #### **logLevelHide** | 51 | 2. #### **logLevelHide** |
51 | 52 | ||
52 | ```javascript | 53 | ```javascript |
53 | - PCSDK.stat.logLevelHide(levelId: string | number , opts?: { attr: number } ): void | 54 | + PCSDK.stat.logLevelHide(levelId: string | number , params?: { attr?: number, ext?: string } ): void |
54 | ``` | 55 | ``` |
55 | 定义:监听游戏战斗界面onHide时上报关卡的数据。什么是界面onHide?[请详读微信小游戏wx.onHide](https://developers.weixin.qq.com/minigame/dev/api/base/app/life-cycle/wx.onHide.html) | 56 | 定义:监听游戏战斗界面onHide时上报关卡的数据。什么是界面onHide?[请详读微信小游戏wx.onHide](https://developers.weixin.qq.com/minigame/dev/api/base/app/life-cycle/wx.onHide.html) |
56 | 注意事项: | 57 | 注意事项: |
@@ -70,9 +71,10 @@ | @@ -70,9 +71,10 @@ | ||
70 | ``` | 71 | ``` |
71 | levelId: string | number 必传,游戏关卡id | 72 | levelId: string | number 必传,游戏关卡id |
72 | 73 | ||
73 | - opts: object 选传,扩展参数,目前只支持传递一个属性: attr | 74 | + params: object 选传,关卡需要的其他参数,目前只支持传递2个属性: attr、ext |
74 | { | 75 | { |
75 | attr: number 战斗属性(例如:关卡战斗中所使用的枪支等级) | 76 | attr: number 战斗属性(例如:关卡战斗中所使用的枪支等级) |
77 | + ext: string 选传 扩展参数:key1=val1&key2=val2的格式 | ||
76 | } | 78 | } |
77 | ``` | 79 | ``` |
78 | [点此查看完整示例](stat_level.md#sample)如何添加关卡onHide打点代码 | 80 | [点此查看完整示例](stat_level.md#sample)如何添加关卡onHide打点代码 |
@@ -80,7 +82,7 @@ | @@ -80,7 +82,7 @@ | ||
80 | 3. #### **logLevelFail** | 82 | 3. #### **logLevelFail** |
81 | 83 | ||
82 | ```javascript | 84 | ```javascript |
83 | - PCSDK.stat.logLevelFail(levelId: string | number , opts: { ctime: number, first: number, attr?: number } ): void | 85 | + PCSDK.stat.logLevelFail(levelId: string | number , params: { ctime: number, first: number, attr?: number, ext?: string } ): void |
84 | ``` | 86 | ``` |
85 | 87 | ||
86 | 定义:关卡失败数据上报 | 88 | 定义:关卡失败数据上报 |
@@ -90,11 +92,12 @@ | @@ -90,11 +92,12 @@ | ||
90 | ``` | 92 | ``` |
91 | levelId: string | number 必传,游戏关卡id | 93 | levelId: string | number 必传,游戏关卡id |
92 | 94 | ||
93 | - opts: object 必传,扩展参数,目前只支持传递一个属性: attr | 95 | + params: object 必传,关卡需要的其他参数 |
94 | { | 96 | { |
95 | ctime: number 必传 关卡耗时 = 当前时间-关卡进入时间,单位秒 | 97 | ctime: number 必传 关卡耗时 = 当前时间-关卡进入时间,单位秒 |
96 | first: number 必传 是否第一次体验关卡,1是,0否 | 98 | first: number 必传 是否第一次体验关卡,1是,0否 |
97 | attr: number 选传 战斗属性(例如:关卡战斗中所使用的枪支等级) | 99 | attr: number 选传 战斗属性(例如:关卡战斗中所使用的枪支等级) |
100 | + ext: string 选传 扩展参数:key1=val1&key2=val2的格式 | ||
98 | } | 101 | } |
99 | ``` | 102 | ``` |
100 | [点此查看完整示例](stat_level.md#sample)如何添加关卡失败打点代码 | 103 | [点此查看完整示例](stat_level.md#sample)如何添加关卡失败打点代码 |
@@ -102,7 +105,7 @@ | @@ -102,7 +105,7 @@ | ||
102 | 4. #### **logLevelWin** | 105 | 4. #### **logLevelWin** |
103 | 106 | ||
104 | ```javascript | 107 | ```javascript |
105 | - PCSDK.stat.logLevelWin(levelId: string | number , opts: { ctime: number, first: number, attr?: number } ): void | 108 | + PCSDK.stat.logLevelWin(levelId: string | number , params: { ctime: number, first: number, attr?: number, ext?: number } ): void |
106 | ``` | 109 | ``` |
107 | 110 | ||
108 | 定义:关卡成功通关数据上报 | 111 | 定义:关卡成功通关数据上报 |
@@ -112,11 +115,12 @@ | @@ -112,11 +115,12 @@ | ||
112 | ``` | 115 | ``` |
113 | levelId: string | number 必传,游戏关卡id | 116 | levelId: string | number 必传,游戏关卡id |
114 | 117 | ||
115 | - opts: object 必传,扩展参数 | 118 | + params: object 必传,关卡需要的其他参数 |
116 | { | 119 | { |
117 | ctime: number 必传 关卡耗时 = 当前时间-关卡进入时间,单位秒 | 120 | ctime: number 必传 关卡耗时 = 当前时间-关卡进入时间,单位秒 |
118 | first: number 必传 是否第一次体验关卡,1是,0否 | 121 | first: number 必传 是否第一次体验关卡,1是,0否 |
119 | attr: number 选传 战斗属性(例如:关卡战斗中所使用的枪支等级) | 122 | attr: number 选传 战斗属性(例如:关卡战斗中所使用的枪支等级) |
123 | + ext: string 选传 扩展参数:key1=val1&key2=val2的格式 | ||
120 | } | 124 | } |
121 | ``` | 125 | ``` |
122 | <div id="sample"></div> 完整示例,以上四个接口使用场景: | 126 | <div id="sample"></div> 完整示例,以上四个接口使用场景: |