美文网首页程序员iOS Developer
iOS QQ分享、微信分享拼接appinstall参数

iOS QQ分享、微信分享拼接appinstall参数

作者: 梅西和他的世界杯 | 来源:发表于2017-04-04 11:42 被阅读2509次

    标签: iOS、QQ、分享、appinstall

    前几天开发,测试吐槽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解析成请求参数。

    结尾

    如果有知道好的解决方案,求告知。问题就是链接被拼接了一个参数后解析错误,自己对这方面不是很了解,自己的想法,将fragment放到host后面和请求参数换一个顺序,请求参数放到链接最后面,这样不管怎么拼接参数都没有问题。

    相关文章

      网友评论

        本文标题:iOS QQ分享、微信分享拼接appinstall参数

        本文链接:https://www.haomeiwen.com/subject/mnmaottx.html