位置: IT常识 - 正文

H5页面内嵌到微信小程序和APP,做分享操作(h5页面内嵌到微信)

编辑:rootadmin
H5页面内嵌到微信小程序和APP,做分享操作 前言

推荐整理分享H5页面内嵌到微信小程序和APP,做分享操作(h5页面内嵌到微信),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:h5 嵌入,h5页面内嵌到微信怎么弄,h5页面嵌入页面,h5 嵌入,h5页面嵌入页面,h5页面内嵌到微信,h5页面内嵌到微信怎么弄,h5页面内嵌到微信,内容如对您有帮助,希望把文章链接给更多的朋友!

最近接到项目新需求,H5项目需要内嵌到微信小程序和APP里,然后将H5页面分享出去,被分享的人可以点击消息跳转到H5页面。H5页面不难,难的是要与微信小程序和APP进行交互,因为以前也没有接触过,所以这里卡的时间有点长。现分享出来

小程序内嵌H5页面介绍

这里小编使用的是 uinapp 写的H5项目!!! H5页面放入小程序中,需要使用小程序的一个组件 web-view 微信官方文档 官方文档中有详细介绍,H5页面主要需要的API为 相关接口1

准备工作

其中 wx.miniProgram.postMessage 这个API就是H5做分享功能的主要的接口,在使用它之前还要下载 JSSDK ,这个 JSSDK.js文件 在官方文档中可以下载,然后放到你的项目中引入使用。 还可以使用 npm 下载: 用 npm install weixin-js-sdk 或 npm install weixin-jsapi

正式开发// 判断是否是微信环境export function isWx() {return /MicroMessenger/i.test(window.navigator.userAgent)}引入

使用 npm 下载的,在项目的 main.js 文件中引入 jssdk ,这样就能在项目中全局使用: 官方文档中下载的,在需要使用 jssdk 的页面中引入使用:

页面使用H5页面内嵌到微信小程序和APP,做分享操作(h5页面内嵌到微信)

单页面引入jssdk的使用:

