Commit fafd085a450666461a6fe48140c13a4dd926d30c

Authored by 小川 费
1 parent 2a7226b8
Exists in master

1

inner/download.md
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 1. config.js配置ShareData新增share_wxad_id参数:视频广告uid,配置此参数,推送看视频,不配置或者配置的uid无效则推送分享。 38 1. config.js配置ShareData新增share_wxad_id参数:视频广告uid,配置此参数,推送看视频,不配置或者配置的uid无效则推送分享。
39 2. stat模块的addLogLevel拆分为多个接口:logLevelRelive、logLevelWin、logLevelFail、logLevelHide,addLogLevel继续保留。 39 2. stat模块的addLogLevel拆分为多个接口:logLevelRelive、logLevelWin、logLevelFail、logLevelHide,addLogLevel继续保留。
40 3. data模块新增了三个控制交叉推广位动态控制显示/隐藏的api:IsCross、IsDrawer、IsGuessLike。 40 3. data模块新增了三个控制交叉推广位动态控制显示/隐藏的api:IsCross、IsDrawer、IsGuessLike。
41 -4. share模块重新命名为:shareVideo,shareDispatch修改为dispatch、shareWithType修改为dispatchType、getShareType修改为getShareVideoType,原来的share模块还是能用 41 +4. share模块重新命名为:shareVideo,原来的share模块还是能用;shareDispatch修改为dispatch、shareWithType修改为dispatchType、getShareType修改为getType
42 42
43 43
44 ## [v1.0.0.0 下载](https://dep.miso-lab.com/sdkword/versions/sdk-out-v1.0.0.0.zip) 44 ## [v1.0.0.0 下载](https://dep.miso-lab.com/sdkword/versions/sdk-out-v1.0.0.0.zip)
inner/modules.md
@@ -84,4 +84,4 @@ @@ -84,4 +84,4 @@
84 84
85 dispatch:分享视频分发入口,传入功能点英文命名的分享/视频key 85 dispatch:分享视频分发入口,传入功能点英文命名的分享/视频key
86 86
87 - getShareVideoType:根据功能点在后台配置的分享/视频key,得到此功能点分享开关 87 + getType:根据功能点在后台配置的分享/视频key,得到此功能点分享开关
inner/share.md
1 -  
2 # 分享视频模块 1 # 分享视频模块
3 2
4 ------ 3 ------
5 4
6 #### **简介** 5 #### **简介**
7 -小游戏生态中,普遍把平台提供的分享/视频接口更多用于某个奖励领取、获取n倍奖励、游戏死亡复活、转盘额外次数获得等等一种有效途径(分享:拉取新用户,视频:赚钱广告费);噗嗤游戏在分享or视频推送不断的探索迭代中,总结了一套分享/视频积分策略,集成在SDK中开放给开发者,开发者只需对游戏中分享视频功能点命名一个英文名称key(分享视频key),这个key关联分享文案、分享图、分享开关(推送类型)、视频uid等等在后台配置好,使用SDK提供的一个dispatch api传入英文名称key即可完成接入工作。 6 +小游戏生态中,普遍把平台提供的分享/视频接口更多用于某个奖励领取、获取n倍奖励、游戏死亡复活、转盘额外次数获得等等一种有效途径(分享:拉取新用户,视频:赚钱广告费);噗嗤游戏在分享/视频推送不断的迭代中,总结了一套分享/视频积分策略,集成在SDK中开放给开发者,开发者只需对游戏中分享视频功能点命名一个英文名称key(分享视频key),在后台配置这个key关联的分享文案、分享图、分享开关(推送类型)、视频uid等等信息,使用SDK提供的一个dispatch api传入分享视频key即可完成接入工作。
8 7
9 -- 分享/视频配置可以让开发者在后台中动态修改相关功能点的分享/视频配置内容。  
10 8
11 -- 新增某个功能的分享点配置、在线修改相关功能点的分享图或文案、在线切换某个功能点按钮的分享/视频推送类型 9 +- 后台的【分享/视频配置】功能可以让开发者动态修改相关功能点的分享/视频配置的分享文案、分享图、分享开关(推送类型)、视频uid等等信息
12 10
13 -- 调用SDK的dispatch api,dispatch会根据后台配置的分享开关(推送类型)自动进行分发:推送分享还是视频全权交由SDK去处理,开发者只需要传入成功/失败回调函数,成功回调函数处理发放领取奖励、n倍奖励、成功复活等操作,失败回调函数处理参数传递的msg信息。 11 +- 调用SDK的dispatch api,dispatch会根据后台配置的分享开关(推送类型)自动进行分发:推送分享or视频全权交由SDK去处理,开发者只需要传入成功/失败回调函数,成功回调函数处理成功后的逻辑,失败回调函数处理参数传递的错误msg信息。
14 12
15 #### **疑惑解答** 13 #### **疑惑解答**
16 1. 为什么要引入这个模块? 14 1. 为什么要引入这个模块?
17 15
18 - > 游戏中很多n倍奖励、复活、额外奖励等功能点通常需要分享或者视频才能额外获得,游戏上线后,运营很有可能会对某些功能点有额外的需求修改:a功能点获取由分享改成视频方式获取、b功能点由视频改成分享方式获取、c功能点需要在前面n次看视频获得后全是分享获得、为某某功能的分享图想换一个、拉取视频不成功自动切换分享等等;为了应对这些不同情形,我们把分享和视频点包装成一个模块,a功能点也不在局限于只是简单的分享、b功能只是视频,而是通过后台分享开关去灵活切换。所有功能点入口调用都是使用dispatch,每个功能点都是转化为一个分享视频key在后台管理 16 + > 游戏中很多n倍奖励、复活、额外奖励等功能点通常需要分享或者视频才能额外获得。游戏上线后,运营可能会对这些功能点有修改需求:a功能点领取奖励由分享改成视频方式领取、b功能点由视频改成分享方式获取、c功能点需要在前面n次看视频领取过后,后面全是分享获得、某个分享点的分享图片和文案修改等等;为了应对这些不同情形,我们把分享和视频点包装成一个模块,每个功能点转成key在后台进行管理,功能点也不在局限于只是简单的推送分享,单一的推送视频,而是可以根据运营情况进行灵活切换
19 17
20 2. 什么是分享视频key? 18 2. 什么是分享视频key?
21 19
22 - > 分享视频key是一个功能点的英文名称,这个key配置在后台中,关联分享文案、分享图、分享开关(推送类型)、视频uid等等信息。某个功能点(不论是分享还是视频方式)调用dispatch传入这个key,SDK会读取这个key关联的信息,根据分享开关(推送类型)来推送分享(需要分享文案、分享图)还是推送视频(需要视频uid)。 20 + > 分享视频key是一个功能点的英文名称,这个key是开发者根据功能点命名的,开发者自己或者策划把这个key关联的分享文案、分享图、分享开关(推送类型)、视频uid等等信息配置在后台;完成配置后,使用PCSDK.shareVideo.dispatch传入这个key,PCSDK会读取这个key关联的信息,根据分享开关(推送类型)来推送分享(读取配置的分享文案、分享图)还是推送视频(读取配置的视频uid)。
23 21
24 3. 什么是分享视频分发? 22 3. 什么是分享视频分发?
25 23
26 - > 调用dispatch api传入分享视频key,SDK会查找这个key在后台配置的数据,SDK读取数据中分享开关(推送类型)的字段信息,通过这个开关类型来判断推给用户是分享还是视频,这个根据类型来推送的操作就是分发操作。 24 + > 使用PCSDK.shareVideo.dispatch传入分享视频key,SDK会查找这个key在后台配置的数据信息,SDK读取数据中分享开关(推送类型),通过推送类型来计算推给用户是分享还是视频,这个根据推送类型来推送的操作就是分发操作。
27 25
28 4. 游戏中之前是玩家分享n次后变成看视频或者是看视频n次后全是分享,dispatch能满足吗? 26 4. 游戏中之前是玩家分享n次后变成看视频或者是看视频n次后全是分享,dispatch能满足吗?
29 27
30 - > 上面的问题dispatch也同样支持,还是同样的调用方式,不需要做其他额外处理,dispatch是怎么做到的了:分享开关(推送类型)有一个分享积分选择项,这个选项就是通过积分策略实现了上面问题。 28 + > 上面的问题dispatch也同样支持,还是一样的调用方式,不需要额外的传递参数,只需在后台修改分享开关(推送类型)
31 > 29 >
32 30
33 31
34 #### **后台使用** 32 #### **后台使用**
35 33
36 -配置分享视频配置,登录后台->头部tab切换到【游戏数据】->【配置相关】->【分享/视频配置】可新增、编辑修改分享/视频内容: 34 +配置分享视频,登录后台->头部tab切换到【游戏数据】->【配置相关】->【分享/视频配置】可新增、编辑修改分享/视频内容:
37 35
38 ![sdk文件目录结构](https://dep.miso-lab.com/sdkword/sdk_023.png "🔍点击查看大图") 36 ![sdk文件目录结构](https://dep.miso-lab.com/sdkword/sdk_023.png "🔍点击查看大图")
39 37
@@ -55,7 +53,7 @@ @@ -55,7 +53,7 @@
55 53
56 - 接入此模块前,请[**前往sdk/config.js文件中配置【IsUseShareModule: true 】开启分享视频模块功能**](install.md#config_env),此参数配置为true,才能正常使用此模块的功能,SDK启动时会自动拉取后台配置所有功能点的分享/视频配置列表。 54 - 接入此模块前,请[**前往sdk/config.js文件中配置【IsUseShareModule: true 】开启分享视频模块功能**](install.md#config_env),此参数配置为true,才能正常使用此模块的功能,SDK启动时会自动拉取后台配置所有功能点的分享/视频配置列表。
57 55
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,所有的功能点不会分享完成、拉起看完视频后发放奖励,而是直接发放奖励,这样就能避免审核时,如果是推送分享拉起分享,被微信认为是诱导分享,被拒的可能性。 56 +- <font color="#FF0000">微信小游戏开发者接入此模块,游戏有些分享点,提审时避免触犯微信平台的[滥用分享行为](https://developers.weixin.qq.com/minigame/product/#_5-1-滥用分享行为),在后台【配置参数】中配置了一个SDK内部使用的[配置参数](online.md)share_unlock,进行分享开关切换:1(开启)0(关闭),提审时设置为0,审核通过后设为1。share_unlock设置为0,所有使用PCSDK.shareVideo.dispatch( key, { success: Function, fail: Function , context:any })的功能点不会触发调起平台的分享or拉取平台视频,而是会直接触发success回调函数。这样就能避免审核时,如果推送分享拉起分享发放奖励,被微信认为是诱导分享,被拒的可能性。
59 57
60 - sdk/config.js的配置参数ShareRightKey,表示右上角分享的分享视频key,请配置到后台【分享/视频配置】中。如果ShareRightKey配置不为空,SDK会自动调用微信的右上角分享接口(wx.onShareAppMessage),实现右上角分享功能,注意的是开发者在游戏中已经有注册wx.onShareAppMessage需要删除掉,不然游戏中onShareAppMessage的注册事件会把SDK中的注册事件处理函数覆盖掉,导致还是使用的是开发者注册的右上角分享功能。 58 - sdk/config.js的配置参数ShareRightKey,表示右上角分享的分享视频key,请配置到后台【分享/视频配置】中。如果ShareRightKey配置不为空,SDK会自动调用微信的右上角分享接口(wx.onShareAppMessage),实现右上角分享功能,注意的是开发者在游戏中已经有注册wx.onShareAppMessage需要删除掉,不然游戏中onShareAppMessage的注册事件会把SDK中的注册事件处理函数覆盖掉,导致还是使用的是开发者注册的右上角分享功能。
61 59
@@ -73,7 +71,7 @@ @@ -73,7 +71,7 @@
73 | ------------------------------- | ------------------------------------------------------------ | 71 | ------------------------------- | ------------------------------------------------------------ |
74 | PCSDK.shareVideo.share | 普通分享,不需要处理回调的场景,例如分享到群、分享到好友,这些普通的分享,而不用处理成功/失败回调函数。 | 72 | PCSDK.shareVideo.share | 普通分享,不需要处理回调的场景,例如分享到群、分享到好友,这些普通的分享,而不用处理成功/失败回调函数。 |
75 | PCSDK.shareVideo.dispatch | 分享视频分发入口,传入功能点英文命名的分享/视频key | 73 | PCSDK.shareVideo.dispatch | 分享视频分发入口,传入功能点英文命名的分享/视频key |
76 -| PCSDK.shareVideo.getShareVideoType | 根据功能点在后台配置的分享/视频key,得到此功能点分享开关(推送类型)SDK计算得到最终推送类型:-1(无视频无分享)、0(分享)、1(异步分享)、5(分享积分)、2(视频)、3(无视频则分享)、4(视频和分享)(控制分享和视频两个按钮的显示) | 74 +| PCSDK.shareVideo.getType | 根据功能点在后台配置的分享/视频key,得到此功能点分享开关(推送类型)SDK计算得到最终推送类型:-1(无视频无分享)、0(分享)、1(异步分享)、5(分享积分)、2(视频)、3(无视频则分享)、4(视频和分享)(控制分享和视频两个按钮的显示) |
77 75
78 76
79 77
@@ -240,10 +238,10 @@ @@ -240,10 +238,10 @@
240 } 238 }
241 ``` 239 ```
242 240
243 -3. ##### **getShareVideoType** 241 +3. ##### **getType**
244 242
245 ```javascript 243 ```javascript
246 - PCSDK.shareVideo.getShareVideoType( key: string ): number 244 + PCSDK.shareVideo.getType( key: string ): number
247 ``` 245 ```
248 246
249 定义:根据分享视频key获取此次shareVideo模块推送的分享视频类型值:-1(无视频无分享:提审时返回)、0(推送同步分享)、1(推送异步分享)、2(推送看视频)、3(无视频则分享)、4(视频和分享)、5(分享积分);此api用于通过得到的类型值处理页面的ui状态(微信和QQ平台对按钮的icon有强制限制):显示视频icon、显示分享icon、既没有分享icon,也没有视频icon。 247 定义:根据分享视频key获取此次shareVideo模块推送的分享视频类型值:-1(无视频无分享:提审时返回)、0(推送同步分享)、1(推送异步分享)、2(推送看视频)、3(无视频则分享)、4(视频和分享)、5(分享积分);此api用于通过得到的类型值处理页面的ui状态(微信和QQ平台对按钮的icon有强制限制):显示视频icon、显示分享icon、既没有分享icon,也没有视频icon。
@@ -276,81 +274,81 @@ @@ -276,81 +274,81 @@
276 ```javascript 274 ```javascript
277 // DiamondDoublePopwin.ts文件 275 // DiamondDoublePopwin.ts文件
278 export default class DiamondDoublePopwin extends BaseView{ 276 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 - } 277 + protected addEvent() {
  278 + super.addEvent();
  279 + // 免费领取双倍(应对微信审核,审核分享不能开放时候使用)
  280 + this.btnFree.on(Laya.Event.CLICK, this, this.onReward);
  281 + // 分享双倍
  282 + this.btnShare.on(Laya.Event.CLICK, this, this.onReward);
  283 + // 视频双倍
  284 + this.btnVideo.on(Laya.Event.CLICK, this, this.onReward);
  285 + }
288 286
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); 287 + protected removeEvent() {
  288 + super.removeEvent();
  289 + this.btnFree.off(Laya.Event.CLICK, this, this.onReward);
  290 + this.btnShare.off(Laya.Event.CLICK, this, this.onReward);
  291 + this.btnVideo.off(Laya.Event.CLICK, this, this.onReward);
294 } 292 }
295 293
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 - } 294 + // 每次打开此popwin执行onOpen
  295 + protected onOpen(){
  296 + super.onOpen();
  297 + this.iniitRewardUI();
  298 + }
