Commit fafd085a450666461a6fe48140c13a4dd926d30c
1 parent
2a7226b8
Exists in
master
1
Showing
9 changed files
with
509 additions
and
314 deletions
Show diff stats
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
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 |  | 36 |  |
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 |  | 400 |  |
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
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 |  | 36 |  |
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 |  | 400 |  |
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)**。 |
No preview for this file type
@@ -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 |
@@ -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 |