微信JS自定义分享接口失效问题描述以及应对办法

微信团队在跨年夜送给了广大开发者一份大礼——直接粗鲁地禁掉了微信内的JS分享API,具体影响为:
1、分享气泡的题目会变为当前页面标题;
2、分享气泡的图片会变为页面代码中出现的第一张图片(无法完全确认,目测是微信客户端的网页解析逻辑);
3、分享气泡的URL只能是当前的URL;
4、分享气泡给单个好友或群聊时,气泡描述为当前URL;
5、无法获取客户端触发了分享行为,也无法获知分享操作的结果

基于这种情况,开发者目前已经无法直接通过微信的JS API对分享气泡进行定制了。

好消息是,开发者还能利用上面的默认规则1~3对分享出去的气泡进行浅层次的定制,方案简述如下:
1、将分享的标题设成页面标题(此改动会对用户体验有一定的影响,但影响比较次要);
2、在页面最前面插入一个用户不可见的img标签,专门用来存放分享图,hack分享图片的解析逻辑;
3、微调业务逻辑,在每个可能触发分享的页面的URL中都要附加上用于分享的参数信息。因为各业务的具体流程有所不同,需要case by case分析。总体而言,将分享信息放在url的search或fragment里都是不错的思路,特别是放在fragment中时可以不触发页面刷新,对用户体验而言比较无伤。
4、无法使用分享回调的问题可以从游戏设计上规避,把“发出分享后主动发奖”类的流程,改为“对方点开气泡接受邀请之后,再发奖给邀请者”。

充分利用微信分享相关功能一直是大家做HTML5小游戏设计时的重点,此次微信的调整也给H5游戏设计者指了一条道路,即:在设计时,可以设置一个专门的分享页,在需要引导用户分享的时候,首先跳转到该页面,然后再让用户自己去触发分享。依此设计的游戏在QQ、人人和微博分享时也能够转起来。

有个问题是,“分享气泡的图片会变为页面代码中出现的第一张图片”这个无法完全确定。但是我自己在开发的时候,还没有发现分享图URL不是第一个img tag的src属性值的情况。

以上技术方案权当抛砖引玉,欢迎亲们在下方留下更多的思路,一起讨论:)