H5内嵌APP分享一个H5页面,其他都没问题;ios分享到WhatsApp时 ,&后面的参数丢失

文章讲述了在iOS平台处理H5分享链接时遇到的问题,参数被URL语法丢弃。作者通过Base64编码将多个参数合并成一个,并使用js-base64库实现,解决了参数丢失问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,正确的分享链接

 https://xxx.com/h5shareapp/?lang=en&id=140&inviteCode=EYD74Y

2,有问题的分享链接

 https://xxx.com/h5shareapp/?lang=en

 问题描述:丢失了&后面的参数

尝试解决

(1):replace全局将&换成%26

this.shareData.h5Url = h5Url.replace(/&/g, "%26")

失败!!!

(2):escape转换&符

let h5Url=this.apiUrl + '/h5shareapp/?lang='+this.lang + escape('&') +'id=' + this.userId + escape('&') + 'inviteCode=' + this.inviteCode

(3): escape 转换链接

let h5Url=this.apiUrl + '/h5shareapp/?lang='+this.lang +'&id=' + this.userId + '&inviteCode=' + this.inviteCode

this.shareData.h5Url = escape(h5Url)

通通失败!!!, 没有任何改变。。。。

向大佬请教:.......

whatsapp://send?text=https://xxx.com/h5shareapp/?lang=ar&id=1&inviteCode=6TDZNS

ios这边处理的时候,会把连接拼到schemaUrl里,解析的时候 因为url的语法 把 & 后面的内容丢掉了

whatsapp://send?text=https://xxx.com/h5shareapp/?lang=ar变成了这个

因此:如何解决呢?

将链接参数放到一个参数字段里边, 采用base64编码对参数进行加密,然后获取参数的时候对其进行对应方式的解密

如下:

//加密
let params = {
					lang:this.lang,
					id:this.userId,
					inviteCode:this.inviteCode
				}
let h5Url = this.apiUrl + '/h5shareapp/?params=' + encode(JSON.stringify(params));
this.shareData.h5Url = h5Url;

这样由原来的的三个参数变为一个参数

对应的取的时候

let params = JSON.parse(decode(option.params))

问题就解决了~

分享出去的链接变为

https://xxx.com/h5shareapp/?params=eyJsYW5nIjoiZW4iLCJpZCI6IjE0MCIsImludml0ZUNvZGUiOiJFWUQ3NFkifQ==

其中 encode和decode两个方法均为js-base64中的方法

使用js-base64步骤如下

1:安装

npm install --save js-base64

2:引入

import { encode, decode } from 'js-base64';

3:如上使用即可

更多内容请了解https://github.com/dankogai/js-base64/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值