做微信小游戏的转发与分享,会牵扯到平台之间的数据调用,那个就要用到egret wing里的Platform.ts文件(平台数据接口)
/**
* 平台数据接口。
* 由于每款游戏通常需要发布到多个平台上,所以提取出一个统一的接口用于开发者获取平台数据信息
* 推荐开发者通过这种方式封装平台逻辑,以保证整体结构的稳定
* 由于不同平台的接口形式各有不同,白鹭推荐开发者将所有接口封装为基于 Promise 的异步形式
*/
转发:
参考微信小游戏开发API:https://developers.weixin.qq.com/minigame/dev/tutorial/open-ability/share.html
点击右上角按钮,会弹出菜单,菜单中的“转发”选项默认不展示。通过 wx.showShareMenu() 和 wx.hideShareMenu() 可动态显示、隐藏这个选项。
首先在Platform.ts声明转发方法,并在DebugPlatform中异步实现,这里只是声明这个方法,根据自己的具体要求在不同的类中调用此方法,具体实现要在微信开发者Platfor.js文件中,咱们一一介绍。
声明与调用转发方法:(这里只是一个空架子没有实体意义)
declare interface Platform {
getUserInfo(): Promise<any>;
login(): Promise<any>
//转发菜单
showShareMenu(): Promise<any>;
}
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: ""
})
})
}
大功告成,转发和分享这样就做好了。