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:如上使用即可