344 299
345 - // 分享/视频失败后回调处理函数:弹出提示  
346 - private handleError(from: ShareVideoFrom, error: any | null){  
347 - // 返回错误,处理错误msg信息,自定义处理  
348 - if( error ){  
349 - wx.showToast({  
350 - title: error.msg  
351 - });  
352 - }  
353 - } 300 + // 初始化/更新获得奖励按钮ui
  301 + private initRewardUI() {
  302 + let shareVideoType: ShareVideoType = PCSDK.shareVideo.getType(ShareVideoKeys.DiamondDouble.toString());
  303 + switch (shareVideoType) {
  304 + case ShareVideoType.Share: // 同步分享
  305 + case ShareVideoType.ShareAysnc: // 异步分享
  306 + case ShareVideoType.ShareIntegral: // 分享积分
  307 + this.btnFree.visible = false;
  308 + this.btnShare.visible = true;
  309 + this.btnVideo.visible = false;
  310 + break;
  311 +
  312 + case ShareVideoType.Video: // 推送视频
  313 + case ShareVideoType.VideoToShare: // 无视频则分享
  314 + // 视频ui状态
  315 + this.btnFree.visible = false;
  316 + this.btnShare.visible = false;
  317 + this.btnVideo.visible = true;
  318 + break;
  319 +
  320 + default: // 无视频和无分享
  321 + // 既不显示分享ui又不显示视频ui,直接领奖ui状态
  322 + this.btnFree.visible = true;
  323 + this.btnShare.visible = false;
  324 + this.btnVideo.visible = false;
  325 + break;
  326 + }
  327 + }
  328 +
  329 + // 领取奖励操作
  330 + private onReward(){
  331 + PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), {
  332 + success: this.handleReward,
  333 + fail: this.handleError,
  334 + context: this
  335 + } );
  336 + }
  337 +
  338 + // 分享/视频成功后回调处理函数:发奖励
  339 + private handleReward(from: ShareVideoFrom, ret: any | null){
  340 + // 分享成功、视频成功、无视频无分享
  341 + }
  342 +
  343 + // 分享/视频失败后回调处理函数:弹出提示
  344 + private handleError(from: ShareVideoFrom, error: any | null){
  345 + // 返回错误,处理错误msg信息,自定义处理
  346 + if( error ){
  347 + wx.showToast({
  348 + title: error.msg
  349 + });
  350 + }
  351 + }
