qq分享 的链接中多了一个 appinstall参数 导致“file not found”

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011374880/article/details/82380705

今天测试提了一个很诡异的bug,我们的分享链接在android平台都可以正常打开,测试吐槽iOS分享链接到QQ,在QQ内打不开,当时找安卓同学发现没有问题,经过排查,发现QQ给自己的链接后面默认拼接了一个appinstall=0参数,查了腾讯开放平台,这个参数是QQ定向分享来判断是否安装了自己的软件。

但是这并不能解决问题,这个参数我是没有找到如何取消,不让拼接这个参数,但是问题得解决啊。和同事讨论后,从URL来看,下面是iOS NSURL的一些属性。

@property (nullable, readonly, copy) NSString *host;
@property (nullable, readonly, copy) NSNumber *port;
@property (nullable, readonly, copy) NSString *user;
@property (nullable, readonly, copy) NSString *password;
@property (nullable, readonly, copy) NSString *path;
@property (nullable, readonly, copy) NSString *fragment;
@property (nullable, readonly, copy) NSString *parameterString;
@property (nullable, readonly, copy) NSString *query;
@property (nullable, readonly, copy) NSString *relativePath; // The same as path if baseURL is nil

我们分享的URL大致是这个样子的:http://www.baidu.com/?name=test#!/index/color
分享后:http://www.baidu.com/?name=test#!/index/color&appinstall=0

仔细会发现,我们有一个name=test的参数,#!/index/color这个是fragment,fragment用来定位跳转到本页面指定位置,例如:<p id="bottom"> #号后面跟bottom,这个页面加载出来会自动跳转到bottom处。

问题就跟fragment有关,分享前是:#!/index/color,分享后:#!/index/color&appinstall=0。浏览器默认将#后面的都当成了fragment,所以导致页面加载没有问题,就是定位不到位置,所以显示不出来。

最后问题解决就是让同事在分享前后面拼接一个?。http://www.baidu.com/?name=test#!/index/color?。这样QQ如果拼接上,那么浏览器会appinstall=0解析成请求参数。

 

解决方法

要么去掉#,要么在#前面加一个?

猜你喜欢

转载自blog.csdn.net/u011374880/article/details/82380705