Commit f7c3ca7dbca8f1f8b0c44ad8166ab792949fff2f
1 parent
4f63bbe3
Exists in
master
完结分享模块
Showing
12 changed files
with
490 additions
and
129 deletions
Show diff stats
SUMMARY.md
46.2 KB
97 KB
99.3 KB
96.5 KB
online.md
| ... | ... | @@ -5,7 +5,7 @@ |
| 5 | 5 | |
| 6 | 6 | #### **简介** |
| 7 | 7 | |
| 8 | -在线配置参数是噗嗤游戏开放的一个新模块功能,可以让开发者在后台配置参数中动态修改游戏中的参数值。例如:动态修改游戏的数值,小到一个简单开关0/1切换、一个简单的数字配置;打到一个游戏json配置等等。 | |
| 8 | +在线配置参数是噗嗤游戏开放的一个新模块功能,可以让开发者在后台【配置参数】栏中动态修改游戏使用的参数值。例如:动态修改游戏的数值,小到一个简单开关0/1切换、一个简单的数字配置;大到一个游戏json配置等。 | |
| 9 | 9 | |
| 10 | 10 | 该模块借鉴了[友盟在线配置参数](http://www.it610.com/article/4896789.htm)的设计思路。 |
| 11 | 11 | |
| ... | ... | @@ -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 | 45 | > [config.js中配置IsOnlineAutoUse](install.md#config_env)为false:有两种理解方式:1)不接入使用在线配置参数模块;2)接入使用在线配置参数模块,开发者自己手动调用updateOnlineConfig api处理逻辑。 |
| 46 | 46 | > | ... | ... |
share.md
| ... | ... | @@ -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 | 39 | |
| 21 | 40 |  |
| 22 | 41 | |
| 23 | -接入分享视频模块后,后台已经对分享和视频数据分别进行整理统计了,游戏接入方可实时阅览分享/视频的各项数据: | |
| 42 | +接入分享视频模块后,后台已经对分享和视频数据分别进行整理统计了,游戏接入方可实时查看分享/视频的各项数据: | |
| 24 | 43 | |
| 25 | 44 | 查看分享分析,登录后台->头部tab切换到【游戏数据】->【产品分析】->【分享分析】可阅览游戏分享数据的各项统计: |
| 26 | 45 | |
| ... | ... | @@ -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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 26 | | **名称** | **功能说明** | |
| 27 | 27 | | ------------------------ | ------------------------------------------------------------ | |
| 28 | 28 | | PCSDK.stat.loadingFinish | 加载游戏资源完成时打点,不是微信代码包白屏加载完成,游戏加载完成游戏ui界面图、json资源 | |
| 29 | -| PCSDK.stat.setLogind | 设置SDK必须要使用的用户id、第一次创建角色的注册时间,游戏接入方登录游戏服务器后调用 | | |
| 29 | +| PCSDK.stat.setLogind | 设置SDK必须要使用的用户id、第一次创建角色的注册时间(单位秒),游戏接入方登录游戏服务器后调用 | | |
| 30 | 30 | | PCSDK.stat.active | 用户活跃/新增注册上报,切记在setLogind设置需要的信息过后使用(设置setLogind后此api不限于使用位置),不然会导致新增注册数据统计异常 | |
| 31 | 31 | |
| 32 | 32 | |
| ... | ... | @@ -82,7 +82,7 @@ |
| 82 | 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 | 90 | data: object |
| 91 | 91 | { |
| 92 | 92 | userId: string | number 必传, 用户唯一标识id |
| 93 | - regTime: number 必传,用户第一次创建角色的注册时间戳 | |
| 93 | + regTime: number 必传,用户第一次创建角色的注册时间(时间戳,单位秒) | |
| 94 | 94 | } |
| 95 | 95 | ``` |
| 96 | 96 | |
| ... | ... | @@ -102,7 +102,7 @@ |
| 102 | 102 | let { user_id, user_reg_time } = data; |
| 103 | 103 | PCSDK.stat.setLogind({ |
| 104 | 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 | 129 | let { user_id, user_reg_time } = data; |
| 130 | 130 | // 设置用户信息 |
| 131 | 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 | 136 | PCSDK.stat.active(); |
| ... | ... | @@ -149,8 +149,8 @@ |
| 149 | 149 | let { user_id, user_reg_time } = data; |
| 150 | 150 | // 设置用户信息 |
| 151 | 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 | 155 | // 进入home主页场景 |
| 156 | 156 | SceneManager.I.switchScene(HomeScene); | ... | ... |
stat_ads.md
| ... | ... | @@ -6,19 +6,19 @@ |
| 6 | 6 | |
| 7 | 7 | 交叉推广位是在游戏中展示其他游戏,用户点击某个游戏跳转进入游戏,达到共享用户的目的。 |
| 8 | 8 | |
| 9 | -噗嗤游戏提供了3种类型的交叉推广位,后台可对交叉推广位进行配置管理,对交叉推广位各项指标分析阅览。 | |
| 9 | +噗嗤游戏提供了3种类型的交叉推广位,后台可对交叉推广位进行配置管理,对交叉推广位各项指标分析查看。 | |
| 10 | 10 | |
| 11 | 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 | 86 | | --------------------------- | ------------------------------------------------------------ | |
| 87 | 87 | | PCSDK.stat.bannerList | 根据类型获取对应类型交叉广告列表,目前SDK支持3种类型:40(交叉悬浮广告框)、70(交叉抽屉式广告位)、50(交叉猜你喜欢广告位) | |
| 88 | 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 | 29 | 1. #### **logLevelRelive** |
| 30 | 30 | |
| 31 | 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 | 39 | ``` |
| 40 | 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 | 51 | 2. #### **logLevelHide** |
| 51 | 52 | |
| 52 | 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 | 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 | 71 | ``` |
| 71 | 72 | levelId: string | number 必传,游戏关卡id |
| 72 | 73 | |
| 73 | - opts: object 选传,扩展参数,目前只支持传递一个属性: attr | |
| 74 | + params: object 选传,关卡需要的其他参数,目前只支持传递2个属性: attr、ext | |
| 74 | 75 | { |
| 75 | 76 | attr: number 战斗属性(例如:关卡战斗中所使用的枪支等级) |
| 77 | + ext: string 选传 扩展参数:key1=val1&key2=val2的格式 | |
| 76 | 78 | } |
| 77 | 79 | ``` |
| 78 | 80 | [点此查看完整示例](stat_level.md#sample)如何添加关卡onHide打点代码 |
| ... | ... | @@ -80,7 +82,7 @@ |
| 80 | 82 | 3. #### **logLevelFail** |
| 81 | 83 | |
| 82 | 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 | 92 | ``` |
| 91 | 93 | levelId: string | number 必传,游戏关卡id |
| 92 | 94 | |
| 93 | - opts: object 必传,扩展参数,目前只支持传递一个属性: attr | |
| 95 | + params: object 必传,关卡需要的其他参数 | |
| 94 | 96 | { |
| 95 | 97 | ctime: number 必传 关卡耗时 = 当前时间-关卡进入时间,单位秒 |
| 96 | 98 | first: number 必传 是否第一次体验关卡,1是,0否 |
| 97 | 99 | attr: number 选传 战斗属性(例如:关卡战斗中所使用的枪支等级) |
| 100 | + ext: string 选传 扩展参数:key1=val1&key2=val2的格式 | |
| 98 | 101 | } |
| 99 | 102 | ``` |
| 100 | 103 | [点此查看完整示例](stat_level.md#sample)如何添加关卡失败打点代码 |
| ... | ... | @@ -102,7 +105,7 @@ |
| 102 | 105 | 4. #### **logLevelWin** |
| 103 | 106 | |
| 104 | 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 | 115 | ``` |
| 113 | 116 | levelId: string | number 必传,游戏关卡id |
| 114 | 117 | |
| 115 | - opts: object 必传,扩展参数 | |
| 118 | + params: object 必传,关卡需要的其他参数 | |
| 116 | 119 | { |
| 117 | 120 | ctime: number 必传 关卡耗时 = 当前时间-关卡进入时间,单位秒 |
| 118 | 121 | first: number 必传 是否第一次体验关卡,1是,0否 |
| 119 | 122 | attr: number 选传 战斗属性(例如:关卡战斗中所使用的枪支等级) |
| 123 | + ext: string 选传 扩展参数:key1=val1&key2=val2的格式 | |
| 120 | 124 | } |
| 121 | 125 | ``` |
| 122 | 126 | <div id="sample"></div> 完整示例,以上四个接口使用场景: | ... | ... |