354 } 352 }
355 353
356 // Enums.ts文件 354 // Enums.ts文件
@@ -383,7 +381,7 @@ @@ -383,7 +381,7 @@
383 381
384 ``` 382 ```
385 <div id="detail"></div> 383 <div id="detail"></div>
386 - 下面演示dispatch和getShareVideoType两个api的完整使用,Laya引擎开发: 384 + 下面演示dispatch和getType两个api的完整使用,Laya引擎开发:
387 385
388 页面功能点按钮做三个状态: 386 页面功能点按钮做三个状态:
389 387
@@ -401,104 +399,104 @@ @@ -401,104 +399,104 @@
401 399
402 ![sdk文件目录结构](https://dep.miso-lab.com/sdkword/sdk_027_4.png "🔍点击查看大图") 400 ![sdk文件目录结构](https://dep.miso-lab.com/sdkword/sdk_027_4.png "🔍点击查看大图")
403 401
404 - 例如,一个领取钻石双倍,页面的按钮ui通过下面的方式进行切换 402 + 例如:一个领取钻石双倍功能
405 403
406 - 1、页面做三个按钮:视频icon按钮、分享icon按钮、直接领取按钮 404 + 1、页面做三个按钮:看视频领取双倍按钮(视频图标)、分享领取双倍按钮(分享图标)、直接领取按钮(没有任何图标)
407 405
408 2、进入页面根据配置的key获取类型,显示对应类型ui:调用下面的initRewardUI(可随意命名) 406 2、进入页面根据配置的key获取类型,显示对应类型ui:调用下面的initRewardUI(可随意命名)
409 407
410 - 3、<font color="#FF0000">分享或者视频后,SDK会发送一个tactic.update的消息过来,使用PCSDK.event.add注册监听,PCSDK.event.remove移除监听(PCSDK.event详细了解请查看[事件模块](event.md)),监听事件处理下一次推送显示ui状态:执行一下initRewardUI。</font> 408 + 3、<font color="#FF0000">分享或者视频后,SDK会发提供PCSDK.event模块发送一个'tactic.update'的消息,使用PCSDK.event.add注册消息监听,PCSDK.event.remove移除消息监听(PCSDK.event详细了解请查看[事件模块](event.md)),监听函数处理下一次推送显示ui状态:执行一下initRewardUI。</font>
411 409
412 4、给三个按钮都注册事件:onReward 410 4、给三个按钮都注册事件:onReward
413 ```javascript 411 ```javascript
414 // DiamondDoublePopwin.ts文件 412 // DiamondDoublePopwin.ts文件
415 export default class DiamondDoublePopwin extends BaseView { 413 export default class DiamondDoublePopwin extends BaseView {
416 - protected addEvent() {  
417 - super.addEvent();  
418 - // 免费领取双倍(应对微信审核,审核分享不能开放时候使用) 414 + protected addEvent() {
  415 + super.addEvent();
  416 + // 免费领取双倍(应对微信审核,审核分享不能开放时候使用)
419 this.btnFree.on(Laya.Event.CLICK, this, this.onReward); 417 this.btnFree.on(Laya.Event.CLICK, this, this.onReward);
420 // 分享双倍 418 // 分享双倍
421 this.btnShare.on(Laya.Event.CLICK, this, this.onReward); 419 this.btnShare.on(Laya.Event.CLICK, this, this.onReward);
422 // 视频双倍 420 // 视频双倍
423 this.btnVideo.on(Laya.Event.CLICK, this, this.onReward); 421 this.btnVideo.on(Laya.Event.CLICK, this, this.onReward);
424 - // PCSDK.event.add注册监听SDK发送的消息:tactic.update,更新获得奖励按钮ui  
425 - PCSDK.event.add('tactic.update', this.initRewardUI, this);  
426 - } 422 + // PCSDK.event.add注册监听SDK发送的消息:tactic.update,更新获得奖励按钮ui
  423 + PCSDK.event.add('tactic.update', this.initRewardUI, this);
  424 + }
427 425
428 - protected removeEvent() { 426 + protected removeEvent() {
429 super.removeEvent(); 427 super.removeEvent();
430 - this.btnFree.off(Laya.Event.CLICK, this, this.onReward);  
431 - this.btnShare.off(Laya.Event.CLICK, this, this.onReward);  
432 - this.btnVideo.off(Laya.Event.CLICK, this, this.onReward);  
433 - // PCSDK.event.remove移除监听SDK发送的消息:tactic.update  
434 - PCSDK.event.remove('tactic.update', this.initRewardUI, this);  
435 - } 428 + this.btnFree.off(Laya.Event.CLICK, this, this.onReward);
  429 + this.btnShare.off(Laya.Event.CLICK, this, this.onReward);
  430 + this.btnVideo.off(Laya.Event.CLICK, this, this.onReward);
  431 + // PCSDK.event.remove移除监听SDK发送的消息:tactic.update
  432 + PCSDK.event.remove('tactic.update', this.initRewardUI, this);
  433 + }
436 434
437 // 每次打开此popwin执行onOpen 435 // 每次打开此popwin执行onOpen
438 - protected onOpen(){  
439 - super.onOpen();  
440 - // 界面打开  
441 - this.initRewardUI();  
442 - }  
443 -  
444 - // 领取奖励操作  
445 - private onReward(){  
446 - PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), {  
447 - success: this.handleReward,  
448 - context: this  
449 - } );  
450 - } 436 + protected onOpen(){
  437 + super.onOpen();
  438 + // 界面打开
  439 + this.initRewardUI();
  440 + }
  441 +
  442 + // 领取奖励操作
  443 + private onReward(){
  444 + PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), {
  445 + success: this.handleReward,
  446 + context: this
  447 + } );
  448 + }
451 449
452 - // 分享/视频成功后回调处理函数:发奖励  
453 - private handleReward(from: ShareVideoFrom, ret: any | null){  
454 - // 分享成功、视频成功、无视频无分享  
455 - } 450 + // 分享/视频成功后回调处理函数:发奖励
  451 + private handleReward(from: ShareVideoFrom, ret: any | null){
  452 + // 分享成功、视频成功、无视频无分享
  453 + }
456 454
457 - // 分享/视频失败后回调处理函数:弹出提示  
458 - private handleError(from: ShareVideoFrom, error: any | null){ 455 + // 分享/视频失败后回调处理函数:弹出提示
  456 + private handleError(from: ShareVideoFrom, error: any | null){
459 // 返回错误,处理错误msg信息,自定义处理 457 // 返回错误,处理错误msg信息,自定义处理
460 - if( error ){  
461 - wx.showToast({ 458 + if( error ){
  459 + wx.showToast({
462 title: error.msg 460 title: error.msg
463 - });  
464 - }  
465 - } 461 + });
  462 + }
  463 + }
