Egret微信小游戏转发与分享

做微信小游戏的转发与分享,会牵扯到平台之间的数据调用,那个就要用到egret wing里的Platform.ts文件(平台数据接口)

/** 
 * 平台数据接口。
 * 由于每款游戏通常需要发布到多个平台上,所以提取出一个统一的接口用于开发者获取平台数据信息
 * 推荐开发者通过这种方式封装平台逻辑,以保证整体结构的稳定
 * 由于不同平台的接口形式各有不同,白鹭推荐开发者将所有接口封装为基于 Promise 的异步形式
 */

转发:

参考微信小游戏开发API:https://developers.weixin.qq.com/minigame/dev/tutorial/open-ability/share.html

Egret微信小游戏转发与分享_第1张图片

点击右上角按钮,会弹出菜单,菜单中的“转发”选项默认不展示。通过 wx.showShareMenu() 和 wx.hideShareMenu() 可动态显示、隐藏这个选项。

首先在Platform.ts声明转发方法,并在DebugPlatform中异步实现,这里只是声明这个方法,根据自己的具体要求在不同的类中调用此方法,具体实现要在微信开发者Platfor.js文件中,咱们一一介绍。

声明与调用转发方法:(这里只是一个空架子没有实体意义)

declare interface Platform {
    getUserInfo(): Promise;
    login(): Promise
    //转发菜单
    showShareMenu(): Promise;
}
class DebugPlatform implements Platform {
    async getUserInfo() {
        return { nickName: "username" }
    }
    async login() {

    }
    //被动分享
    async showShareMenu() {

    }
}

在Main.ts中调用

 private async runGame() {
        //转发分享
       await platform.showShareMenu();


    }

发布微信小游戏,在wing终端输入egret run --target wxgame

打开微信开发者工具里的Platform.js文件,你会发现此文件夹和wing中的Platform.ts文件里的方法一一对应,现在只需要实现刚才声明的方法就可以了

showShareMenu() {
      return new Promise((resolve, reject)=>{
        wx.showShareMenu({
          withShareTicket:true
        })
        wx.onShareAppMessage(function(){
          return{
            title: '我是被动转发转发',
            imageUrl: "resource/assets/test.jpg"
          }
        })
      }) 
    }

点击右上角按钮,会弹出菜单,点击菜单中的“转发”就可以转发啦。大功告成。

分享

与转发类似,你只需要在wing调用的时候给一个按钮事件去调用这个方法

//主动分享按钮事件
    private share() {
        console.log("分享");
        platform.shareAppMessage();
    }

Platform.ts中

//主动发送,按钮触发
    shareAppMessage() {
      return new Promise((resolve,reject)=>{
        wx.shareAppMessage({
          title:"我要转发",
          imageUrl: "http://pic.qiantucdn.com/58pic/22/06/55/57b2d98e109c6_1024.jpg!/fw/1024/watermark/url/L2ltYWdlcy93YXRlcm1hcmsvZGF0dS5wbmc=/repeat/true/crop/0x1024a0a0",
          query: ""
        })
      })
    }

大功告成,转发和分享这样就做好了。

你可能感兴趣的:(Egret微信小游戏转发与分享)