if(this.flagWeChat){ //判断是否为微信环境//提前发送消息给小程序,初始化分享参数let infoList = {type:"share",//H5消息的消息类型messageData:{shareTitle:"@你....!",//分享标题shareImageUrl: "",//分享截图(小程序可以截当前分享页面图,当然也可以使用传过去的图)sharePathUrl:"/pages/web-view/main",//分享小程序页面(如需要参数则此地址需要拼接,注意这里的参数有长度限制)}};wx.miniProgram.postMessage({data:infoList});//必须使用 {data:infoList} 格式}else{console.log('分享时不在小程序里')}注意:这里的 infoList 里面所需参数名称皆为小程序那边的开发人员所规定的

main.js 全局引入的使用:

if(this.flagWeChat){ //判断是否为微信环境//提前发送消息给小程序,初始化分享参数let infoList = {type:"share",//H5消息的消息类型messageData:{shareTitle:"@你.....",//分享标题shareImageUrl: "",//分享截图sharePathUrl:"/pages/web-view/main", //分享小程序页面}};this.wx.miniProgram.postMessage({data:infoList})}else{console.log('分享时不在小程序里')}注意:h5能做的就是发送这一条消息给小程序,具体的分享还是要通过小程序头部自带的3个点

ps:这里的分享主要是小程序分享给微信好友的分享,发送给微信好友时会以消息卡片的形式分享出去。

APP内嵌H5页面介绍

在 APP 里内嵌H5页面,h5页面需要使用app定义的方法,首先需要app开发者把h5需要使用的方法公开到 window 中,这样h5才能使用。有的是需要引入js文件或是其他东西,这需要与app开发者协商。

正式开发// 判断当前运行环境 ios,安卓export function myProgramEnv() {if(/Android/i.test(window.navigator.userAgent)) {return 'android'}if(/ipad|iphone/i.test(window.navigator.userAgent)) {return 'ios'}}页面使用let shareInfo = {shareScene:"friends", //分享场景,friends代表微信好友shareType:"miniProgram",//消息类型,miniProgram代表分享小程序title:"@你.....",//分享标题desc:"....",//分享描述imageData: "",//图片地址link:"",//分享小程序页面,此地址需要拼接,如:/pages/web-view/main?webViewData={linkUrl="xxxxx",isLoginNeeded=true,navigationTitle="xxxxxx"},其中 "linkUrl":"xxxxxx",//分享H5链接;"isLoginNeeded":false,//是否需要账号信息"navigationTitle","xxxx",目标页面标题,可不传webPageUrl:""//网页地址,值与linkUrl值相同,主要用于兼容}// wechatShare是app提供的方法,我们只要在需要的地方调用就好if(this.flagSystemAPP == "android"){try {// 安卓//MoveCallNative 为安卓开发人员规定的名称,如若未特别规定则使用 window.android......window.MoveCallNative.wechatShare(JSON.stringify(shareInfo))} catch (e) {console.log('android分享错误--',e)}}else if(this.flagSystemAPP == "ios"){ //iostry {// ioswindow.webkit.messageHandlers.wechatShare.postMessage(JSON.stringify(shareInfo));} catch (e) {console.log('ios分享错误--',e)}}注意:这里的 shareInfo 里所需参数名称皆为APP开发人员所规定传参数时必须是字符串 JSON.stringify(shareInfo)

ps:这个分享也是分享给微信好友的分享,分享给好友时是以链接的形式分享的

H5页面介绍

分享出去的链接或卡片最终还是会回到H5页面,所以在H5页面需要接受参数,做出相应的操作

正式开发

在 App.vue 页面接收参数,分割参数和目标页面路径

<script>export default {globalData:{ // 存放全局数据familyDetail: {}, // 当前登录人的家庭数据initPage: null, // 第一次进入页面的页面pathmbrid: null, // 去获取用户信息的参数 },/* 程序初始化逻辑 1、获取用户初始化进入的相关数据,包括mid(用户身份标识),存储到全局变量2、判断本地有没有token,有就去对应的页面,没有则拦截到授权页面3、拦截前,保存第一次进入的页面地址,用于获取token后,去到该页面*/onLaunch: function(option) {console.log('App.vue初始化数据option---', option)if(window.location.search){ //获取链接里的参数let parameter = window.location.search.split('mbrid=')[1].split('#')[0];console.log('App.vue初始化数据mbrid---', parameter);getApp().globalData.mbrid = parameter; // 存储授权数据}else{console.log('路径未带参数---')}getApp().globalData.initPage = window.location.hash.substr(1); //获取链接里的页面路径uni.reLaunch({url: '/pages/auth/auth'}); //跳转到授权页面return},onShow: function() {},onHide: function() {},methods: {}}</script>

授权页面:授权和跳转到目标页面

<script>/* auth页面,只做授权使用,去获取token*/import { http_getWeChatLogin } from '@/common/api/index.js'import { cache_set_token } from 'common/utils/cache.js'import { ENV } from 'common/utils/constant.js'export default{data() {return {}},onLoad(option) {console.log('auth.vue初始数据:getApp().globalData---:',getApp().globalData)if(['AY_DEV'].includes(ENV)) { //判断是否为正式环境this.handleGetToken('1');} else {this.handleGetToken(getApp().globalData.mbrid);//app.vue里截获的参数}},methods:{async handleGetToken(mbrid) {if(!mbrid) {console.log('mbrid没有----')uni.showToast({title: '非法闯入',icon: 'none'})return}const { code, data, msg } = await http_getWeChatLogin({ mbrId: mbrid }); //请求接口获取tokeif(code == 200) {const { accessToken } = datacache_set_token(accessToken) //存储tokegetApp().globalData.familyDetail = data; //存储家庭信息if(getApp().globalData.initPage.indexOf('pages/auth/auth') > -1) { //判断是否为开发打开页面uni.reLaunch({url: '/pages/client_side/activity/activity' }); //跳转到首页} else {uni.reLaunch({url: getApp().globalData.initPage }); //跳转到app.vue里截获的路径}} else {uni.showToast({title: msg,icon: 'none'})}} }}</script>

至此,整个分享过程完结

本文链接地址:https://www.jiuchutong.com/zhishi/295202.html 转载请保留说明!

上一篇:聊聊vue3的defineProps、defineEmits、defineExpose

下一篇:手把手教你如何在项目中使用阿里字体图标IconFont(手把手教你如何套路男神)

  • 电脑开机慢怎么处理win10(电脑开机慢)(电脑开机慢怎么解决?)

    电脑开机慢怎么处理win10(电脑开机慢)(电脑开机慢怎么解决?)

  • 电脑飞行模式被隐藏了怎么关(电脑飞行模式被锁住了怎么办)

    电脑飞行模式被隐藏了怎么关(电脑飞行模式被锁住了怎么办)

  • 荣耀X30i支持内存卡吗(荣耀x30i支持nfc吗)

    荣耀X30i支持内存卡吗(荣耀x30i支持nfc吗)

  • 电脑的芯片主要是由什么物质组成的(电脑芯片排行榜2023最新)

    电脑的芯片主要是由什么物质组成的(电脑芯片排行榜2023最新)

  • 手机上怎么调照片尺寸(手机上怎么调照片格式jpg)

    手机上怎么调照片尺寸(手机上怎么调照片格式jpg)

  • word中如何删除尾注(word中如何删除整页)

    word中如何删除尾注(word中如何删除整页)

  • soul屏蔽通讯录有啥用(soul屏蔽信息)

    soul屏蔽通讯录有啥用(soul屏蔽信息)

  • QQ为什么不能播放(qq为什么不能直播了呀)

    QQ为什么不能播放(qq为什么不能直播了呀)

  • ipadmini4哪年出的(ipadmini4是哪年的)

    ipadmini4哪年出的(ipadmini4是哪年的)

  • p30如何关闭运行程序(华为p30pro关闭运行程序)

    p30如何关闭运行程序(华为p30pro关闭运行程序)

  • 苹果11微信怎么分身(苹果11微信怎么设置密码锁屏)

    苹果11微信怎么分身(苹果11微信怎么设置密码锁屏)

  • 7p闪退怎么回事(7p总闪退怎么回事)

    7p闪退怎么回事(7p总闪退怎么回事)

  • 拍立得已装相纸怎么过安检(拍立得已装相纸过地铁安检)

    拍立得已装相纸怎么过安检(拍立得已装相纸过地铁安检)

  • android开发主要用什么语言(android开发介绍)

    android开发主要用什么语言(android开发介绍)

  • 安卓手机颜色反转怎么设置(安卓手机颜色反转怎么截图啊)

    安卓手机颜色反转怎么设置(安卓手机颜色反转怎么截图啊)

  • 微信突然访问不了相册(微信突然访问不了相册,语音也发不了)

    微信突然访问不了相册(微信突然访问不了相册,语音也发不了)

  • 如何查看手机号码(如何查看手机号绑定了哪些东西)

    如何查看手机号码(如何查看手机号绑定了哪些东西)

  • 怎样发送原图照片(怎样发送原图照片给朋友)

    怎样发送原图照片(怎样发送原图照片给朋友)

  • 快手极速版怎么看直播(快手极速版怎么关闭广告推送)

    快手极速版怎么看直播(快手极速版怎么关闭广告推送)

  • 苹果xr有没有高通基带(苹果xr可以开高帧吗)

    苹果xr有没有高通基带(苹果xr可以开高帧吗)

  • plein是什么牌子(plein是什么牌子鞋子多少钱一双)

    plein是什么牌子(plein是什么牌子鞋子多少钱一双)

  • p30 pro有没有结构光(华为p30pro有几种截屏方式)

    p30 pro有没有结构光(华为p30pro有几种截屏方式)

  • iphone x可以指纹解锁吗(iphonex可以指纹解锁吗)

    iphone x可以指纹解锁吗(iphonex可以指纹解锁吗)

  • 手机淘宝聊天记录如何恢复(手机淘宝聊天记录中的文件怎样下载保存)

    手机淘宝聊天记录如何恢复(手机淘宝聊天记录中的文件怎样下载保存)

  • jkm-al00什么型号手机(jkm—al00a是什么型号)

    jkm-al00什么型号手机(jkm—al00a是什么型号)

  • iphonexs使用技巧(iphonexs使用方法)

    iphonexs使用技巧(iphonexs使用方法)

  • 一加6怎样录制屏幕(一加6怎样录屏)

    一加6怎样录制屏幕(一加6怎样录屏)

  • 新版Edge浏览器开启“强制暗模式”功能(新版edge浏览器兼容ie)

    新版Edge浏览器开启“强制暗模式”功能(新版edge浏览器兼容ie)

  • hypertrm.exe进程是什么文件 有什么作用 hypertrm进程查询(hypertrm.exe系统错误)

    hypertrm.exe进程是什么文件 有什么作用 hypertrm进程查询(hypertrm.exe系统错误)

  • python shutil模块如何操作文件(python的utils模块)

    python shutil模块如何操作文件(python的utils模块)

  • 个税免申报什么时候申报
  • 增值税和城建税怎么算
  • 契税完税凭证是不是契税发票
  • 种植农作物补贴
  • 个税如何变更公司
  • 定额发票怎么验证真伪
  • 个人社保由单位承担的可以进福利费吗
  • 在建工程领用原材料的账务处理
  • 新个税年终奖怎么申报
  • 行政事业单位餐标
  • 家电以旧换新怎么做账务处理
  • 股东转让股权印花税怎么交税
  • 外贸过程中产生的问题
  • 加速折旧的例子
  • 租房时,怎么替房东缴税?
  • 补贴属于什么手段
  • 坏账的计提和发生分录
  • 往年计提有误 跨年处理
  • 十分钟看懂财务报表
  • 报废的周转物怎么处理?
  • 库存商品进货价怎么算
  • 收购农产品再销售最新税收政策
  • win10禁用安全杀毒功能
  • mac的分辨率怎么调
  • win10平板模式不好用
  • win11打开软件出现????????
  • Cpqset.exe是什么系统进程 Cpqset有啥作用
  • 公司福利放置零食文案
  • 企业接受股权投资概念政府基金
  • kpk是什么文件
  • 电梯的维护保养应当由谁负责
  • 取得运输发票会计分录
  • 政府性基金和行政事业性收费区别
  • php中require和include是用来做什么的
  • React18的useEffect会执行两次
  • uniapp封装组件,多了一层
  • 增值税附加税必须交吗
  • 一般纳税人销售给小规模纳税人
  • 建筑业开票税点
  • 占地面积法如何分摊土地成本
  • 出口关税的计算公式
  • sql 封装
  • 个人销售商品交什么税
  • 固定资产税会折扣吗
  • sql server 链接
  • 小规模纳税人指的是谁
  • 金税卡就是税控盘吗
  • 收到货款未开票怎么入账
  • 土地管理费属于什么费用
  • 预付账款跨年处理分录
  • 外币存款利息是不是外币
  • 跨年度冲红字发票怎么冲
  • 应付账款账户怎么结转
  • 新收入准则要求
  • 新公司成立建账流程
  • 在centos上安装ftp服务应运行指令
  • sql server错误和使用情况报告
  • xp系统找不到指定的路径怎么办
  • ubuntu安装kdevelop
  • CoverDesigner.exe是一个安全进程吗 CoverDesigner进程查询
  • window7主题变成xp了
  • windowsxp是什么时候正式发布
  • linux swap分区必须吗
  • gage blocks是什么意思
  • 欢迎使用来电提醒业务,本次呼叫将以点对点
  • .android
  • .css
  • 深入理解计算机系统
  • mailto的使用技巧分享
  • unity3d all compiler errors
  • 手机端apk反编译工具_android反编译工具
  • jquery表格隔行变色代码
  • javascript高级教程pdf
  • 电子税务局数字证书未检测到证书
  • 四川省国税局
  • 河南省地方税务局公告2017年第4号
  • 纳税人办理汇算清缴
  • 提租补贴什么标准发放
  • 监理费合同按什么计算
  • 企业资金运转资金投放
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设