466 464
467 // 初始化/更新获得奖励按钮ui 465 // 初始化/更新获得奖励按钮ui
468 - private initRewardUI() {  
469 - let shareVideoType: ShareType = PCSDK.shareVideo.getShareVideoType(ShareVideoKeys.DiamondDouble.toString());  
470 - switch (shareVideoType) {  
471 - case ShareVideoType.Share: // 同步分享  
472 - case ShareVideoType.ShareAysnc: // 异步分享  
473 - case ShareVideoType.ShareIntegral: // 分享积分  
474 - // 分享ui状态  
475 - this.stat_share.play(0,false);  
476 - // 等同于 466 + private initRewardUI() {
  467 + let shareVideoType: ShareType = PCSDK.shareVideo.getType(ShareVideoKeys.DiamondDouble.toString());
  468 + switch (shareVideoType) {
  469 + case ShareVideoType.Share: // 同步分享
  470 + case ShareVideoType.ShareAysnc: // 异步分享
  471 + case ShareVideoType.ShareIntegral: // 分享积分
  472 + // 分享ui状态
  473 + this.stat_share.play(0,false);
  474 + // 等同于
477 // this.btnFree.visible = false; 475 // this.btnFree.visible = false;
478 // this.btnShare.visible = true; 476 // this.btnShare.visible = true;
479 // this.btnVideo.visible = false; 477 // this.btnVideo.visible = false;
480 - break;  
481 -  
482 - case ShareVideoType.Video: // 视频  
483 - case ShareVideoType.VideoToShare: // 无视频则分享  
484 - // 视频ui状态  
485 - this.stat_video.play(0,false);  
486 - // 等同于  
487 - // this.btnFree.visible = false;  
488 - // this.btnShare.visible = false;  
489 - // this.btnVideo.visible = true;  
490 - break;  
491 -  
492 - default: // 无视频和无分享  
493 - // 既不显示分享ui又不显示视频ui,直接领奖ui状态  
494 - this.stat_free.play(0,false);  
495 - // 等同于 478 + break;
  479 +
  480 + case ShareVideoType.Video: // 视频
  481 + case ShareVideoType.VideoToShare: // 无视频则分享
  482 + // 视频ui状态
  483 + this.stat_video.play(0,false);
  484 + // 等同于
  485 + // this.btnFree.visible = false;
  486 + // this.btnShare.visible = false;
  487 + // this.btnVideo.visible = true;
  488 + break;
  489 +
  490 + default: // 无视频和无分享
  491 + // 既不显示分享ui又不显示视频ui,直接领奖ui状态
  492 + this.stat_free.play(0,false);
  493 + // 等同于
496 // this.btnFree.visible = true; 494 // this.btnFree.visible = true;
497 // this.btnShare.visible = false; 495 // this.btnShare.visible = false;
498 // this.btnVideo.visible = false; 496 // this.btnVideo.visible = false;
499 - break;  
500 - }  
501 - } 497 + break;
  498 + }
  499 + }
