Egret白鹭开发微信小游戏分享功能

今天给大家分享一下微信分享转发功能,话不多说,直接干

方法一:

1.在egret中打开Platfrom.ts文件,添加代码如下(当然,你也可以直接复制粘贴)

1/** 2 * 平台数据接口。 3 * 由于每款游戏通常需要发布到多个平台上,所以提取出一个统一的接口用于开发者获取平台数据信息 4 * 推荐开发者通过这种方式封装平台逻辑,以保证整体结构的稳定 5 * 由于不同平台的接口形式各有不同,白鹭推荐开发者将所有接口封装为基于 Promise 的异步形式 6 */ 7declare interface Platform { 8 9 getUserInfo(): Promise<any>; 10 11 login(): Promise<any>; 12 //转发菜单 13 showShareMenu(): Promise<any>; 14 15} 16 17class DebugPlatform implements Platform { 18 async getUserInfo() { 19 return { nickName: "username" } 20 } 21 async login() { 22 } 23 //被动分享 24 async showShareMenu() { 25 } 26 27} 28if (!window.platform) { 29 window.platform = new DebugPlatform(); 30} 31declare let platform: Platform; 32 33declare interface Window { 34 35 platform: Platform 36}

2.在Main.ts中调用Platfrom.ts新增加的方法

1private async runGame() { 2 await this.loadResource() 3 this.createGameScene(); 4 // const result = await RES.getResAsync("description_json") 5 // this.startAnimation(result); 6 await platform.login(); 7 const userInfo = await platform.getUserInfo(); 8 console.log(userInfo); 9 await platform.showShareMenu(); 10 }

 3.打包成微信小游戏

4.使用微信开发者工具打开微信小游戏项目,打开platfrom.js,添加代码

1 showShareMenu() { 2 return new Promise((resolve, reject) => { 3 wx.showShareMenu({ 4 withShareTicket: true 5 }) 6 wx.onShareAppMessage(function callback(res){ 7 return { 8 title: '被动分享', 9 imageUrl: "resource/assets/bg.jpg", 10 success: (res) => { 11 console.log("转发成功", res); 12 }, 13 fail: (res) => { 14 console.log("转发失败", res) 15 }, 16 } 17 }) 18 }) 19 }shareAppMessage() { 20 return new Promise((resolve, reject) => { 21 wx.shareAppMessage({ 22 title: '主动分享', imageUrl: "http://www.9665.com/uploadfile/2017/0717/20170717043846826.png", query: "a=1&b=2&c=3&d=4", success: (res) => { console.log("转发成功", res); resolve(res); }, fail: (err) => { console.log("转发失败", err) reject(err); }, }) }) }

参数可根据实际情况写。

其他分享API同理,API及参数详见https://developers.weixin.qq.com/minigame/dev/document/share/wx.getShareInfo.html

platform.js主动分享代码:

注意:主动分享功能可能在微信开发工具上不体现,因此,博主建议在手机上预览。

下面介绍一个分享成功后显示传入参数的方法

在打开微信开发工具,在game.js中添加代码如下:

1wx.onShow((option) => { 2 console.log(option); 3})

 在手机上预览,进行被动转发,从分享链接打开分享的小游戏,在控制台可以查看到传入的参数如下:

 方法二:

(1)添加微信ts库文件,并放在egret指定位置(没有的朋友可以点击右侧加群下载):

(2)在egret中新建脚本,并添加分享方法,效果如下:

1 1 class WxShare { 2 2 /** 3 3 * 设置默认分享 4 4 */ 5 5 public static setDefaultShare() { 6 6 console.log('set_default_share'); 7 7 wx.showShareMenu({ 8 8 withShareTicket: true, 9 9 success: (res) => { console.log('setting_success'); console.log(res); }, 1010 fail: (err) => { console.warn(err) } 1111 }); 1212 wx.onShareAppMessage(function () { 1313 return { 1414 title: GameConfig.getShareTitle() || '', 1515 imageUrl: GameConfig.getShareImg() || '' 1616 } 1717 }); 1818 } 1919 2020 /** 2121 *主动分享 2222 */ 2323 public static async shareGame(type?: string, title?: string, imageUrl?: string) { 2424 // 不传type时,默认为普通分享 2525 type || (type = 'normalShare'); 2626 // 不传title时,为默认title 2727 title || (title = GameConfig.getShareTitle()); 2828 // 不传imageUrl时,为默认image 2929 imageUrl || (imageUrl = GameConfig.getShareImg()); 3030 3131 return new Promise((resolve, reject) => { 3232 wx.shareAppMessage({ 3333 title: title, 3434 imageUrl: imageUrl, 3535 query: "a=1&b=2", 3636 success: res => { 3737 resolve(res); 3838 console.log('主动分享成功'); 3939 }, 4040 fail: (err) => { resolve(null); } 4141 }) 4242 }) 4343 } 4444 }

(3)在main.ts中调用被动分享:

1// 设置默认分享 2WxShare.setDefaultShare();

(4)自定义主动分享按钮,添加监听事件(绿框里面的内容可根据实际情况填写):

 (5)在main.ts的返回前台时进行主动分享的输出,以获取分享成功时主动分享方法传出的query参数:

注意:在这个时候,你如果直接粘贴代码或许会出现下面错误:

这个时候我们的解决办法是跳转到onShow函数,去为这个函数添加一个形参,如res等。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )