uniapp 小程序和APP跳转百度网盘方法

先来看效果

需求:在小程序或app点击跳转按钮就会打开百度网盘并且进入后自动解锁打开该页面

使用框架:uniapp

需求分解:1.在小程序中点击跳转按钮打开百度网盘

看到这个需求,第一反应肯定是打开uniapp官网,搜一搜有没有什么好用的方法可以让我嫖一嫖

嘿,没想到还真有      

这个方法可以直接跳转另一个小程序(以下是使用方法)

uni.navigateToMiniProgram(OBJECT)

uni.navigateToMiniProgram({
  appId: '',
  path: 'pages/index/index?id=123',
  extraData: {
    'data1': 'test'
  },
  success(res) {
    // 打开成功
  }
})

跳转方法是解决了,可是怎么能跳到对应的小程序呢,比如说我现在要跳到百度网盘,我看了一下appId这个参数传对应的appid就行,接下来我把如何获取百度网盘的appid的教程给大家分享一下

1.首先打开百度网盘小程序

2.

3.

4.

好好好,这时候百度网盘的appid就有了

接下来就要获取页面路径了,我就不写这个过程了,过程下面文章中有(也可以直接复制我下边写好的方法)如何查看并复制小程序的页面路径? | 微信开放社区 (qq.com)icon-default.png?t=O83Ahttps://developers.weixin.qq.com/community/develop/article/doc/000ce424104ce8a015cb6658a51413

经过对获取到的url转码得到了以下的路径url

转码:pages/netdisk_share/share?scene=1PzqiNscYrx6u8DBjmVq52s%231234%238%230

然后只需要拿链接中替换掉就可以使用

然后拿以下举例:

例:https://pan.baidu.com/s/1PzqiNscYrx6u8DBjmVq52s?pwd=1234

转码:pages/netdisk_share/share?scene=1PzqiNscYrx6u8DBjmVq52s%231234%238%230

然后就是做app跳转,这边是直接有app方法(我这边没有判断用户是否手机上有百度网盘小程序,使用这方法是直接用浏览器打开的网盘地址,你们也可以进行判断一下)

plus.runtime.openURL

到现在小程序跳转和app跳转方法都有了,就可以做跳转功能了

由于复制出来的百度网盘链接可能会有文字或者什么东西,需要先用正则给净化一下

getStrUrl(s) {
				var reg = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g;
				var reg = /(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g;
				s = s.match(reg);
				return (s && s.length ? s[0] : null);
			},

然后拿着净化后的链接去做跳转功能,我这边直接替换过了

首先说明这个方法是网盘这个链接专用方法https://pan.baidu.com/s/*********

openurl(url) {
				let cjurl = this.getStrUrl(url)//净化过后的url
				if (uni.getStorageSync('isWechat') == true) {
                    //小程序跳转
					let tzurl = cjurl.split('/s/')[1].split('?pwd')[0]//取出来链接
					let pwd = cjurl.split('/s/')[1].split('?pwd=')[1]//取出来提取码
					uni.navigateToMiniProgram({
						appId: 'wxdcd3d073e47d1742',
						path: `pages/netdisk_share/share?scene=${tzurl}%23${pwd}%238%230`,
						extraData: {
							foo: 'bar'
						},
						envVersion: 'release',
						success(res) {
							// 打开成功
						}
					})
				} else {
					plus.runtime.openURL(cjurl, function(res) {
						//这边是app跳转
						console.log(res);
					});
				}

			},

如果要是这个链接   https://pan.baidu.com/share/init?surl=***&pwd=***   的话请去这个方法

// 打开网盘方法
			openurl(url) {
				if (!url) {
					this.$msgs('暂无跳转链接')
					return
				}
                // getStrUrl这个方法去上面找一下,有的
				let cjurl = this.getStrUrl(url)
				console.log('cjurlcjurlcjurl', cjurl);
				if (uni.getStorageSync('isWechat') == true) {
					let tzurl = ''
					let pwd = ''
					if (cjurl.indexOf('/s/') == -1) {
                        // 如果链接里没有/s/的话,也就是https://pan.baidu.com/share/init?surl=***&pwd=***
                        // 这里链接前加一个1就行了,虽然我也不知道为什么,这个是我观察出来的
						tzurl = '1'+cjurl.split('surl=')[1].split('&pwd=')[0]
						pwd = cjurl.split('&pwd=')[1]
					} else {
                        //如果链接里有/s/的话,也就是https://pan.baidu.com/s/*******?pwd=****
						tzurl = cjurl.split('/s/')[1].split('?pwd')[0]
						pwd = cjurl.split('/s/')[1].split('?pwd=')[1]
					}
					uni.navigateToMiniProgram({
						appId: 'wxdcd3d073e47d1742',
						path: `pages/netdisk_share/share?scene=${tzurl}%23${pwd}%238%230`,
						extraData: {
							foo: 'bar'
						},
						envVersion: 'release',
						success(res) {
							// 打开成功
						}
					})
				} else {
					plus.runtime.openURL(cjurl, function(res) {
						//进入后台小哥哥给我的应用宝下载链接,让你们后台给你
						//这链接会判断你手机是ios还是Android,Android进入应用宝下载app
						//跟下面的是一个链接
						console.log(res);
					});
				}

			},

这样整个流程就都有了,可以直接跳转到百度网盘了,开心开心

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值