502 } 500 }
503 501
504 // Enums.ts文件 502 // Enums.ts文件
@@ -536,4 +534,4 @@ @@ -536,4 +534,4 @@
536 534
537 这个模块的内容点比较多,接入的注意事项也比较多,望接入者细度使用说明和理解示例意图。 535 这个模块的内容点比较多,接入的注意事项也比较多,望接入者细度使用说明和理解示例意图。
538 536
539 -<font color="#FF0000">噗嗤游戏的小伙伴在开发公司内部游戏中使用此模块,简单封装了SDK分享视频模块的几个通用方法,提供开发者参考,</font>**[点击下载](https://dep.miso-lab.com/sdkword/tools/sdk-share-tools-1.0.0.zip)**。 537 +<font color="#FF0000">噗嗤游戏的小伙伴在开发公司内部游戏中使用此模块,简单封装了SDK分享视频模块的几个通用方法,提供开发者参考,</font>**[点击下载](https://dep.miso-lab.com/sdkword/tools/sdk-share-tools-1.0.1.zip)**。
outer/download.md
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 1. config.js配置ShareData新增share_wxad_id参数:视频广告uid,配置此参数,推送看视频,不配置或者配置的uid无效则推送分享。 38 1. config.js配置ShareData新增share_wxad_id参数:视频广告uid,配置此参数,推送看视频,不配置或者配置的uid无效则推送分享。
39 2. stat模块的addLogLevel拆分为多个接口:logLevelRelive、logLevelWin、logLevelFail、logLevelHide,addLogLevel继续保留。 39 2. stat模块的addLogLevel拆分为多个接口:logLevelRelive、logLevelWin、logLevelFail、logLevelHide,addLogLevel继续保留。
40 3. data模块新增了三个控制交叉推广位动态控制显示/隐藏的api:IsCross、IsDrawer、IsGuessLike。 40 3. data模块新增了三个控制交叉推广位动态控制显示/隐藏的api:IsCross、IsDrawer、IsGuessLike。
41 -4. share模块重新命名为:shareVideo,shareDispatch修改为dispatch、shareWithType修改为dispatchType、getShareType修改为getShareVideoType,原来的share模块还是能用 41 +4. share模块重新命名为:shareVideo,原来的share模块还是能用。shareDispatch修改为dispatch、shareWithType修改为dispatchType、getShareType修改为getType
42 42
43 43
44 ## [v1.0.0.0 下载](https://dep.miso-lab.com/sdkword/versions/sdk-out-v1.0.0.0.zip) 44 ## [v1.0.0.0 下载](https://dep.miso-lab.com/sdkword/versions/sdk-out-v1.0.0.0.zip)
outer/modules.md
@@ -84,4 +84,4 @@ @@ -84,4 +84,4 @@
84 84
85 dispatch:分享视频分发入口,传入功能点英文命名的分享/视频key 85 dispatch:分享视频分发入口,传入功能点英文命名的分享/视频key
86 86
87 - getShareVideoType:根据功能点在后台配置的分享/视频key,得到此功能点分享开关 87 + getType:根据功能点在后台配置的分享/视频key,得到此功能点分享开关
outer/share.md
1 -  
2 # 分享视频模块 1 # 分享视频模块
3 2
4 ------ 3 ------
5 4
6 #### **简介** 5 #### **简介**
7 -小游戏生态中,普遍把平台提供的分享/视频接口更多用于某个奖励领取、获取n倍奖励、游戏死亡复活、转盘额外次数获得等等一种有效途径(分享:拉取新用户,视频:赚钱广告费);噗嗤游戏在分享or视频推送不断的探索迭代中,总结了一套分享/视频积分策略,集成在SDK中开放给开发者,开发者只需对游戏中分享视频功能点命名一个英文名称key(分享视频key),这个key关联分享文案、分享图、分享开关(推送类型)、视频uid等等在后台配置好,使用SDK提供的一个dispatch api传入英文名称key即可完成接入工作。 6 +小游戏生态中,普遍把平台提供的分享/视频接口更多用于某个奖励领取、获取n倍奖励、游戏死亡复活、转盘额外次数获得等等一种有效途径(分享:拉取新用户,视频:赚钱广告费);噗嗤游戏在分享/视频推送不断的迭代中,总结了一套分享/视频积分策略,集成在SDK中开放给开发者,开发者只需对游戏中分享视频功能点命名一个英文名称key(分享视频key),在后台配置这个key关联的分享文案、分享图、分享开关(推送类型)、视频uid等等信息,使用SDK提供的一个dispatch api传入分享视频key即可完成接入工作。
8 7
9 -- 分享/视频配置可以让开发者在后台中动态修改相关功能点的分享/视频配置内容。  
10 8
11 -- 新增某个功能的分享点配置、在线修改相关功能点的分享图或文案、在线切换某个功能点按钮的分享/视频推送类型 9 +- 后台的【分享/视频配置】功能可以让开发者动态修改相关功能点的分享/视频配置的分享文案、分享图、分享开关(推送类型)、视频uid等等信息
12 10
13 -- 调用SDK的dispatch api,dispatch会根据后台配置的分享开关(推送类型)自动进行分发:推送分享还是视频全权交由SDK去处理,开发者只需要传入成功/失败回调函数,成功回调函数处理发放领取奖励、n倍奖励、成功复活等操作,失败回调函数处理参数传递的msg信息。 11 +- 调用SDK的dispatch api,dispatch会根据后台配置的分享开关(推送类型)自动进行分发:推送分享or视频全权交由SDK去处理,开发者只需要传入成功/失败回调函数,成功回调函数处理成功后的逻辑,失败回调函数处理参数传递的错误msg信息。
14 12
15 #### **疑惑解答** 13 #### **疑惑解答**
16 1. 为什么要引入这个模块? 14 1. 为什么要引入这个模块?
17 15
18 - > 游戏中很多n倍奖励、复活、额外奖励等功能点通常需要分享或者视频才能额外获得,游戏上线后,运营很有可能会对某些功能点有额外的需求修改:a功能点获取由分享改成视频方式获取、b功能点由视频改成分享方式获取、c功能点需要在前面n次看视频获得后全是分享获得、为某某功能的分享图想换一个、拉取视频不成功自动切换分享等等;为了应对这些不同情形,我们把分享和视频点包装成一个模块,a功能点也不在局限于只是简单的分享、b功能只是视频,而是通过后台分享开关去灵活切换。所有功能点入口调用都是使用dispatch,每个功能点都是转化为一个分享视频key在后台管理 16 + > 游戏中很多n倍奖励、复活、额外奖励等功能点通常需要分享或者视频才能额外获得。游戏上线后,运营可能会对这些功能点有修改需求:a功能点领取奖励由分享改成视频方式领取、b功能点由视频改成分享方式获取、c功能点需要在前面n次看视频领取过后,后面全是分享获得、某个分享点的分享图片和文案修改等等;为了应对这些不同情形,我们把分享和视频点包装成一个模块,每个功能点转成key在后台进行管理,功能点也不在局限于只是简单的推送分享,单一的推送视频,而是可以根据运营情况进行灵活切换
19 17
20 2. 什么是分享视频key? 18 2. 什么是分享视频key?
21 19
22 - > 分享视频key是一个功能点的英文名称,这个key配置在后台中,关联分享文案、分享图、分享开关(推送类型)、视频uid等等信息。某个功能点(不论是分享还是视频方式)调用dispatch传入这个key,SDK会读取这个key关联的信息,根据分享开关(推送类型)来推送分享(需要分享文案、分享图)还是推送视频(需要视频uid)。 20 + > 分享视频key是一个功能点的英文名称,这个key是开发者根据功能点命名的,开发者自己或者策划把这个key关联的分享文案、分享图、分享开关(推送类型)、视频uid等等信息配置在后台;完成配置后,使用PCSDK.shareVideo.dispatch传入这个key,PCSDK会读取这个key关联的信息,根据分享开关(推送类型)来推送分享(读取配置的分享文案、分享图)还是推送视频(读取配置的视频uid)。
23 21
24 3. 什么是分享视频分发? 22 3. 什么是分享视频分发?
25 23
26 - > 调用dispatch api传入分享视频key,SDK会查找这个key在后台配置的数据,SDK读取数据中分享开关(推送类型)的字段信息,通过这个开关类型来判断推给用户是分享还是视频,这个根据类型来推送的操作就是分发操作。 24 + > 使用PCSDK.shareVideo.dispatch传入分享视频key,SDK会查找这个key在后台配置的数据信息,SDK读取数据中分享开关(推送类型),通过推送类型来计算推给用户是分享还是视频,这个根据推送类型来推送的操作就是分发操作。
27 25
28 4. 游戏中之前是玩家分享n次后变成看视频或者是看视频n次后全是分享,dispatch能满足吗? 26 4. 游戏中之前是玩家分享n次后变成看视频或者是看视频n次后全是分享,dispatch能满足吗?
29 27
30 - > 上面的问题dispatch也同样支持,还是同样的调用方式,不需要做其他额外处理,dispatch是怎么做到的了:分享开关(推送类型)有一个分享积分选择项,这个选项就是通过积分策略实现了上面问题。 28 + > 上面的问题dispatch也同样支持,还是一样的调用方式,不需要额外的传递参数,只需在后台修改分享开关(推送类型)
31 > 29 >
32 30
33 31
34 #### **后台使用** 32 #### **后台使用**
35 33
36 -配置分享视频配置,登录后台->头部tab切换到【游戏数据】->【配置相关】->【分享/视频配置】可新增、编辑修改分享/视频内容: 34 +配置分享视频,登录后台->头部tab切换到【游戏数据】->【配置相关】->【分享/视频配置】可新增、编辑修改分享/视频内容:
37 35
38 ![sdk文件目录结构](https://dep.miso-lab.com/sdkword/sdk_023.png "🔍点击查看大图") 36 ![sdk文件目录结构](https://dep.miso-lab.com/sdkword/sdk_023.png "🔍点击查看大图")
39 37
@@ -55,7 +53,7 @@ @@ -55,7 +53,7 @@
55 53
56 - 接入此模块前,请[**前往sdk/config.js文件中配置【IsUseShareModule: true 】开启分享视频模块功能**](install.md#config_env),此参数配置为true,才能正常使用此模块的功能,SDK启动时会自动拉取后台配置所有功能点的分享/视频配置列表。 54 - 接入此模块前,请[**前往sdk/config.js文件中配置【IsUseShareModule: true 】开启分享视频模块功能**](install.md#config_env),此参数配置为true,才能正常使用此模块的功能,SDK启动时会自动拉取后台配置所有功能点的分享/视频配置列表。
57 55
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,所有的功能点不会分享完成、拉起看完视频后发放奖励,而是直接发放奖励,这样就能避免审核时,如果是推送分享拉起分享,被微信认为是诱导分享,被拒的可能性。 56 +- <font color="#FF0000">微信小游戏开发者接入此模块,游戏有些分享点,提审时避免触犯微信平台的[滥用分享行为](https://developers.weixin.qq.com/minigame/product/#_5-1-滥用分享行为),在后台【配置参数】中配置了一个SDK内部使用的[配置参数](online.md)share_unlock,进行分享开关切换:1(开启)0(关闭),提审时设置为0,审核通过后设为1。share_unlock设置为0,所有使用PCSDK.shareVideo.dispatch( key, { success: Function, fail: Function , context:any })的功能点不会触发调起平台的分享or拉取平台视频,而是会直接触发success回调函数。这样就能避免审核时,如果推送分享拉起分享发放奖励,被微信认为是诱导分享,被拒的可能性。
59 57
60 - sdk/config.js的配置参数ShareRightKey,表示右上角分享的分享视频key,请配置到后台【分享/视频配置】中。如果ShareRightKey配置不为空,SDK会自动调用微信的右上角分享接口(wx.onShareAppMessage),实现右上角分享功能,注意的是开发者在游戏中已经有注册wx.onShareAppMessage需要删除掉,不然游戏中onShareAppMessage的注册事件会把SDK中的注册事件处理函数覆盖掉,导致还是使用的是开发者注册的右上角分享功能。 58 - sdk/config.js的配置参数ShareRightKey,表示右上角分享的分享视频key,请配置到后台【分享/视频配置】中。如果ShareRightKey配置不为空,SDK会自动调用微信的右上角分享接口(wx.onShareAppMessage),实现右上角分享功能,注意的是开发者在游戏中已经有注册wx.onShareAppMessage需要删除掉,不然游戏中onShareAppMessage的注册事件会把SDK中的注册事件处理函数覆盖掉,导致还是使用的是开发者注册的右上角分享功能。
61 59
@@ -73,7 +71,7 @@ @@ -73,7 +71,7 @@
73 | ------------------------------- | ------------------------------------------------------------ | 71 | ------------------------------- | ------------------------------------------------------------ |
74 | PCSDK.shareVideo.share | 普通分享,不需要处理回调的场景,例如分享到群、分享到好友,这些普通的分享,而不用处理成功/失败回调函数。 | 72 | PCSDK.shareVideo.share | 普通分享,不需要处理回调的场景,例如分享到群、分享到好友,这些普通的分享,而不用处理成功/失败回调函数。 |
75 | PCSDK.shareVideo.dispatch | 分享视频分发入口,传入功能点英文命名的分享/视频key | 73 | PCSDK.shareVideo.dispatch | 分享视频分发入口,传入功能点英文命名的分享/视频key |
76 -| PCSDK.shareVideo.getShareVideoType | 根据功能点在后台配置的分享/视频key,得到此功能点分享开关(推送类型)SDK计算得到最终推送类型:-1(无视频无分享)、0(分享)、1(异步分享)、5(分享积分)、2(视频)、3(无视频则分享)、4(视频和分享)(控制分享和视频两个按钮的显示) | 74 +| PCSDK.shareVideo.getType | 根据功能点在后台配置的分享/视频key,得到此功能点分享开关(推送类型)SDK计算得到最终推送类型:-1(无视频无分享)、0(分享)、1(异步分享)、5(分享积分)、2(视频)、3(无视频则分享)、4(视频和分享)(控制分享和视频两个按钮的显示) |
77 75
78 76
79 77
@@ -240,10 +238,10 @@ @@ -240,10 +238,10 @@
240 } 238 }
241 ``` 239 ```
242 240
243 -3. ##### **getShareVideoType** 241 +3. ##### **getType**
244 242
245 ```javascript 243 ```javascript
246 - PCSDK.shareVideo.getShareVideoType( key: string ): number 244 + PCSDK.shareVideo.getType( key: string ): number
247 ``` 245 ```
248 246
249 定义:根据分享视频key获取此次shareVideo模块推送的分享视频类型值:-1(无视频无分享:提审时返回)、0(推送同步分享)、1(推送异步分享)、2(推送看视频)、3(无视频则分享)、4(视频和分享)、5(分享积分);此api用于通过得到的类型值处理页面的ui状态(微信和QQ平台对按钮的icon有强制限制):显示视频icon、显示分享icon、既没有分享icon,也没有视频icon。 247 定义:根据分享视频key获取此次shareVideo模块推送的分享视频类型值:-1(无视频无分享:提审时返回)、0(推送同步分享)、1(推送异步分享)、2(推送看视频)、3(无视频则分享)、4(视频和分享)、5(分享积分);此api用于通过得到的类型值处理页面的ui状态(微信和QQ平台对按钮的icon有强制限制):显示视频icon、显示分享icon、既没有分享icon,也没有视频icon。
@@ -276,81 +274,81 @@ @@ -276,81 +274,81 @@
276 ```javascript 274 ```javascript
277 // DiamondDoublePopwin.ts文件 275 // DiamondDoublePopwin.ts文件
278 export default class DiamondDoublePopwin extends BaseView{ 276 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 - } 277 + protected addEvent() {
  278 + super.addEvent();
  279 + // 免费领取双倍(应对微信审核,审核分享不能开放时候使用)
  280 + this.btnFree.on(Laya.Event.CLICK, this, this.onReward);
  281 + // 分享双倍
  282 + this.btnShare.on(Laya.Event.CLICK, this, this.onReward);
  283 + // 视频双倍
  284 + this.btnVideo.on(Laya.Event.CLICK, this, this.onReward);
  285 + }
288 286
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); 287 + protected removeEvent() {
  288 + super.removeEvent();
  289 + this.btnFree.off(Laya.Event.CLICK, this, this.onReward);
  290 + this.btnShare.off(Laya.Event.CLICK, this, this.onReward);
  291 + this.btnVideo.off(Laya.Event.CLICK, this, this.onReward);
294 } 292 }
295 293
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 - } 294 + // 每次打开此popwin执行onOpen
  295 + protected onOpen(){
  296 + super.onOpen();
  297 + this.iniitRewardUI();
  298 + }
