微信小程序 | 小程序的转发问题
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)
}
})
})
}
})
}
}
微信小程序 | 小程序的转发问题的更多相关文章
- 微信小程序之分享或转发功能(自定义button样式)
小程序页面内发起转发 通过给 button 组件设置属性open-type="share",可以在用户点击按钮后触发 Page.onShareAppMessage 事件,如果当前页 ...
- 微信小程序即将开放申请?微信小论坛小程序专场16日或可见分晓
9月22号微信小程序内测至今已经好一段时间了,首批只开放了200个名额,没拿到内测资格的朋友早就等到心急了.就在刚刚,微信公开课宣布微信小论坛小程序专场即将在11月16号举行,微信公众平台小程序会在当 ...
- 如何获取微信小店小程序的AppID
2017年11月16日,微信有一个重磅的宣布:为了帮商家在微信内快速开店,方便商家和用户之间沟通,所有认证公众号,可快速创建微信小店小程序.这个改变是否能给微信小店带来新的生机?还需要时间的考验.微信 ...
- TP3.2校验微信公众号||小程序 服务器地址
1.在TP3.2里面,写一个控制器,用来校验微信公众号||小程序的服务器地址 <?php namespace Home\Controller; use Think\Controller; hea ...
- 微信小游戏 小程序与小游戏获取用户信息接口调整 wx.createUserInfoButton
参考: 小程序•小故事(6)——微信登录能力优化 小程序•小故事(4)——获取用户信息 本篇主要是讲微信getUserInfo接口不再出现授权弹框 那么原来getUserInfo是怎么样?修改之后又是 ...
- 微信小程序-03-小程序开发框架
微信小程序-03-小程序开发框架 官方文档: https://developers.weixin.qq.com/miniprogram/dev/framework/MINA.html 小程序开发框架 ...
- 微信小程序再次升级:卖货小店小程序不用开发也能进行交易
卖货小店小程序,不用开发一行代码也能帮商家实现交易功能,这个真是几家欢喜几家愁啊,对于开发小程序商城的公司来说,这个无疑是一个雷霆之际,第一反应就是,这下完了,小程序自身就支持交易,那还要我们这些第三 ...
- 头脑王者pk答题小程序开发思路 微信pk答题小程序开发 PK答题游戏你也可以做 微信pk答题游戏
想必大家最近的朋友圈和微信群里都被头脑王者PK答题刷屏了吧.确实很好玩,尤其是2018年的这波风口,手机答题,大家掏出手机,创建一个好友PK,然后你的好友点击进来就可以和你一起PK答题.比之前的游戏好 ...
- .NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?
前言 获取UnionID是开发微信公众号/小程序中很有必要的一个环节,特别是针对一个公司拥有多个公众号小程序而推出的机制,实现打通账户一体化,用UnionID来区分多平台的唯一性. 官方的解释:如果开 ...
- 微信小程序小Demo
微信小程序小Demo 调用API,轮播图,排行榜,底部BabTar的使用... board // board/board.js Page({ /** * 页面的初始数据 */ // 可以是网络路径图片 ...
随机推荐
- 基于ACE的TAO开发---一个简单的入门实例-----VS2008(一)
万事开头难,不管做什么事最开始总是最困难的,一旦上手了就好了. 这也是我自己学习corba编程的一点经验和心得.下面的例子主要是保证读者跟着走能立马看到效果. 1.机器上的TAO是实现已经装好的开发版 ...
- vim 常用操作笔记
跳转最后一行 :$ 或 shift+g 跳转第一行 :1 或 gg 设置自动换行 :set wrap 设置不自动换行 :set nowrap
- JVM上的下一个Java——Scala
Scala是一种针对 JVM 将函数和面向对象技术组合在一起的编程语言.Scala编程语言近来抓住了很多开发者的眼球.它看起来像是一种纯粹的面向对象编程语言,而又无缝地结合了命令式和函数式的编程风格. ...
- spring过滤器篇
CharacterEncodingFilter spring的web包下的一个过滤器,用于设置程序的字符编码,它有两个参数encoding和forceEncoding. encoding:字符集,将过 ...
- python编写简单的html登陆页面(1)
1 html 打开调式效果如下 2 用python后台编写 # coding:utf-8# 从同一个位置导入多个工具,# 这些工具之间可以用逗号隔开,同时导入# render_template渲染 ...
- oracle 删除表空间及数据文件方法
oracle 11g版本,创建数据库表空间,默认单个数据文件最大为32G,如果数据文件大于32G,可以增加数据文件. --删除空的表空间,但是不包含物理文件 drop tablespace table ...
- Matrix(坑)
https://github.com/florent37/Android-3D-Layout
- Centos7安装keepalived(自定义路径安装)-高级篇
0.Keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat.corosync.pacemaker.但 ...
- django rest-farme-work 的使用(2)
serialization (序列化) 本测试项目例子地址为: tomchristie/rest-framework-tutorial 开始构建一个新的程序 创建一个新的环境 virtualenv e ...
- 简洁又快速地处理集合——Java8 Stream(上)
Java 8 发布至今也已经好几年过去,如今 Java 也已经向 11 迈去,但是 Java 8 作出的改变可以说是革命性的,影响足够深远,学习 Java 8 应该是 Java 开发者的必修课. 今天 ...