1、配置小程序页面静态转发信息

  关于小程序转发问题,文档

  在 page 页面填加了该监听函数,会在小程序右上角 ... 菜单中显示“转发”按钮;

  监听函数需要 return {} 其中的内容配置转发信息;

 onShareAppMessage: function (res) {
return {
title: `${this.data.data.column_share_title}`,
path: `/pages/column/column?id=${this.data.data.id}`,
   // imageUrl: this.data.data.author_header,
success: res => {
wx.reportAnalytics('foward_column_success', { column_id: this.data.data.id, column_name: this.data.data.column_title })
// 分享赠书
if (this.data.data.is_shareget) {
this.setData({ ifShared : true })
if (!this.data.data.had_sub) this.getBookData()
}
},
fail: res => {
}
}

2、动态配置分享图

注意,这是静态的转发信息配置,其中的 imageUrl 指转发配图,自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径,支持PNG及JPG,不传入 imageUrl 则使用默认截图。显示图片长宽比是 5:4

  

如果需求场景是,在不同的状态下,呈现自定义图片,这样就用到了两个知识点:(1)小程序 canvas 绘制转发图 (2)通过 wx.hideShareMenu(OBJECT) wx.showShareMenu(OBJECT) 控制转发按钮的显示与隐藏;达到的效果是,用户进入页面,在canvas绘制好转发小图之后,再显示转发按钮,转发图上的文字,根据业务场景的需求动态显示;

 const painter = require('./painter')

 page({
data: {
user: {}
},
shareimgpath: '', // 分享小图临时路径
onShow: function () {
getApp().login().then(data => { // 确保登陆的前提下家在数据
this.setData({ user: data || {} })
this.requestData()
})
},
requestData () {
wx.hideShareMenu() // 先关闭按钮的显示
painter.draw('share-canvas-id',{
parame1: '1234', // 传入的动态参数
parame2: 'asdf'
})
.then(data => {
this.shareimgpath = data
       wx.showShareMenu() // 分享小图绘制好之后,再打开分享按钮
}
.catch(err => { })
}
})

外部的功能模块 painter.js 专门用来绘制分享小图

 // painter.js
module.export = {
/**
* data.parame1 ....
* data.parame2 ....
*/
draw (canasId, data) {
var ctx = wx.createCanvasContext(canasId)
var bg_url = 'https://static001.geekbang.org/resource/image/3b/db/3bc3ad3e72aa19a2521c17cf1e5aa8db.png'
return new Promise((resolve, reject) => {
wx.downloadFile({
url: bg_url,
success: res => {
if (res.statusCode === 200) {
ctx.beginPath()
ctx.drawImage(res.tempFilePath, 0, 0, 500, 400) // 画 背景
ctx.setTextAlign('center')
// ,,,,,,,
ctx.draw(true, () => {
wx.canvasToTempFilePath({
canvasId: canvasId,
success: res => {
resolve(res.tempFilePath)
},
fail: err => {
reject(err)
}
})
})
}
})
}
}

微信小程序 | 小程序的转发问题的更多相关文章

  1. 微信小程序之分享或转发功能(自定义button样式)

    小程序页面内发起转发 通过给 button 组件设置属性open-type="share",可以在用户点击按钮后触发 Page.onShareAppMessage 事件,如果当前页 ...

  2. 微信小程序即将开放申请?微信小论坛小程序专场16日或可见分晓

    9月22号微信小程序内测至今已经好一段时间了,首批只开放了200个名额,没拿到内测资格的朋友早就等到心急了.就在刚刚,微信公开课宣布微信小论坛小程序专场即将在11月16号举行,微信公众平台小程序会在当 ...

  3. 如何获取微信小店小程序的AppID

    2017年11月16日,微信有一个重磅的宣布:为了帮商家在微信内快速开店,方便商家和用户之间沟通,所有认证公众号,可快速创建微信小店小程序.这个改变是否能给微信小店带来新的生机?还需要时间的考验.微信 ...

  4. TP3.2校验微信公众号||小程序 服务器地址

    1.在TP3.2里面,写一个控制器,用来校验微信公众号||小程序的服务器地址 <?php namespace Home\Controller; use Think\Controller; hea ...

  5. 微信小游戏 小程序与小游戏获取用户信息接口调整 wx.createUserInfoButton

    参考: 小程序•小故事(6)——微信登录能力优化 小程序•小故事(4)——获取用户信息 本篇主要是讲微信getUserInfo接口不再出现授权弹框 那么原来getUserInfo是怎么样?修改之后又是 ...

  6. 微信小程序-03-小程序开发框架

    微信小程序-03-小程序开发框架 官方文档: https://developers.weixin.qq.com/miniprogram/dev/framework/MINA.html 小程序开发框架 ...

  7. 微信小程序再次升级:卖货小店小程序不用开发也能进行交易

    卖货小店小程序,不用开发一行代码也能帮商家实现交易功能,这个真是几家欢喜几家愁啊,对于开发小程序商城的公司来说,这个无疑是一个雷霆之际,第一反应就是,这下完了,小程序自身就支持交易,那还要我们这些第三 ...

  8. 头脑王者pk答题小程序开发思路 微信pk答题小程序开发 PK答题游戏你也可以做 微信pk答题游戏

    想必大家最近的朋友圈和微信群里都被头脑王者PK答题刷屏了吧.确实很好玩,尤其是2018年的这波风口,手机答题,大家掏出手机,创建一个好友PK,然后你的好友点击进来就可以和你一起PK答题.比之前的游戏好 ...

  9. .NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?

    前言 获取UnionID是开发微信公众号/小程序中很有必要的一个环节,特别是针对一个公司拥有多个公众号小程序而推出的机制,实现打通账户一体化,用UnionID来区分多平台的唯一性. 官方的解释:如果开 ...

  10. 微信小程序小Demo

    微信小程序小Demo 调用API,轮播图,排行榜,底部BabTar的使用... board // board/board.js Page({ /** * 页面的初始数据 */ // 可以是网络路径图片 ...

随机推荐

  1. 转载:SoapUI之接口数据传递

    SoapUI之接口数据传递(TestCase.TestSuite传递) SoapUI之接口数据传递(step传递) SoapUI+Groovy做接口自动化测试 SoapUI中使用Conditional ...

  2. Matlab与C++混合编程

    原文链接:http://blog.csdn.net/zouxy09/article/details/20553007 一不小心,成了一个忠实复制者...

  3. 基于libVLC的视频播放器

    本文来自于:http://blog.csdn.net/leixiaohua1020/article/details/42363079 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放 ...

  4. (转)RabbitMQ学习之安装

    http://blog.csdn.net/zhu_tianwei/article/details/40832185 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客 ...

  5. jQuery删除元素

    remove() - 删除被选元素(及其子元素) empty() - 从被选元素中删除子元素 $("#div1").remove();删除被选元素及其子元素. $("#d ...

  6. JsonPluginsUtil

    package utils; import java.lang.reflect.Field;import java.text.SimpleDateFormat;import java.util.Arr ...

  7. Windows自调试Redis

    一.安装Redis 1. Redis官网下载地址:http://redis.io/download,下载相应版本的Redis,在运行中输入cmd,然后把目录指向解压的Redis目录. 2.启动服务命令 ...

  8. jquery bind 传参数

    方法一. ? 1 2 3 4 function GetCode(event) { alert(event.data.foo); } ? 1 2 3 4 $(document).ready(functi ...

  9. https自签证书

    linux自带openssl,所以最好在linux平台操作 第一步:生成采用des3算法保护的私钥:openssl genrsa -des3 -out private-rsa.key 1024 命令执 ...

  10. vue 2.0 购物车小球抛物线

    备注:此项目模仿 饿了吗.我用的是最新的Vue, 视频上的一些写法已经被废弃了. 布局代码 <div class="ball-container"> <trans ...