344 299
345 - // 分享/视频失败后回调处理函数:弹出提示  
346 - private handleError(from: ShareVideoFrom, error: any | null){  
347 - // 返回错误,处理错误msg信息,自定义处理  
348 - if( error ){  
349 - wx.showToast({  
350 - title: error.msg  
351 - });  
352 - }  
353 - } 300 + // 初始化/更新获得奖励按钮ui
  301 + private initRewardUI() {
  302 + let shareVideoType: ShareVideoType = PCSDK.shareVideo.getType(ShareVideoKeys.DiamondDouble.toString());
  303 + switch (shareVideoType) {
  304 + case ShareVideoType.Share: // 同步分享
  305 + case ShareVideoType.ShareAysnc: // 异步分享
  306 + case ShareVideoType.ShareIntegral: // 分享积分
  307 + this.btnFree.visible = false;
  308 + this.btnShare.visible = true;
  309 + this.btnVideo.visible = false;
  310 + break;
  311 +
  312 + case ShareVideoType.Video: // 推送视频
  313 + case ShareVideoType.VideoToShare: // 无视频则分享
  314 + // 视频ui状态
  315 + this.btnFree.visible = false;
  316 + this.btnShare.visible = false;
  317 + this.btnVideo.visible = true;
  318 + break;
  319 +
  320 + default: // 无视频和无分享
  321 + // 既不显示分享ui又不显示视频ui,直接领奖ui状态
  322 + this.btnFree.visible = true;
  323 + this.btnShare.visible = false;
  324 + this.btnVideo.visible = false;
  325 + break;
  326 + }
  327 + }
  328 +
  329 + // 领取奖励操作
  330 + private onReward(){
  331 + PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), {
  332 + success: this.handleReward,
  333 + fail: this.handleError,
  334 + context: this
  335 + } );
  336 + }
  337 +
  338 + // 分享/视频成功后回调处理函数:发奖励
  339 + private handleReward(from: ShareVideoFrom, ret: any | null){
  340 + // 分享成功、视频成功、无视频无分享
  341 + }
  342 +
  343 + // 分享/视频失败后回调处理函数:弹出提示
  344 + private handleError(from: ShareVideoFrom, error: any | null){
  345 + // 返回错误,处理错误msg信息,自定义处理
  346 + if( error ){
  347 + wx.showToast({
  348 + title: error.msg
  349 + });
  350 + }
  351 + }
354 } 352 }
355 353
356 // Enums.ts文件 354 // Enums.ts文件
@@ -383,7 +381,7 @@ @@ -383,7 +381,7 @@
383 381
384 ``` 382 ```
385 <div id="detail"></div> 383 <div id="detail"></div>
386 - 下面演示dispatch和getShareVideoType两个api的完整使用,Laya引擎开发: 384 + 下面演示dispatch和getType两个api的完整使用,Laya引擎开发:
387 385
388 页面功能点按钮做三个状态: 386 页面功能点按钮做三个状态:
389 387
@@ -401,104 +399,104 @@ @@ -401,104 +399,104 @@
401 399
402 ![sdk文件目录结构](https://dep.miso-lab.com/sdkword/sdk_027_4.png "🔍点击查看大图") 400 ![sdk文件目录结构](https://dep.miso-lab.com/sdkword/sdk_027_4.png "🔍点击查看大图")
403 401
404 - 例如,一个领取钻石双倍,页面的按钮ui通过下面的方式进行切换 402 + 例如:一个领取钻石双倍功能
405 403
406 - 1、页面做三个按钮:视频icon按钮、分享icon按钮、直接领取按钮 404 + 1、页面做三个按钮:看视频领取双倍按钮(视频图标)、分享领取双倍按钮(分享图标)、直接领取按钮(没有任何图标)
407 405
408 2、进入页面根据配置的key获取类型,显示对应类型ui:调用下面的initRewardUI(可随意命名) 406 2、进入页面根据配置的key获取类型,显示对应类型ui:调用下面的initRewardUI(可随意命名)
409 407
410 - 3、<font color="#FF0000">分享或者视频后,SDK会发送一个tactic.update的消息过来,使用PCSDK.event.add注册监听,PCSDK.event.remove移除监听(PCSDK.event详细了解请查看[事件模块](event.md)),监听事件处理下一次推送显示ui状态:执行一下initRewardUI。</font> 408 + 3、<font color="#FF0000">分享或者视频后,SDK会发提供PCSDK.event模块发送一个'tactic.update'的消息,使用PCSDK.event.add注册消息监听,PCSDK.event.remove移除消息监听(PCSDK.event详细了解请查看[事件模块](event.md)),监听函数处理下一次推送显示ui状态:执行一下initRewardUI。</font>
411 409
412 4、给三个按钮都注册事件:onReward 410 4、给三个按钮都注册事件:onReward
413 ```javascript 411 ```javascript
414 // DiamondDoublePopwin.ts文件 412 // DiamondDoublePopwin.ts文件
415 export default class DiamondDoublePopwin extends BaseView { 413 export default class DiamondDoublePopwin extends BaseView {
416 - protected addEvent() {  
417 - super.addEvent();  
418 - // 免费领取双倍(应对微信审核,审核分享不能开放时候使用) 414 + protected addEvent() {
  415 + super.addEvent();
  416 + // 免费领取双倍(应对微信审核,审核分享不能开放时候使用)
419 this.btnFree.on(Laya.Event.CLICK, this, this.onReward); 417 this.btnFree.on(Laya.Event.CLICK, this, this.onReward);
420 // 分享双倍 418 // 分享双倍
421 this.btnShare.on(Laya.Event.CLICK, this, this.onReward); 419 this.btnShare.on(Laya.Event.CLICK, this, this.onReward);
422 // 视频双倍 420 // 视频双倍
423 this.btnVideo.on(Laya.Event.CLICK, this, this.onReward); 421 this.btnVideo.on(Laya.Event.CLICK, this, this.onReward);
424 - // PCSDK.event.add注册监听SDK发送的消息:tactic.update,更新获得奖励按钮ui  
425 - PCSDK.event.add('tactic.update', this.initRewardUI, this);  
426 - } 422 + // PCSDK.event.add注册监听SDK发送的消息:tactic.update,更新获得奖励按钮ui
  423 + PCSDK.event.add('tactic.update', this.initRewardUI, this);
  424 + }
427 425
428 - protected removeEvent() { 426 + protected removeEvent() {
429 super.removeEvent(); 427 super.removeEvent();
430 - this.btnFree.off(Laya.Event.CLICK, this, this.onReward);  
431 - this.btnShare.off(Laya.Event.CLICK, this, this.onReward);  
432 - this.btnVideo.off(Laya.Event.CLICK, this, this.onReward);  
433 - // PCSDK.event.remove移除监听SDK发送的消息:tactic.update  
434 - PCSDK.event.remove('tactic.update', this.initRewardUI, this);  
435 - } 428 + this.btnFree.off(Laya.Event.CLICK, this, this.onReward);
  429 + this.btnShare.off(Laya.Event.CLICK, this, this.onReward);
  430 + this.btnVideo.off(Laya.Event.CLICK, this, this.onReward);
  431 + // PCSDK.event.remove移除监听SDK发送的消息:tactic.update
  432 + PCSDK.event.remove('tactic.update', this.initRewardUI, this);
  433 + }
436 434
437 // 每次打开此popwin执行onOpen 435 // 每次打开此popwin执行onOpen
438 - protected onOpen(){  
439 - super.onOpen();  
440 - // 界面打开  
441 - this.initRewardUI();  
442 - }  
443 -  
444 - // 领取奖励操作  
445 - private onReward(){  
446 - PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), {  
447 - success: this.handleReward,  
448 - context: this  
449 - } );  
450 - } 436 + protected onOpen(){
  437 + super.onOpen();
  438 + // 界面打开
  439 + this.initRewardUI();
  440 + }
  441 +
  442 + // 领取奖励操作
  443 + private onReward(){
  444 + PCSDK.shareVideo.dispatch( ShareVideoKeys.DiamondDouble.toString(), {
  445 + success: this.handleReward,
  446 + context: this
  447 + } );
  448 + }
