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

Stella981
• 阅读 562

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

方法一:

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

/** 
 * 平台数据接口。
 * 由于每款游戏通常需要发布到多个平台上,所以提取出一个统一的接口用于开发者获取平台数据信息
 * 推荐开发者通过这种方式封装平台逻辑,以保证整体结构的稳定
 * 由于不同平台的接口形式各有不同,白鹭推荐开发者将所有接口封装为基于 Promise 的异步形式
 */
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() {
    }
    
}
if (!window.platform) {
    window.platform = new DebugPlatform();
}
declare let platform: Platform;

declare interface Window {

    platform: Platform
}

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

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

private async runGame() {
        await this.loadResource()
        this.createGameScene();
        // const result = await RES.getResAsync("description_json")
        // this.startAnimation(result);
        await platform.login();
        const userInfo = await platform.getUserInfo();
        console.log(userInfo);
        await platform.showShareMenu();
    }

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

 3.打包成微信小游戏

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

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

  showShareMenu() {
    return new Promise((resolve, reject) => {
      wx.showShareMenu({
        withShareTicket: true
      })
      wx.onShareAppMessage(function callback(res){
        return {
          title: '被动分享',
          imageUrl: "resource/assets/bg.jpg",
          success: (res) => {
            console.log("转发成功", res);
          },
          fail: (res) => {
            console.log("转发失败", res)
          },
        }
      })
    })
  }shareAppMessage() {
    return new Promise((resolve, reject) => {
      wx.shareAppMessage({
          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); }, }) }) }

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

参数可根据实际情况写。

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

platform.js主动分享代码:

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

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

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

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

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

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

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

 方法二:

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

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

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

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

 1 class WxShare {
 2     /**
 3      * 设置默认分享
 4      */
 5     public static setDefaultShare() {
 6         console.log('set_default_share');
 7         wx.showShareMenu({
 8             withShareTicket: true,
 9             success: (res) => { console.log('setting_success'); console.log(res); },
10             fail: (err) => { console.warn(err) }
11         });
12         wx.onShareAppMessage(function () {
13             return {
14                 title: GameConfig.getShareTitle() || '',
15                 imageUrl: GameConfig.getShareImg() || ''
16             }
17         });
18     }
19 
20     /**
21      *主动分享
22      */
23     public static async shareGame(type?: string, title?: string, imageUrl?: string) {
24         // 不传type时,默认为普通分享
25         type || (type = 'normalShare');
26         // 不传title时,为默认title
27         title || (title = GameConfig.getShareTitle());
28         // 不传imageUrl时,为默认image
29         imageUrl || (imageUrl = GameConfig.getShareImg());
30 
31         return new Promise((resolve, reject) => {
32             wx.shareAppMessage({
33                 title: title,
34                 imageUrl: imageUrl,
35                 query: "a=1&b=2",
36                 success: res => {
37                     resolve(res);
38                     console.log('主动分享成功');
39                 },
40                 fail: (err) => { resolve(null); }
41             })
42         })
43     }
44 }

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

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

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

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

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

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

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

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

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

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
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
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
梦
3年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Easter79 Easter79
2年前
thinkcmf+jsapi 实现微信支付
首先从小程序端接收订单号、金额等参数,然后后台进行统一下单,把微信支付的订单号返回,在把订单号发送给前台,前台拉起支付,返回参数后更改支付状态。。。回调publicfunctionnotify(){$wechatDb::name('wechat')where('status',1)find();
Easter79 Easter79
2年前
Taro小程序自定义顶部导航栏
微信自带的顶部导航栏是无法支持自定义icon和增加元素的,在开发小程序的时候自带的根本满足不了需求,分享一个封装好的组件,支持自定义icon、扩展dom,适配安卓、ios、h5,全面屏。我用的是京东的Taro多端编译框架写的小程序,原生的也可以适用,用到的微信/taro的api做调整就行,实现效果如下。!在这里插入图片描述(https://i
Stella981 Stella981
2年前
Protobuf在微信小游戏开发中的使用技巧
微信小游戏发布后,许多HTML5游戏开发者希望把现有的HTML5游戏迁移到微信小游戏中,但由于一些技术上的问题导致进程卡壳。通过梳理Egret社区、白鹭小游戏开发技术讨论群等途径的反馈后发现,有不少开发者遇到的难题在于「如何在微信小游戏中使用Protobuf」。白鹭引擎架构师王泽在近期发布了一个开源项目protobufegret,提供了一个可
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这