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

这篇具有很好参考价值的文章主要介绍了H5页面内嵌到微信小程序和APP,做分享操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

小程序内嵌H5页面

介绍

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

准备工作

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

正式开发

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

使用 npm 下载的,在项目的 main.js 文件中引入 jssdk ,这样就能在项目中全局使用:
H5页面内嵌到微信小程序和APP,做分享操作
官方文档中下载的,在需要使用 jssdk 的页面中引入使用:
H5页面内嵌到微信小程序和APP,做分享操作

页面使用

单页面引入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"){ //ios
	try {					
		// ios
		window.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, // 第一次进入页面的页面path
			mbrid: 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 }); //请求接口获取toke
				if(code == 200) {
					const { accessToken } = data
					cache_set_token(accessToken) //存储toke
					
					getApp().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.toymoban.com/news/detail-463940.html

到了这里,关于H5页面内嵌到微信小程序和APP,做分享操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从短信,H5页面浏览器跳转到微信小程序指定页面

     在H5页面或者短信链接中要进行小程序跳转,所以需要通过生成具体页面的链接进行跳转 1、参考链接生成接口,详见微信官方文档地址:urllink.generate | 微信开放文档      重点参数如图:       2、后端调用api进行生成  请求完的结果: 3、前端页面入口  4、编写一个中间

    2024年02月11日
    浏览(43)
  • uniapp 打包H5,打包小程序,打包app分享到微信聊天、朋友圈

    1.uniapp打包H5操作手法:Hbuilder-发行-网站-PC-WEB端或手机端H5访问,需要填写个访问域名,即发布后访问的域名路径 2.uniapp打包H5配置注意事项:uniapp下manifest.json文件中H5配置相关配置,路由模式选择hash,勾选上https访问。 注:如果是本地访问没有https设置,则该项不要勾选,打

    2024年02月09日
    浏览(38)
  • 微信小程序内嵌H5页面实现微信支付

    背景: 在微信H5页面已经实现了微信JSAPI的网页支付,老板要求把整个业务线快速转移到微信小程序中,作为懒惰的程序员来说,直接把页面嵌套到小程序不就行了。说干就干,在小程序中设置好基本信息后,一预览居然成功了,一切看来是那么顺利,可到了系统的支付环节

    2024年02月11日
    浏览(36)
  • 微信小程序与内嵌h5页面之间的参数传递

    小程序是采用vue+taroui技术栈 h5页面 所在文件:h5.vue 小程序页面:wx.vue,这里我用的是taro获取当前页面栈,大家可以用wx 这里的this.routerParams==={params:1} 小程序页面:wx.vue,首先向内嵌h5的webview所在页面跳转并携带所传参数。 webview页面—/pages/processLink/index。index.vue,由该页面

    2024年02月15日
    浏览(57)
  • h5页面跳转到微信小程序之利用URL Scheme接口

    首先想要跳转到微信小程序得先知道 AppID 和 secret 如果不知道的情况下是无法跳转的 urlscheme.generate 此时遇到一个问题是获取auth.getAccessToken appid 此值在小程序里就可以获取 到 secret 这个值只能在可在 微信公众平台 - 设置 - 开发设置 里面找到 接下来放代码 这样就可以在手机

    2024年02月15日
    浏览(38)
  • 微信小程序内嵌h5页面,实现动态设置顶部标题的功能

    一、需求描述 使用HBuilder X作为开发工具,vue作为开发语言,开发微信小程序。微信小程序页面内嵌h5页面,即web-view/web-view标签。通过设置不同url连接地址,设置不同的标题。 二、失败做法 页面A嵌入h5页面,需要给A设置标题。最开始写法是在lonload页面内,使用如下语句实现

    2024年02月04日
    浏览(41)
  • uniapp实现微信小程序内嵌h5页面的相互跳转

    前期准备3个页面,小程序内2个,h5一个。 小程序内:操作页pageA,展示容纳h5的展示页PageWebview.vue。 h5:h5页面pageB,并且有可以访问的线上url。 【微信小程序pageA-内嵌h5页面pageB】 1.1 pageA实现点击跳转,将pageB的访问地址url拼接,并进入展示页PageWebview.vue 1.2 PageWebview.vue页面用

    2024年02月12日
    浏览(45)
  • 微信小程序使用webview内嵌h5页面 wx.miniProgram.getEnv失效问题

    背景 最近接到一个h5需求,和普通的h5不一样,这个h5页面是嵌入到小程序中使用的,需求简单来说就是展示一个跳转按钮,判断如果是小程序环境下就进行跳转到其他小程序页面。 实现思路 核心逻辑其实就是判断小程序环境这一块,我们可以直接使用wxsdk来进行判断小程序

    2024年02月09日
    浏览(43)
  • 微信小程序web-view嵌入uni-app H5页面,通过H5页面传参给小程序进行转发分享页面,并通过点击转发出来的卡片,定向打开对应H5路径

    index.wxml  index.js 在H5项目的App.vue页面获取参数实现自动跳转到对应页面,包括携带的参数值

    2024年02月12日
    浏览(39)
  • 微信小程序webview内嵌H5跳转页面后没有返回按钮完美解决方案

    简单的讲就是我们可以在小程序内放置一个web-view组件来链接我们的HTML页面了。 但是点击跳转页面的时候。页面左上角没有!!返回按钮!!导致回不去了,这不是搞笑的吗。 看了下其他的小程序,发现如果是两个小程序页面跳转的话,第二个页面的左上角是会有返回按钮

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包