451 449
452 - // 分享/视频成功后回调处理函数:发奖励  
453 - private handleReward(from: ShareVideoFrom, ret: any | null){  
454 - // 分享成功、视频成功、无视频无分享  
455 - } 450 + // 分享/视频成功后回调处理函数:发奖励
  451 + private handleReward(from: ShareVideoFrom, ret: any | null){
  452 + // 分享成功、视频成功、无视频无分享
  453 + }
456 454
457 - // 分享/视频失败后回调处理函数:弹出提示  
458 - private handleError(from: ShareVideoFrom, error: any | null){ 455 + // 分享/视频失败后回调处理函数:弹出提示
  456 + private handleError(from: ShareVideoFrom, error: any | null){
459 // 返回错误,处理错误msg信息,自定义处理 457 // 返回错误,处理错误msg信息,自定义处理
460 - if( error ){  
461 - wx.showToast({ 458 + if( error ){
  459 + wx.showToast({
462 title: error.msg 460 title: error.msg
463 - });  
464 - }  
465 - } 461 + });
  462 + }
  463 + }
466 464
467 // 初始化/更新获得奖励按钮ui 465 // 初始化/更新获得奖励按钮ui
468 - private initRewardUI() {  
469 - let shareVideoType: ShareType = PCSDK.shareVideo.getShareVideoType(ShareVideoKeys.DiamondDouble.toString());  
470 - switch (shareVideoType) {  
471 - case ShareVideoType.Share: // 同步分享  
472 - case ShareVideoType.ShareAysnc: // 异步分享  
473 - case ShareVideoType.ShareIntegral: // 分享积分  
474 - // 分享ui状态  
475 - this.stat_share.play(0,false);  
476 - // 等同于 466 + private initRewardUI() {
  467 + let shareVideoType: ShareType = PCSDK.shareVideo.getType(ShareVideoKeys.DiamondDouble.toString());
  468 + switch (shareVideoType) {
  469 + case ShareVideoType.Share: // 同步分享
  470 + case ShareVideoType.ShareAysnc: // 异步分享
  471 + case ShareVideoType.ShareIntegral: // 分享积分
  472 + // 分享ui状态
  473 + this.stat_share.play(0,false);
  474 + // 等同于
477 // this.btnFree.visible = false; 475 // this.btnFree.visible = false;
478 // this.btnShare.visible = true; 476 // this.btnShare.visible = true;
479 // this.btnVideo.visible = false; 477 // this.btnVideo.visible = false;
480 - break;  
481 -  
482 - case ShareVideoType.Video: // 视频  
483 - case ShareVideoType.VideoToShare: // 无视频则分享  
484 - // 视频ui状态  
485 - this.stat_video.play(0,false);  
486 - // 等同于  
487 - // this.btnFree.visible = false;  
488 - // this.btnShare.visible = false;  
489 - // this.btnVideo.visible = true;  
490 - break;  
491 -  
492 - default: // 无视频和无分享  
493 - // 既不显示分享ui又不显示视频ui,直接领奖ui状态  
494 - this.stat_free.play(0,false);  
495 - // 等同于 478 + break;
  479 +
  480 + case ShareVideoType.Video: // 视频
  481 + case ShareVideoType.VideoToShare: // 无视频则分享
  482 + // 视频ui状态
  483 + this.stat_video.play(0,false);
  484 + // 等同于
  485 + // this.btnFree.visible = false;
  486 + // this.btnShare.visible = false;
  487 + // this.btnVideo.visible = true;
  488 + break;
  489 +
  490 + default: // 无视频和无分享
  491 + // 既不显示分享ui又不显示视频ui,直接领奖ui状态
  492 + this.stat_free.play(0,false);
  493 + // 等同于
496 // this.btnFree.visible = true; 494 // this.btnFree.visible = true;
497 // this.btnShare.visible = false; 495 // this.btnShare.visible = false;
498 // this.btnVideo.visible = false; 496 // this.btnVideo.visible = false;
499 - break;  
500 - }  
501 - } 497 + break;
  498 + }
  499 + }
