Commit e682ab1b83597e691fd8b201b8670f83d1880bce

Authored by 宋庆平
1 parent d992823e

视频多例

sdk/shareTools.ts
@@ -13,7 +13,7 @@ export class ShareTools { @@ -13,7 +13,7 @@ export class ShareTools {
13 * 验证分享:可处理成功、失败 13 * 验证分享:可处理成功、失败
14 * @param shareKey 14 * @param shareKey
15 * @param params params.fail 有就不处理,没有自动处理 15 * @param params params.fail 有就不处理,没有自动处理
16 - * @param opts 目前支持4个key 1,title自定义分享标题 2,img_url自定义分享图片 3,share_type(不走后台配置写死走视频or分享。1分享2视频3无视频则分享)4,closeSimulate是否关闭模拟分享 16 + * @param opts 目前支持5个key 1,title自定义分享标题 2,img_url自定义分享图片 3,share_type(不走后台配置写死走视频or分享。1分享2视频3无视频则分享)4,closeSimulate是否关闭模拟分享 5:multiton重新创建视频实例
17 */ 17 */
18 static share(shareKey: string, params?: { success?: Function, fail?: Function, context?: any }, opts?: any) { 18 static share(shareKey: string, params?: { success?: Function, fail?: Function, context?: any }, opts?: any) {
19 if (typeof wx === 'undefined' || this.isTest) { 19 if (typeof wx === 'undefined' || this.isTest) {
@@ -37,6 +37,16 @@ export class ShareTools { @@ -37,6 +37,16 @@ export class ShareTools {
37 } 37 }
38 })//this.buildParams(params) 38 })//this.buildParams(params)
39 } 39 }
  40 +
  41 + /**
  42 + * 重新创建视频实例
  43 + * @param shareKey
  44 + * @param params
  45 + * @param opts multiton重新创建视频实例
  46 + */
  47 + static multitonShare(shareKey: string, params?: { success?: Function, fail?: Function, context?: any }, opts?: any) {
  48 + this.share(shareKey, params, { multiton: true, ...opts });
  49 + }
40 /** 50 /**
41 * 纯净分享 不处理回调 51 * 纯净分享 不处理回调
42 * @param shareKey 52 * @param shareKey
wxsdk/base/SDKConst.ts
@@ -35,7 +35,7 @@ export const GAMEDATA = { @@ -35,7 +35,7 @@ export const GAMEDATA = {
35 35
36 36
37 // sdk版本 37 // sdk版本
38 -export const SDKVersion = 'v1.0.15'; 38 +export const SDKVersion = 'v1.0.16';
39 // 是否打印 39 // 是否打印
40 export const __LOG__ = false; 40 export const __LOG__ = false;
41 // 是否mock 41 // 是否mock
wxsdk/service/GameService.ts
@@ -159,16 +159,21 @@ export default class GameService { @@ -159,16 +159,21 @@ export default class GameService {
159 }) 159 })
160 } 160 }
161 /** 161 /**
162 - * 文本检测 162 + * 更换昵称和头像
163 */ 163 */
164 - updateNickname(nickname: string, headurl: string) { 164 + updateNickname(nickname: string, headurl: string) {
  165 + let gameid = GAMEDATA.game_id;
  166 + let uid = DataService.I.UserId;
  167 + let token = DataService.I.Token;
  168 + let pkv = SDKVersion;
165 return SDKApi.updateNickname({ 169 return SDKApi.updateNickname({
166 - ...this.buildParams(), 170 + gameid,uid,token,pkv,
167 nickname, headurl 171 nickname, headurl
168 }) 172 })
169 } 173 }
170 174
171 175
  176 +
172 /** 177 /**
173 * 构建登录/弱登录公用参数 178 * 构建登录/弱登录公用参数
174 */ 179 */
wxsdk/service/ShareVideoService.ts
1 -import { ShareVideoType, ShareVideoFrom } from "../base/SDKEnum";  
2 -import RandomUtils from "../utils/RandomUtils";  
3 -import ShareData from "./entity/ShareData";  
4 -import SDKShare from "../share/SDKShare";  
5 -import { __LOG__, GAMEDATA } from "../base/SDKConst"; 1 +import { GAMEDATA } from "../base/SDKConst";
  2 +import { ShareVideoType } from "../base/SDKEnum";
6 import { SDKApi } from "../http/SDKApi"; 3 import { SDKApi } from "../http/SDKApi";
7 -import DataService from "./DataService"; 4 +import SDKShare from "../share/SDKShare";
8 import SDKVideo from "../share/SDKVideo"; 5 import SDKVideo from "../share/SDKVideo";
  6 +import RandomUtils from "../utils/RandomUtils";
  7 +import DataService from "./DataService";
  8 +import ShareData from "./entity/ShareData";
9 9
10 export default class ShareVideoService { 10 export default class ShareVideoService {
11 private forwardKey?: string; 11 private forwardKey?: string;
@@ -27,26 +27,19 @@ export default class ShareVideoService { @@ -27,26 +27,19 @@ export default class ShareVideoService {
27 this.forward(this.forwardKey); 27 this.forward(this.forwardKey);
28 } 28 }
29 29
30 - private cnt: number = 1  
31 - async initList() { //初始化List 30 + async init() {
32 let data = await SDKApi.ShareList(); 31 let data = await SDKApi.ShareList();
33 - if (data.code) {  
34 - console.log('拉取ShareList失败!')  
35 - setTimeout(this.initList.bind(this), 200 * this.cnt)  
36 - this.cnt++;  
37 - return  
38 - }  
39 this.setShareVideoData(data); 32 this.setShareVideoData(data);
40 - if (this.forwardKey) this.forward(this.forwardKey);  
41 - }  
42 - async init() {  
43 - this.initList(); 33 + // console.log(JSON.stringify(data))
44 SDKShare.I.updateShareMenu(true);//打开群分享 34 SDKShare.I.updateShareMenu(true);//打开群分享
  35 +
45 if (cc.sys.platform === cc.sys.WECHAT_GAME) { 36 if (cc.sys.platform === cc.sys.WECHAT_GAME) {
46 if (GAMEDATA.shareMessageToFriend.scene > 0) { 37 if (GAMEDATA.shareMessageToFriend.scene > 0) {
47 wx.setMessageToFriendQuery({ shareMessageToFriendScene: GAMEDATA.shareMessageToFriend.scene }) 38 wx.setMessageToFriendQuery({ shareMessageToFriendScene: GAMEDATA.shareMessageToFriend.scene })
48 } 39 }
49 } 40 }
  41 +
  42 + if (this.forwardKey) this.forward(this.forwardKey);
50 } 43 }
51 44
52 preload = true; 45 preload = true;
@@ -69,22 +62,26 @@ export default class ShareVideoService { @@ -69,22 +62,26 @@ export default class ShareVideoService {
69 share_id: id, 62 share_id: id,
70 query: this.createQuery({ share_key: key, share_id: id, query: opts.query }), 63 query: this.createQuery({ share_key: key, share_id: id, query: opts.query }),
71 }; 64 };
  65 + let multiton = false;
72 if (opts) { 66 if (opts) {
73 if (opts.title) _params.title = opts.title; 67 if (opts.title) _params.title = opts.title;
74 if (opts.img_url) _params.imageUrl = opts.img_url; 68 if (opts.img_url) _params.imageUrl = opts.img_url;
75 if (opts.share_type) typ = opts.share_type; 69 if (opts.share_type) typ = opts.share_type;
  70 + if (opts.hasOwnProperty('multiton')) {
  71 + multiton = opts.multiton;
  72 + };
76 } 73 }
77 // console.log("share_query",JSON.stringify(_params), _params.query); 74 // console.log("share_query",JSON.stringify(_params), _params.query);
78 switch (+typ) { 75 switch (+typ) {
79 case ShareVideoType.Video: 76 case ShareVideoType.Video:
80 - SDKVideo.I.show(shareKey, videoid).then(success => { 77 + SDKVideo.I.show(shareKey, videoid, multiton).then(success => {
81 resolve(success) 78 resolve(success)
82 }).catch(err => { 79 }).catch(err => {
83 reject(err); 80 reject(err);
84 }) 81 })
85 break; 82 break;
86 case ShareVideoType.VideoToShare: 83 case ShareVideoType.VideoToShare:
87 - SDKVideo.I.show(shareKey, videoid).then(success => { 84 + SDKVideo.I.show(shareKey, videoid, multiton).then(success => {
88 resolve(success) 85 resolve(success)
89 }).catch(err => { 86 }).catch(err => {
90 if (err.code !== 1000 && err.code !== 1003) {//1000关闭1003正在播放 87 if (err.code !== 1000 && err.code !== 1003) {//1000关闭1003正在播放
@@ -110,46 +107,6 @@ export default class ShareVideoService { @@ -110,46 +107,6 @@ export default class ShareVideoService {
110 resolve({}) 107 resolve({})
111 break; 108 break;
112 } 109 }
113 - // share_desc = opts.shareTitle || share_desc;  
114 - // share_desc = StringUtils.stringFormat(share_desc, opts.formater);  
115 - // let shareMsg = {  
116 - // title: share_desc,  
117 - // imageUrl: opts.shareImg || share_icon,  
118 - // query  
119 - // };  
120 - // // __LOG__ && console.error(`SDK ShareVideoService ${opts.shareForward ? 'forward 右上角分享:' : 'share 主动拉起分享:'}`);  
121 - // // __LOG__ && console.error(`SDK ShareVideoService 分享参数对象shareMsg: ${JSON.stringify(shareMsg)}`);  
122 - // // __LOG__ && console.error('SDK ShareVideoService 分享扩展参数', opts);  
123 - // DebugUtils.I.dynamic(`====> PCSDK ShareVideoService share 分享query: ${query}`);  
124 - // let success = (ret: any) => {  
125 - // // __LOG__ && console.error(`SDK ShareVideoService ${opts.shareForward ? 'forward 右上角分享:' : 'share 主动拉起分享:'} 成功回调: ${share_id}`);  
126 - // if (!opts.__GROUP) {  
127 - // // 不是群分享的情况下,进行统计,群分享需要验证  
128 - // TempService.I.add(TempDataKeys.ShareSuccess, 1);  
129 - // share_id && LogService.I.tacticShare(share_id, share_key, TacticType.ShareSuccess);  
130 - // }  
131 - // resolve({ ...ret, share_id, share_key: shareKey });  
132 - // };  
133 - // let fail = (err: any) => {  
134 - // // __LOG__ && console.error(`SDK ShareVideoService ${opts.shareForward ? 'forward 右上角分享:' : 'share 主动拉起分享:'} 失败回调: ${share_id}`);  
135 - // if (!opts.__GROUP) {  
136 - // share_id && LogService.I.tacticShare(share_id, share_key, TacticType.ShareInterrupt);  
137 - // }  
138 - // reject({ ...err, share_id, share_key: shareKey });  
139 - // };  
140 - // if (opts.shareForward)  
141 - // // 右上角转发  
142 - // Platform.I.forward(shareMsg, {  
143 - // ...opts,  
144 - // success,  
145 - // fail,  
146 - // context: this  
147 - // });  
148 - // else  
149 - // // 普通分享  
150 - // Platform.I.share(shareMsg, opts)  
151 - // .then((ret: any) => success(ret))  
152 - // .catch((err: any) => fail(err));  
153 }); 110 });
154 } 111 }
155 112
@@ -166,129 +123,6 @@ export default class ShareVideoService { @@ -166,129 +123,6 @@ export default class ShareVideoService {
166 // console.log("forward", JSON.stringify(params)); 123 // console.log("forward", JSON.stringify(params));
167 SDKShare.I.forward(params); 124 SDKShare.I.forward(params);
168 } 125 }
169 -  
170 - /**  
171 - * 分享自动入口  
172 - * @param shareKey  
173 - * @param opts {  
174 - * type: 当shareType为VideoAndShare时候,该参数有用,0:分享 1:视频  
175 - * context: 函数执行上下文  
176 - * fail: Function 失败函数  
177 - * success: Function 成功函数  
178 - * }  
179 - */  
180 - // dispatch(shareKey: string, opts: any = {}, queryObj: { [key: string]: number | string } = {}) {  
181 - // let shareData = this.getShareVideoData(shareKey);  
182 - // let { share_open, share_wxad_id } = shareData;  
183 - // opts = {  
184 - // ...opts,  
185 - // share_wxad_id,  
186 - // __ShareData__: shareData  
187 - // };  
188 - // this.dispatchType(+share_open, shareKey, opts, queryObj);  
189 - // }  
190 -  
191 - shareDispatch(shareKey: string, opts: any = {}, queryObj: { [key: string]: number | string } = {}) {  
192 - // this.dispatch(shareKey, opts, queryObj);  
193 - }  
194 -  
195 - /**  
196 - * 根据分享类型进行处理  
197 - * @param shareType  
198 - * @param shareKey  
199 - * @param opts {  
200 - * type: 当shareType为VideoAndShare时候,该参数有用,0:分享 1:视频  
201 - * context: 函数执行上下文  
202 - * fail: Function 失败函数  
203 - * success: Function 成功函数  
204 - * }  
205 - */  
206 - dispatchType(shareType: ShareVideoType, shareKey: string, opts: any = {}, queryObj: { [key: string]: number | string } = {}) {  
207 - // if (Platform.IsWx && OnlineService.I.getParamsInt(OnlineKeys.ShareUnlock, 1) !== 1)  
208 - // shareType = ShareVideoType.None;  
209 -  
210 - // let share_wxad_id = opts.share_wxad_id || (opts.__ShareData__ || this.getShareVideoData(shareKey) || {}).share_wxad_id;  
211 - // switch (shareType) {  
212 - // case ShareVideoType.None: // 无分享  
213 - // this.handleSuccess(opts, shareType, ShareVideoFrom.None, null);  
214 - // break;  
215 -  
216 - // case ShareVideoType.Share: // 同步分享  
217 - // // 同步分享点:是否开启后台配置中如果存在视频ID,则自动切换为视频点  
218 - // if (opts.shareAutoVideo && share_wxad_id) {  
219 - // this.dispatchType(ShareVideoType.VideoToShare, shareKey, opts, queryObj);  
220 - // break;  
221 - // }  
222 - // this.group(shareKey, queryObj, opts)  
223 - // .then(ret => this.handleSuccess(opts, shareType, ShareVideoFrom.Share, ret))  
224 - // .catch(err => this.handleFail(opts, shareType, ShareVideoFrom.Share, err));  
225 - // break;  
226 -  
227 - // case ShareVideoType.ShareAysnc: // 异步分享  
228 - // break;  
229 -  
230 - // case ShareVideoType.ShareIntegral: // 分享积分  
231 - // // 是否开启分享积分,且配置为分享积分  
232 - // if (IntegralService.I.IsOpen) {  
233 - // let data = IntegralService.I.convert();  
234 - // if (data) {  
235 - // opts.shareIntegralData = data;  
236 - // this.dispatchType(data.shareType, shareKey, opts, queryObj);  
237 - // } else {  
238 - // // 超过了现在,直接执行失败:今日已达分享上限次数,请明日再来  
239 - // this.handleFail(opts, shareType, ShareVideoFrom.Share, { ...ShareVideoError.ShareOverLimit });  
240 - // }  
241 - // } else {  
242 - // // 如果配置了分享积分,但是未开启开关,则推:无视频则分享  
243 - // this.dispatchType(ShareVideoType.VideoToShare, shareKey, opts, queryObj);  
244 - // }  
245 - // break;  
246 -  
247 - // case ShareVideoType.Video: // 看视频  
248 - // Platform.I.video(shareKey, share_wxad_id)  
249 - // .then(ret => this.handleSuccess(opts, shareType, ShareVideoFrom.Video, ret))  
250 - // .catch((err: any) => this.handleFail(opts, shareType, ShareVideoFrom.Video, err));  
251 - // break;  
252 -  
253 - // case ShareVideoType.VideoToShare: // 无视频则分享  
254 - // if (!share_wxad_id) {  
255 - // this.group(shareKey, queryObj, opts)  
256 - // .then(ret => this.handleSuccess(opts, shareType, ShareVideoFrom.Share, ret))  
257 - // .catch(err => this.handleFail(opts, shareType, ShareVideoFrom.Share, err));  
258 - // return;  
259 - // }  
260 - // Platform.I.video(shareKey, share_wxad_id)  
261 - // .then((ret) => this.handleSuccess(opts, shareType, ShareVideoFrom.Video, ret))  
262 - // .catch((err: any) => {  
263 - // // 拉取视频失败/视频UID不存在/微信版本过低,暂不支持看视频,自动切换到分享  
264 - // let { VideoFail, VideoInvalid, VideoNotOpen } = ShareVideoError;  
265 - // if (err && (err.code === VideoFail.code || err.code === VideoInvalid.code || err.code === VideoNotOpen.code))  
266 - // this.group(shareKey, queryObj, opts)  
267 - // .then(ret => this.handleSuccess(opts, shareType, ShareVideoFrom.Share, ret))  
268 - // .catch(err => this.handleFail(opts, shareType, ShareVideoFrom.Share, err));  
269 - // else  
270 - // this.handleFail(opts, shareType, ShareVideoFrom.Video, err);  
271 - // });  
272 - // break;  
273 -  
274 - // case ShareVideoType.VideoAndShare: // 看视频  
275 - // if (share_wxad_id && opts.type === 1) {  
276 - // Platform.I.video(shareKey, share_wxad_id)  
277 - // .then(ret => this.handleSuccess(opts, shareType, ShareVideoFrom.Video, ret))  
278 - // .catch((err: any) => this.handleFail(opts, shareType, ShareVideoFrom.Video, err));  
279 - // } else {  
280 - // this.group(shareKey, queryObj, opts)  
281 - // .then(ret => this.handleSuccess(opts, shareType, ShareVideoFrom.Share, ret))  
282 - // .catch(err => this.handleFail(opts, shareType, ShareVideoFrom.Share, err));  
283 - // }  
284 - // break;  
285 - // }  
286 - }  
287 -  
288 - shareWithType(shareType: ShareVideoType, shareKey: string, opts: any = {}, queryObj: { [key: string]: number | string } = {}) {  
289 - this.dispatchType(shareType, shareKey, opts, queryObj);  
290 - }  
291 -  
292 /** 126 /**
293 * 分享id 127 * 分享id
294 * @param shareKey 128 * @param shareKey
@@ -309,25 +143,6 @@ export default class ShareVideoService { @@ -309,25 +143,6 @@ export default class ShareVideoService {
309 getShareVideoType(shareKey: string): ShareVideoType { 143 getShareVideoType(shareKey: string): ShareVideoType {
310 let shareData = this.getShareVideoData(shareKey); 144 let shareData = this.getShareVideoData(shareKey);
311 let shareType: ShareVideoType = +shareData.typ; 145 let shareType: ShareVideoType = +shareData.typ;
312 - // // 木有开启分享,直接返回None  
313 - // if (Platform.IsWx && OnlineService.I.getParamsInt(OnlineKeys.ShareUnlock, 1) !== 1)  
314 - // return ShareVideoType.None;  
315 -  
316 - // // 后台配置视频,判断是否加载出错过,出错返回分享,否则直接返回  
317 - // if (shareType === ShareVideoType.Video || shareType === ShareVideoType.VideoAndShare || shareType === ShareVideoType.VideoToShare) {  
318 - // // 检测视频加载失败  
319 - // if (Platform.I.isVideoErrored())  
320 - // return ShareVideoType.Share;  
321 - // else  
322 - // return shareType;  
323 - // }  
324 -  
325 - // // 是否开启分享积分,且配置为分享积分  
326 - // if (shareType === ShareVideoType.ShareIntegral && IntegralService.I.IsOpen) {  
327 - // let data = IntegralService.I.convert();  
328 - // if (data)  
329 - // return data.shareType;  
330 - // }  
331 return shareType; 146 return shareType;
332 } 147 }
333 148
@@ -339,55 +154,6 @@ export default class ShareVideoService { @@ -339,55 +154,6 @@ export default class ShareVideoService {
339 return this.getShareVideoType(shareKey); 154 return this.getShareVideoType(shareKey);
340 } 155 }
341 156
342 - private handleSuccess(opts: any, shareType: ShareVideoType, from: ShareVideoFrom, ret: any) {  
343 - // // 判断分享规则  
344 - // if (IntegralService.I.IsOpen && opts.shareIntegralData && from === ShareVideoFrom.Share) {  
345 - // let shareNum = IntegralService.I.IntegralShareNum;  
346 - // if (shareNum === 0) {  
347 - // // 第1次分享  
348 - // IntegralService.I.setIntegralShareNum();  
349 - // IntegralService.I.resetShareRatio();  
350 - // __LOG__ && console.error(`SDK ShareVideoService 分享积分 第1次分享: 初始来源:${shareType}, 类型:${from}, 分享次数:${shareNum}`);  
351 - // // 设定:第一次强制失败  
352 - // // return this.handleFail(opts, shareType, from, { ...ShareVideoError.ShareRuleFail }, true);  
353 - // } else {  
354 - // // 第n次分享  
355 - // IntegralService.I.setIntegralShareNum();  
356 - // IntegralService.I.addShareRatio();  
357 -  
358 - // let shareRatio = IntegralService.I.ShareRatio;  
359 - // let radomRatio = +Math.random().toFixed(2);  
360 - // __LOG__ && console.error(`SDK ShareVideoService 分享积分 第${shareNum}次分享: 初始来源:${shareType}, 类型:${from}, 分享次数:${shareNum}, 随机概率:${radomRatio}, 失败概率:${shareRatio}`);  
361 - // if (radomRatio <= shareRatio) {  
362 - // __LOG__ && console.error(`SDK ShareVideoService 分享积分 触发失败规则:分享强制失败, radomRatio <= shareRatio: ${radomRatio} <= ${shareRatio}`);  
363 - // return this.handleFail(opts, shareType, from, { ...ShareVideoError.ShareRuleFail }, true);  
364 - // }  
365 - // }  
366 -  
367 - // // 是否同步分享积分数据  
368 - // let { intergral, isAsyncNum } = opts.shareIntegralData;  
369 - // isAsyncNum && LocalService.I.saveVideoOverShareNum(intergral);  
370 - // __LOG__ && isAsyncNum && console.error(`SDK ShareVideoService 分享积分 触发视频看完后,再次分享次数限制更新成功,成功后数量:${LocalService.I.getVideoOverShareNum(intergral)}`);  
371 - // }  
372 -  
373 - // let success = opts.success || function () { };  
374 - // let context = opts.context || this;  
375 - // typeof success === 'function' && success.call(context, from, ret);  
376 - // (from === ShareVideoFrom.Share) && TempService.I.add(TempDataKeys.ShareSuccess, 1);  
377 - }  
378 -  
379 - private handleFail(opts: any, shareType: ShareVideoType, from: ShareVideoFrom, err: any, isFromIntegral?: boolean) {  
380 - // if (err instanceof Error) return;  
381 - // // 判断来自分享积分规则,则重置分享概率  
382 - // if (IntegralService.I.IsOpen && opts.shareIntegralData && from === ShareVideoFrom.Share) {  
383 - // __LOG__ && console.error(`SDK ShareVideoService 强制失败分享,回滚到: ${IntegralService.I.ShareRatioInit}`);  
384 - // IntegralService.I.resetShareRatio();  
385 - // }  
386 - // let fail = opts.fail || function () { };  
387 - // let context = opts.context || this;  
388 - // fail && fail.call(context, from, err);  
389 - }  
390 -  
391 private setShareVideoData(data: any) { 157 private setShareVideoData(data: any) {
392 (data.data || []).forEach((item: any) => { 158 (data.data || []).forEach((item: any) => {
393 this.shareObjs[item.key] = this.shareObjs[item.key] || []; 159 this.shareObjs[item.key] = this.shareObjs[item.key] || [];
@@ -399,10 +165,6 @@ export default class ShareVideoService { @@ -399,10 +165,6 @@ export default class ShareVideoService {
399 let list: Array<ShareData> = this.shareObjs[shareKey]; 165 let list: Array<ShareData> = this.shareObjs[shareKey];
400 if (!list) { 166 if (!list) {
401 list = this.shareObjs.default; 167 list = this.shareObjs.default;
402 - // let shareData: ShareData = CfgManager.I.config.ShareData;  
403 - // if (!shareData) throw new TypeError('SDK ShareVideoService - 请在config.js中配置ShareData');  
404 - // let share_open = shareData.share_wxad_id ? ShareVideoType.Video : ShareVideoType.Share;  
405 - // return { ...shareData, share_id: 99999 + '', share_key: shareKey, share_open };  
406 } 168 }
407 let index = RandomUtils.rand(0, list.length); 169 let index = RandomUtils.rand(0, list.length);
408 return list[index]; 170 return list[index];
wxsdk/share/SDKVideo.ts
@@ -8,6 +8,7 @@ import LogService from &quot;../service/LogService&quot;; @@ -8,6 +8,7 @@ import LogService from &quot;../service/LogService&quot;;
8 export default class SDKVideo { 8 export default class SDKVideo {
9 private _isPlaying: boolean; 9 private _isPlaying: boolean;
10 private _isErrored: boolean; 10 private _isErrored: boolean;
  11 + private _isMultiton: boolean;
11 private resolve: any; 12 private resolve: any;
12 private reject: any; 13 private reject: any;
13 private videoAd: any; 14 private videoAd: any;
@@ -19,6 +20,7 @@ export default class SDKVideo { @@ -19,6 +20,7 @@ export default class SDKVideo {
19 this.videoKey = ''; 20 this.videoKey = '';
20 this._isPlaying = false; 21 this._isPlaying = false;
21 this._isErrored = false; 22 this._isErrored = false;
  23 + this._isMultiton = false;
22 } 24 }
23 25
24 get isErrored() { 26 get isErrored() {
@@ -35,7 +37,7 @@ export default class SDKVideo { @@ -35,7 +37,7 @@ export default class SDKVideo {
35 if (this.preloadVideoAd || this.isPreload) return 37 if (this.preloadVideoAd || this.isPreload) return
36 this.isPreload = true; 38 this.isPreload = true;
37 let ad = wx.createRewardedVideoAd({ 39 let ad = wx.createRewardedVideoAd({
38 - adUnitId 40 + adUnitId,
39 }); 41 });
40 ad.onError(this.preError); 42 ad.onError(this.preError);
41 ad.load().then(this.handleLoaded2).catch(() => { 43 ad.load().then(this.handleLoaded2).catch(() => {
@@ -54,8 +56,6 @@ export default class SDKVideo { @@ -54,8 +56,6 @@ export default class SDKVideo {
54 that.preloadVideoAd = that.videoAd2; 56 that.preloadVideoAd = that.videoAd2;
55 that.isPreload = false 57 that.isPreload = false
56 __LOG__ && console.warn("视频预加载成功", that.preloadVideoAd) 58 __LOG__ && console.warn("视频预加载成功", that.preloadVideoAd)
57 - // that.preloadVideoAd.ttttttt = '111111'  
58 - // console.warn(that.preloadVideoAd.isReady());  
59 } 59 }
60 60
61 offPreload() { 61 offPreload() {
@@ -63,7 +63,14 @@ export default class SDKVideo { @@ -63,7 +63,14 @@ export default class SDKVideo {
63 that.preloadVideoAd.offError(that.preError); 63 that.preloadVideoAd.offError(that.preError);
64 } 64 }
65 65
66 - async show(videoKey: string, adUnitId: string): Promise<any> { 66 + /**
  67 + *
  68 + * @param videoKey
  69 + * @param adUnitId
  70 + * @param multiton 多例
  71 + * @returns
  72 + */
  73 + async show(videoKey: string, adUnitId: string, multiton: boolean = false): Promise<any> {
67 return new Promise(async (resolve, reject) => { 74 return new Promise(async (resolve, reject) => {
68 if (this.isPlaying) 75 if (this.isPlaying)
69 return reject({ ...ShareVideoError.VideoPlaying }); 76 return reject({ ...ShareVideoError.VideoPlaying });
@@ -72,26 +79,23 @@ export default class SDKVideo { @@ -72,26 +79,23 @@ export default class SDKVideo {
72 return reject({ ...ShareVideoError.VideoInvalid }); 79 return reject({ ...ShareVideoError.VideoInvalid });
73 80
74 LogService.I.adStat(videoKey, this.adUnitId, DOT_AD_TYPE.video, DOT_AD_STATUS.request); 81 LogService.I.adStat(videoKey, this.adUnitId, DOT_AD_TYPE.video, DOT_AD_STATUS.request);
75 - let videoAd  
76 - let hasVideo  
77 - if (this.preloadVideoAd) { 82 + let videoAd;
  83 + let hasVideo;
  84 + if (this.preloadVideoAd && !multiton) {
78 __LOG__ && console.log("使用预加载视频", this.preloadVideoAd) 85 __LOG__ && console.log("使用预加载视频", this.preloadVideoAd)
79 hasVideo = true 86 hasVideo = true
80 - this.offPreload() 87 + this.offPreload();
81 videoAd = this.preloadVideoAd; 88 videoAd = this.preloadVideoAd;
82 - this.preloadVideoAd = null;  
83 - // this.preloadVideo(adUnitId);  
84 } else { 89 } else {
85 __LOG__ && console.log("不使用预加载视频") 90 __LOG__ && console.log("不使用预加载视频")
86 - hasVideo = false 91 + hasVideo = false;
87 videoAd = wx.createRewardedVideoAd({ 92 videoAd = wx.createRewardedVideoAd({
88 - adUnitId 93 + adUnitId,
  94 + multiton: true
89 }); 95 });
90 // this.preloadVideo(adUnitId); 96 // this.preloadVideo(adUnitId);
91 } 97 }
92 - // let videoAd = wx.createRewardedVideoAd({  
93 - // adUnitId  
94 - // }); 98 + this._isMultiton = !hasVideo;
95 if (!videoAd) 99 if (!videoAd)
96 return reject({ ...ShareVideoError.VideoNotOpen }); 100 return reject({ ...ShareVideoError.VideoNotOpen });
97 101
@@ -101,7 +105,6 @@ export default class SDKVideo { @@ -101,7 +105,6 @@ export default class SDKVideo {
101 this.adUnitId = adUnitId; 105 this.adUnitId = adUnitId;
102 this.resolve = resolve; 106 this.resolve = resolve;
103 this.reject = reject; 107 this.reject = reject;
104 -  
105 this.videoAd = videoAd; 108 this.videoAd = videoAd;
106 videoAd.onClose(this.handleClose); 109 videoAd.onClose(this.handleClose);
107 videoAd.onError(this.onError); 110 videoAd.onError(this.onError);
@@ -123,7 +126,6 @@ export default class SDKVideo { @@ -123,7 +126,6 @@ export default class SDKVideo {
123 } 126 }
124 127
125 } 128 }
126 - this.preloadVideo(adUnitId);  
127 __LOG__ && console.warn('====> PCSDK WxVideo 请求视频adUnitId', adUnitId); 129 __LOG__ && console.warn('====> PCSDK WxVideo 请求视频adUnitId', adUnitId);
128 }); 130 });
129 } 131 }
@@ -140,8 +142,8 @@ export default class SDKVideo { @@ -140,8 +142,8 @@ export default class SDKVideo {
140 // __LOG__ && console.warn("handleLoaded2", that.videoAd, that.videoAd.isReady()); 142 // __LOG__ && console.warn("handleLoaded2", that.videoAd, that.videoAd.isReady());
141 LogService.I.adStat(this.videoKey, this.adUnitId, DOT_AD_TYPE.video, DOT_AD_STATUS.show) 143 LogService.I.adStat(this.videoKey, this.adUnitId, DOT_AD_TYPE.video, DOT_AD_STATUS.show)
142 144
143 - if (cc.sys.platform === cc.sys.WECHAT_GAME && typeof qq == 'undefined') {  
144 - if (that.videoAd.isReady()) {//抖音、qq 没有 isReady 145 + if (cc.sys.platform === cc.sys.WECHAT_GAME) {
  146 + if (that.videoAd.isReady()) {//抖音没有 isReady
145 that.show_time = Date.now(); 147 that.show_time = Date.now();
146 await that.videoAd.show(); 148 await that.videoAd.show();
147 } else { 149 } else {
@@ -178,6 +180,15 @@ export default class SDKVideo { @@ -178,6 +180,15 @@ export default class SDKVideo {
178 that.reject && that.reject({ ...ShareVideoError.VideoQuit }); 180 that.reject && that.reject({ ...ShareVideoError.VideoQuit });
179 } 181 }
180 that.videoAd.offClose(that.handleClose); 182 that.videoAd.offClose(that.handleClose);
  183 + if (that._isMultiton) {
  184 + that.videoAd.destroy();
  185 + that.videoAd = null;
  186 + }
  187 + // if (that.preloadVideoAd) {
  188 + // that.preloadVideoAd.destroy();
  189 + // that.preloadVideoAd = null;
  190 + // }
  191 + that.preloadVideo(that.adUnitId);
181 that._isPlaying = false; 192 that._isPlaying = false;
182 that._isErrored = false; 193 that._isErrored = false;
183 } 194 }