標(biāo)簽: iOS、QQ、分享、appinstall
前幾天開發(fā),測試吐槽iOS分享鏈接到QQ,在QQ內(nèi)打不開,當(dāng)時找安卓同學(xué)發(fā)現(xiàn)沒有問題,經(jīng)過排查,發(fā)現(xiàn)QQ給自己的鏈接后面默認(rèn)拼接了一個appinstall=0參數(shù),查了騰訊開放平臺,這個參數(shù)是QQ定向分享來判斷是否安裝了自己的軟件。
但是這并不能解決問題,這個參數(shù)我是沒有找到如何取消,不讓拼接這個參數(shù),但是問題得解決啊。和同事討論后,從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。
仔細(xì)會發(fā)現(xiàn),我們有一個name=test的參數(shù),#!/index/color這個是fragment,fragment用來定位跳轉(zhuǎn)到本頁面指定位置,例如:<p id="bottom"> #號后面跟bottom,這個頁面加載出來會自動跳轉(zhuǎn)到bottom處。
問題就跟fragment有關(guān),分享前是:#!/index/color,分享后:#!/index/color&appinstall=0。瀏覽器默認(rèn)將#后面的都當(dāng)成了fragment,所以導(dǎo)致頁面加載沒有問題,就是定位不到位置,所以顯示不出來。
最后問題解決就是讓同事在分享前后面拼接一個?。http://www.baidu.com/?name=test#!/index/color?。這樣QQ如果拼接上,那么瀏覽器會appinstall=0解析成請求參數(shù)。
結(jié)尾
如果有知道好的解決方案,求告知。問題就是鏈接被拼接了一個參數(shù)后解析錯誤,自己對這方面不是很了解,自己的想法,將fragment放到host后面和請求參數(shù)換一個順序,請求參數(shù)放到鏈接最后面,這樣不管怎么拼接參數(shù)都沒有問題。