今天,由于开发需求的增加,应用需要分享到更多的公众平台,将ShareSDK的版本升级到官方最新版3.2.1。在集成的过程中,发现一个很奇怪的问题:在分享到新浪微博平台时,回调表示分享已经成功,但是大部分分享出去的内容在新浪微博里面发送不成功,少数几条又成功了。分享不成功的内容新浪平台都给出一个提示错误:10006 source paramter(appkey)is missing。
通过查找资料,了解了新浪微博平台给出的各种错误的表示代码。如图
但是,新浪微博平台在初始化时已经将Appkey传进去了。和shareSDK的技术人员沟通了很久,暂时也没有解决,特别写出来和大家交流下。以下是我的集成步骤。
1.配置各公众平台的白名单和URL schemes。(新浪微博的白名单因为需要我暂时去掉了,发现这问题前肯定是添加进来了的sinaweibo,weibosdk,weibosdk2.5,sinaweibohd)
2.初始化ShareSDK和各公众平台。新版本的初始化方法和之前的版本有了很大的改变。代码如下:
3.ShareSDK有三种调分享的方法:1)使用他们系统的弹框,然后点击各item去分享 2)调用他们的编辑界面,然后去分享 3)直接跳转到第三方进行反向。因为我们是自己定义的UI,所以我选择了第三种分享方法,如图
该方法分享的第一个参数是分享的类型(type,SSDKPlatformTypeSinaWeibo表示新浪微博),parameters是一个NSMutableDictionary类,是分享到第三方平台设置内容的。在这里,说一下,微博本来就不能分享链接的,他只能分享text和image的,不能像微信可以分享链接。微博要分享链接,只能写在text里,当做内容分享。分享出去后,微博会把链接显示成网页链接几个字,点击网页链接,就可以跳转到链接。[shareParams SSDKEnableUseClientShare];(允许客户端进行分享)新浪微博,需要加上这句代码。到这里,我们的应用已经能跳转到新浪微博并且成功将内容分享到了新浪。但是当我们查看新浪客户端的时候,发现消息并未发送出去,而是在新浪微博个人的草稿箱里。多次测试,偶尔有发送成功的。反复比对shareSDK官方demo,并没有差异。
为了确定是否是新浪微博客户端的问题,我将微博客户端卸载,这样点击分享的时候,会跳转到一个授权页面,填写新浪微博账号正确后直接分享了出去,查看消息也发送出去了。多次测试,都发送成功。所以,怀疑是新浪微博客户端系统不稳定性造成的。
为了避免安装了新浪微博客户端的用户,点击分享的时候跳转到新浪微博客户端发送失败的情况。我在白名单里将新浪微博的白名单去掉。不跳到新浪微博进行分享,暂时以这样的方式解决这个问题。后续会继续跟进这个问题。