502 } 500 }
503 501
504 // Enums.ts文件 502 // Enums.ts文件
@@ -536,4 +534,4 @@ @@ -536,4 +534,4 @@
536 534
537 这个模块的内容点比较多,接入的注意事项也比较多,望接入者细度使用说明和理解示例意图。 535 这个模块的内容点比较多,接入的注意事项也比较多,望接入者细度使用说明和理解示例意图。
538 536
539 -<font color="#FF0000">噗嗤游戏的小伙伴在开发公司内部游戏中使用此模块,简单封装了SDK分享视频模块的几个通用方法,提供开发者参考,</font>**[点击下载](https://dep.miso-lab.com/sdkword/tools/sdk-share-tools-1.0.0.zip)**。 537 +<font color="#FF0000">噗嗤游戏的小伙伴在开发公司内部游戏中使用此模块,简单封装了SDK分享视频模块的几个通用方法,提供开发者参考,</font>**[点击下载](https://dep.miso-lab.com/sdkword/tools/sdk-share-tools-1.0.1.zip)**。
tools/sdk-share-tools-1.0.0.zip 0 → 100644
No preview for this file type
tools/sdk-share-tools-1.0.1/SDKTools.ts 0 → 100644
@@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
  1 +import ShareVideoTools, { ShareVideoKeys, ShareVideoType } from "./ShareVideoTools";
  2 +
  3 +/*
  4 +* SDK工具类库;
  5 +*/
  6 +export default class SDKTools {
  7 + // 判断PCSDK是否支持
  8 + static get isSupported() {
  9 + return typeof PCSDK === 'object';
  10 + }
  11 +
  12 + /**
  13 + * 检测普通不是返回值为Promise的 api接口:在浏览器中或其他不支持的平台不至于报错
  14 + * @param callback 接口 api函数
  15 + * @param defaltVal 返回的默认值
  16 + */
  17 + private static checkNormal<T>(callback: Function, defaltVal?: T): T {
  18 + if (!this.isSupported) return defaltVal;
  19 + return callback();
  20 + }
  21 +
  22 + /**
  23 + * 检测普返回值为Promise的 api接口:在浏览器中或其他不支持的平台不至于报错
  24 + * @param callback 接口 api函数
  25 + * @param defaltVal 返回的默认值
  26 + */
  27 + private static checkPromise(callback: Function, defaultVal: Promise<any> = Promise.resolve()): Promise<any> {
  28 + return this.checkNormal<Promise<any>>(callback, defaultVal);
  29 + }
  30 +
  31 + static getType(shareVideoKey: ShareVideoKeys): ShareVideoType {
  32 + return this.checkNormal(() => ShareVideoTools.getType(shareVideoKey), ShareVideoType.Share);
  33 + }
  34 +
  35 + static share(shareVideoKey: ShareVideoKeys, params?: any, opts?: any): void {
  36 + return this.checkNormal(() => ShareVideoTools.share(shareVideoKey, params, opts), null);
  37 + }
  38 +
  39 + static dispatch(shareVideoKey: ShareVideoKeys, params?: { type?: number, success?: Function, fail?: Function, context?: any }): void {
  40 + if (!this.isSupported)
  41 + return params && params.success && params.success.call(params.context || this);
  42 + else
  43 + return this.checkNormal(() => ShareVideoTools.dispatch(shareVideoKey, params), null);
  44 + }
  45 +
  46 + static dispatchType(shareVideoType: ShareVideoType, shareVideoKey: ShareVideoKeys, opts?: { success?: Function, fail?: Function, context?: any }): void {
  47 + return this.checkNormal(() => ShareVideoTools.dispatchType(shareVideoType, shareVideoKey, opts), null);
  48 + }
  49 +}
0 \ No newline at end of file 50 \ No newline at end of file
tools/sdk-share-tools-1.0.1/ShareVideoTools.ts 0 → 100644
@@ -0,0 +1,150 @@ @@ -0,0 +1,150 @@
  1 +/*
  2 +* 分享与视频工具类;
  3 +*/
  4 +export default class ShareVideoTools {
  5 + /**
  6 + * @param key
  7 + * @param params
  8 + */
  9 + static getType(key: ShareVideoKeys): ShareVideoType {
  10 + return PCSDK.shareVideo.getType(key.toString());
  11 + }
  12 +
  13 + /**
  14 + * 普通分享,不进行处理回调
  15 + * @param key
  16 + * @param params 分享参数
  17 + * @param opts 扩展参数
  18 + */
  19 + static share(key: ShareVideoKeys, params: any, opts?: any) {
  20 + PCSDK.shareVideo.share(key.toString(), params, opts).then(ret => this.handleSuccess(ShareVideoFrom.Share, ret));
  21 + }
  22 +
  23 + /**
  24 + * 验证分享:可处理成功、失败
  25 + * @param key
  26 + * @param params
  27 + */
  28 + static dispatch(key: ShareVideoKeys, params?: { type?: number, success?: Function, fail?: Function, context?: any }) {
  29 + PCSDK.shareVideo.shareDispatch(key.toString(), this.buildParams(params));
  30 + }
  31 +
  32 + /**
  33 + * 可自定义类型的验证分享:例如后台配的shareVideoKey是分享,但是这个key临时想要看视频,可传递shareVideoType Video类型强制使用视频
  34 + * @param shareVideoType
  35 + * @param key
  36 + * @param params
  37 + */
  38 + static dispatchType(shareType: ShareVideoType, key: ShareVideoKeys, params?: { type?: number, success?: Function, fail?: Function, context?: any }) {
  39 + PCSDK.shareVideo.dispatchType(shareType, key.toString(), this.buildParams(params));
  40 + }
  41 +
  42 + /**
  43 + * 对参数进行处理
  44 + * @param params
  45 + */
  46 + private static buildParams(params: any = {}) {
  47 + let { isOveride } = params;
  48 + let { success, fail, context } = params;
  49 + // 设置成功处理
  50 + params = {
  51 + ...params,
  52 + success: (from: ShareVideoFrom, ret) => {
  53 + success && success.call(context, from, ret);
  54 + this.handleSuccess(from, ret);
  55 + }
  56 + };
  57 +
  58 + if (isOveride)
  59 + // 覆盖:失败默认处理
  60 + return {
  61 + ...params,
  62 + fail: (from: ShareVideoFrom, err) => {
  63 + fail && fail.call(context, from, err);
  64 + }
  65 + };
  66 + else
  67 + // 不覆盖:失败默认处理
  68 + return {
  69 + ...params,
  70 + fail: (from: ShareVideoFrom, err) => {
  71 + fail && fail.call(context, from, err);
  72 + this.handleError(from, err);
  73 + }
  74 + };
  75 + }
  76 +
  77 + /**
  78 + * 成功默认处理:分享和视频统计
  79 + * @param from 来源
  80 + * @param ret?
  81 + */
  82 + private static handleSuccess(from: ShareVideoFrom, ret: any | null) {
  83 + switch (from) {
  84 + case ShareVideoFrom.Share: // 同步分享
  85 + case ShareVideoFrom.ShareAysnc: // 异步分享
  86 + break;
  87 +
  88 + case ShareVideoFrom.Video: // 看视频
  89 + break;
  90 + }
  91 + }
  92 +
  93 + /**
  94 + * 失败默认设置(可覆盖)
  95 + * @param from 来源
  96 + * @param error: 失败消息对象
  97 + */
  98 + private static handleError(from: ShareVideoFrom, error: { code: number, msg: string } | null) {
  99 + if (!error) return;
  100 + // 开发者自定义处理 error msg
  101 + if (error.code) {
  102 + // wx.showToast({
  103 + // title: error.msg
  104 + // });
  105 + // ViewManager.I.showModal(ComTipFull, error.msg);
  106 + }
  107 + }
  108 +}
  109 +
  110 +// 分享视频类型(与后台一一对应)
  111 +export enum ShareVideoType {
  112 + None = -1, // -1无分享无视频
  113 + Share = 0, // 0同步分享
  114 + ShareAysnc = 1, // 1异步分享
  115 + ShareIntegral = 5, // 5分享积分
  116 + Video = 2, // 2看视频
  117 + VideoToShare = 3, // 3无视频则分享
  118 + VideoAndShare = 4, // 4视频和分享(控制分享和视频两个按钮的显示) ,
  119 +}
  120 +
  121 +// 分享或者视频来源
  122 +export enum ShareVideoFrom {
  123 + None, // 无分享
  124 + Share, // 同步分享
  125 + ShareAysnc, // 异步分享
  126 + Video // 看视频
  127 +}
  128 +
  129 +// 分享视频keysKeys
  130 +export enum ShareVideoKeys {
  131 + Forward = <any>'forward', // 右上角三点转发
  132 + CoinTip = <any>'coin_tip', // 金币不足弹出框
  133 + DiamondDouble = <any>'diamond_double', // 钻石再来一份
  134 + SuccessDouble = <any>'success_double', // 成功界面双倍
  135 + LevelUpDiamond = <any>'levelup_diamond', // 升级活动钻石
  136 + FailRewardDouble = <any>'fail_reward_double' // 失败获得双倍奖励
  137 +}
  138 +
  139 +// 分享和视频错误
  140 +export enum ShareVideoError {
  141 + VideoQuit = 1000, // { code: 1000, msg: '要看完视频哦!' },
  142 + VideoFail = 1001, // { code: 1001, msg: '加载视频广告失败!' },
  143 + VideoNotOpen = 1002, // { code: 1002, msg: '微信版本过低,暂不支持看视频!' },
  144 + VideoPlaying = 1003, // { code: 1003, msg: '正在观看视频中...' },
  145 + VideoInvalid = 999, // { code: 999, msg: '视频UID不存在!' },
  146 + ShareFail = 1004, // { code: 1004, msg: '失败,发给其他好友试试!' },
  147 + ShareSame = 1005, // { code: 1005, msg: '别总骚扰这个群,换个群分享吧!' },
  148 + ShareNotGroup = 1006, // { code: 1006, msg: '请分享到群哦!' }
  149 + ShareAsyncNotGroup = 1007 // { code: 1007, msg: '分享到群才能领取更多~' }
  150 +}
0 \ No newline at end of file 151 \ No newline at end of file