123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451 |
- import { GameConst } from "../core/common/GameConst";
- import Utils from "../core/utils/Utils";
- const WX_CONFIG = {
- AD_ID: {
- /** banner广告 */
- banner: 'adunit-fa7b08ac6d8cf200',
- /** 视频广告 */
- video: 'adunit-29b5f0955ee77f59',
- /** 插屏广告 */
- interstitial: 'adunit-a3615ebe31eba64a',
- /** 原生模板多个格子广告 */
- multiGridCustom: 'adunit-xxx',
- /** 原生模版单格格子广告 */
- sigleGridCustom: 'adunit-d4f43001efd879de',
- }
- }
- const delayTime: number = 1900;
- class PlatformWX {
- private _onHideTime: number = Infinity;
- private _rewardVideo: wx.RewardedVideoAd;
- private _bannerAd: wx.BannerAd;
- private _interstitialAd: any;
- private _customAd: any;
- private _sigleCustomAd: any;
- private _shareSuccessHandler: Function = null;
- private _videoSuccessHandler: Function = null;
- private _customAdCloseHandler: Function = null;
- private _showInterstitialAdTime: number = null;
- private _shareModalIsActive: boolean = false;
- private _shareStr: string = "东北F4来到美国西部拓荒时代,保卫城镇,完成自我救赎。";
- public initialize(): void {
- console.log("初始化微信框架");
- wx.showShareMenu({
- withShareTicket: true,
- menus: ['shareAppMessage', 'shareTimeline'],
- success: () => { },
- fail: () => { },
- complete: () => { }
- });
- //发送给朋友
- wx.onShareAppMessage(function(){
- wx.shareAppMessage({
- imageUrl: "share.jpg",
- title: this._shareStr,
- query: 'shareMsg='+'a=1',
- });
- }.bind(this));
- wx.onShow((res: {
- scene: string;
- query: any;
- shareTicket: string;
- referrerInfo: wx.ReferrerInfo;
- }) => {
- if (this._shareSuccessHandler == null) return;
- if (this._shareModalIsActive) return;
- if (Date.now() - this._onHideTime >= delayTime) {
- if (this._shareSuccessHandler) this._shareSuccessHandler(true);
- } else {
- wx.showModal({
- title: '分享提示',
- content: '成功分享到群即可获得奖励',
- success: (res) => {
- if (res.confirm) {
- this.shareShowReward(this._shareSuccessHandler(false));
- } else if (res.cancel) {
- this._shareSuccessHandler = null;
- }
- this._shareModalIsActive = false;
- }
- });
- this._shareModalIsActive = true;
- }
- this._onHideTime = Infinity;
- });
- //this.__createBannerAd();
- this.__createVideoAd();
- //this.__createCustomAd();
- //this.__createSigleCustomAd();
- //this.__createInterstitialAd();
- //this.__customAdExist();
- //this.__customSigleAdExist();
- }
- public showToast(param: { title: string, icon?: 'success' | 'loading' | 'none', image?: string, duration?: number, mask?: boolean, success?: (res?: any) => void, fail?: (res?: any) => void, complete?: (res?: any) => void }): void {
- let finalParam = {
- title: '',
- icon: 'none',
- duration: 2000,
- } as any;
- Object.assign(finalParam, param);
- wx.showToast(finalParam);
- }
- public shareAppMessage(param: { title?: string, imageUrl?: string, query?: string, imageUrlId?: string } = {}): void {
- wx.shareAppMessage(param);
- }
- public vibrateShort(param: any = {}): void {
- wx.vibrateShort(param);
- }
- public vibrateLong(param: any = {}): void {
- wx.vibrateLong(param);
- }
- /**
- * 是否支持添加桌面
- * @returns
- */
- public isSupportDesk(){
- //@ts-ignore
- if (wx.canAddToFavorites) {
- return true;
- }else{
- return false;
- }
- }
-
- //添加到桌面
- public addDesk(){
- //@ts-ignore
- if (wx.canAddToFavorites) {
- //@ts-ignore
- wx.canAddToFavorites({
- success(res) {
- if (res.canAdd) {
- //可以添加到桌面
- //@ts-ignore
- wx.addToFavorites({
- // 小程序的相关信息
- title: GameConst.gameName,
- query: '', // 可以携带参数
- success() {
- this.showToast({title: '添加到桌面成功'});
- },
- fail(err) {
- this.showToast({title: '添加到桌面失败', err});
- }
- });
- } else {
- // 不支持添加到桌面
- this.showToast({title: '当前环境不支持添加到桌面'});
- }
- },
- fail(err) {
- this.showToast({title: '检查添加到桌面权限失败', err});
- }
- });
- } else {
- this.showToast({title: "当前环境不支持添加到桌面"});
- }
- }
- //分享
- public shareShowReward(handler: Function = null): void {
- if(handler){
- this._shareSuccessHandler = handler;
- }
- this._onHideTime = Date.now();
- this.shareAppMessage({
- imageUrl: "share.jpg",
- title: this._shareStr,
- query: 'shareMsg='+'a=1',
- });
- }
- public showRewardVideo(handler: Function = null): void {
- //console.log('当日视频次数: ', ArchiveSystem.localData.videoRewardTimesToday);
- /*if (ArchiveSystem.localData.videoRewardTimesToday % 2 === 1) {
- cc.log(ArchiveSystem.localData.videoRewardTimesToday, '转为分享');
- this.__turnVideoToShare(handler);
- return;
- }*/
- if (!this._rewardVideo) {
- this.__turnVideoToShare(handler);
- return;
- }
- this._videoSuccessHandler = handler;
- this._rewardVideo
- .show()
- .then(() => {
- console.log("视频播放成功");
- })
- .catch(err => {
- this._rewardVideo.load()
- .then(() => {
- this._rewardVideo
- .show()
- .then(() => {
- console.log("视频重新加载,播放成功");
- });
- })
- .catch(err2 => {
- this._videoSuccessHandler?.(false);
- this.shareShowReward(handler);
- this._videoSuccessHandler = null;
- });
- });
- }
- public showBannerAd(): void {
- if (!this._bannerAd) return;
- const { screenWidth, screenHeight } = wx.getSystemInfoSync();
- this._bannerAd.show()
- .then(() => {
- this._bannerAd.style.left = (screenWidth - this._bannerAd.style.realWidth) / 2;
- this._bannerAd.style.top = screenHeight - this._bannerAd.style.realHeight;
- }).catch((e: any) => {
- console.log('banner广告显示出错', e);
- });
- }
- public hideBannerAd(recreate: boolean = false): void {
- if (!this._bannerAd) return;
- this._bannerAd.hide();
- if (recreate) {
- this.refreshBannerAd();
- }
- }
- public refreshBannerAd(): void {
- if (!this._bannerAd) return;
- this._bannerAd.destroy();
- this.__createBannerAd();
- }
- public showInterstitialAd(force: boolean = false): void {
- if(force){
- if (!this._interstitialAd) return;
- this._interstitialAd.show();
- }else{
- if (!this._interstitialAd) return;
- let timeNow = Date.now();
- if (this._showInterstitialAdTime == null) {
- this._showInterstitialAdTime = timeNow;
- return;
- }
- if (timeNow - this._showInterstitialAdTime > 120 * 1000) {
- this._interstitialAd.show();
- this._showInterstitialAdTime = timeNow;
- }
- }
- }
- public showCustomAd(close: Function): void {
- if (!this._customAd) return;
- this._customAdCloseHandler = close;
- this._customAd
- .show()
- .catch((e: any) => {
- console.log('原生广告显示出错', e);
- });
- }
- public hideCustomAd(): void {
- if (!this._customAd) return;
- this._customAd
- .hide()
- .catch((e: any) => {
- console.log('原生广告隐藏出错', e);
- });
- }
- public showSigleCustomAd(): void {
- if (!this._sigleCustomAd
- || false) return;
- this._sigleCustomAd
- .show()
- .catch((e: any) => {
- console.log('原生当个格子广告显示出错', e);
- });
- }
- public hideSigleCustomAd(): void {
- if (!this._sigleCustomAd
- || false) return;
- this._sigleCustomAd
- .hide()
- .catch((e: any) => {
- console.log('隐藏单个格子广告出错', e);
- });
- }
-
- /**单个格子广告*/
- public __customSigleAdExist(): void {
- if(!this._sigleCustomAd){
- this.__createSigleCustomAd();
- }
- this._sigleCustomAd.show()
- .then(() => {
- if(this._sigleCustomAd.isShow()){
- this.hideSigleCustomAd();
- }
- })
- .catch((res) => {
- if(this._sigleCustomAd.isShow()){
- this.hideSigleCustomAd();
- }
- });
- }
- /**多个格子广告*/
- public __customAdExist(): void {
- if(!this._customAd){
- this.__createCustomAd();
- }
- this._customAd.show()
- .then(() => {
- if(this._customAd.isShow()){
- this.hideCustomAd();
- }
- })
- .catch((res) => {
- if(this._customAd.isShow()){
- this.hideCustomAd();
- }
- });
- }
- public exitGame(): void {
- wx.exitMiniProgram({});
- }
- private __createVideoAd(): void {
- if (!WX_CONFIG.AD_ID.video) return;
- this._rewardVideo = wx.createRewardedVideoAd({ adUnitId: WX_CONFIG.AD_ID.video });
- // 注册视频的onClose事件
- this._rewardVideo.onClose(res => {
- if (res && res.isEnded || res === undefined) {
- this._videoSuccessHandler?.(true);
- } else {
- this.showToast({
- title: "完整观看视频才有奖励哦"
- });
- this._videoSuccessHandler?.(false);
- }
- this._videoSuccessHandler = null;
- });
- // 注册视频的onError事件
- this._rewardVideo.onError(res => {
- this._videoSuccessHandler?.(false);
- this.showToast({
- title: "暂时没有可观看的视频"
- });
- this.shareShowReward(this._videoSuccessHandler);
- this._videoSuccessHandler = null;
- });
- }
- private __createBannerAd(): void {
- if (!WX_CONFIG.AD_ID.banner) return;
- let info = wx.getSystemInfoSync();
- let f = Utils.isNormalScreen();
- let w = f ? info.screenWidth * 0.85 : info.screenWidth * 0.85;
- this._bannerAd = wx.createBannerAd({
- adUnitId: WX_CONFIG.AD_ID.banner,
- adIntervals: 48,
- style: {
- left: 0,
- top: info.screenHeight,
- width: w,
- height: 70 //w * (f ? 0.48 : 0.5) //原始0
- }
- });
- this._bannerAd.onError(err => {
- switch (err.errCode) {
- case 1001: {
- break;
- }
- case 1004: {
- break;
- }
- }
- });
- this._bannerAd.onResize(() => {});
- }
- private __createInterstitialAd(): void {
- if (!WX_CONFIG.AD_ID.interstitial) return;
- this._interstitialAd = wx.createInterstitialAd({ adUnitId: WX_CONFIG.AD_ID.interstitial });
- }
- private __createCustomAd(): void {
- if (!WX_CONFIG.AD_ID.multiGridCustom) return;
- let info = wx.getSystemInfoSync();
- this._customAd = wx.createCustomAd({
- adUnitId: WX_CONFIG.AD_ID.multiGridCustom,
- adIntervals: 60,
- style: {
- left: 0,
- top: info.screenHeight * 0.16,
- with: info.screenWidth * 0.9
- }
- });
- if(this._customAd){
- this._customAd.onHide(res => {
- if(this._customAdCloseHandler){this._customAdCloseHandler()};
- });
- this._customAd.onError(err => {
- switch (err.errCode) {
- case 1001: {
-
- break;
- }
-
- case 1004: {
-
- break;
- }
- }
- });
- }
- }
- private __createSigleCustomAd(): void {
- if (!WX_CONFIG.AD_ID.sigleGridCustom) return;
- let info = wx.getSystemInfoSync();
- let f = Utils.isNormalScreen();
- this._sigleCustomAd = wx.createCustomAd({
- adUnitId: WX_CONFIG.AD_ID.sigleGridCustom,
- adIntervals: 60,
- style: {
- left: info.screenWidth * 0.49,
- top: info.screenHeight * 0.038 + (f ? 20 : 35)
- }
- });
- this._sigleCustomAd.onError(err => {
- console.log('展示格子广告失败1');
- });
- }
- private __turnVideoToShare(handler: Function): void {
- this.shareShowReward(handler);
- this._videoSuccessHandler = null;
- }
- }
- export default new PlatformWX();
|