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
正式开发
引入
使用 npm 下载的,在项目的 main.js 文件中引入 jssdk ,这样就能在项目中全局使用: 官方文档中下载的,在需要使用 jssdk 的页面中引入使用:
页面使用
单页面引入jssdk的使用:
main.js 全局引入的使用:
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
}
}
页面使用
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>
至此,整个分享过程完结
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
uniapp -- 页面生命周期
