今天在测试一个H5页面的时候,测试报告了一个BUG:某页面存在两个分享,但是在使用QQ分享的时候,一个分享成功,一个却一直提示“打开QQ失败”。
之前也报告过这样的问题,但是由于线上环境没怎么发现,就没有去解决。
这次刚好有时间,就决定解决掉这个BUG。
Debug模式下仔细看了下友盟的log,发现在QQ打开失败时控制台输出:
-QQAPI- QQApi.m:252 param error: url is nil
然后查了一下QQ分享SDK的API,找到了问题的关键:
分享成功的链接里面没有带任何参数,而一直打不开QQ的分享链接带参数,而且参数是中文。在查阅友盟分享API发现:
友盟会将 "?"号前面的当作url,“?”号后面的 不会被读取,说到这 ,都知道问题的所在了吧。这是因为传过去的字符串,带参数,是需要进行编码的( 防止有中文,所以要进行编码)。
所以如果在分享链接中添加有参数,那么需要将链接中的中文及特殊字符进行编码,具体方法如下:
NSString *shareUrl = [[NSString stringWithFormat:@"http://www.jianshu.com?userName=张三"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
希望这篇文章可以帮到你!