ShareSDK是iOS开发中,分享到公众平台常用的第三方SDK,它友好的封装,将分享变得更简单,只需要调用分享方法,按照各平台的分享条件构造好需要的参数,就可以了。个人使用ShareSDK分享做过很多次,其中分享到新浪微博是我感觉最容易遇到情况的,尤其是ios9后。在这里和大家分享下使用经验,避免出现不避要的问题。
现在ShareSDK最新版的已经到3.x了,相较于以前的版本,使用更为简洁。这里就不介绍了,官方的文档写的非常清楚。我直接分享怎样集成到成功的过程。使用pod下载ShareSDK,省去了自行添加需要的框架以及一些配置,推荐大家使用
1.填写白名单。最好将六个都写全:sinaweibo sinaweibohd sinaweibosso sinaweibohdsso weibosdk weibosdk2.5 (后两个若导入新浪SDK则需要)
2.填写Scheme。Scheme的正确与否,直接影响到分享到新浪微博客户端能否跳转回自己的应用。如果填写错误,是不会回来的,也拿不到分享状态结果回调。新浪微博的Scheme规则:wb+appKey。
3.初始化新浪微博平台:下面的authType,选择SSDKAuthTypeBoth,是支持web和新浪微博客户端两种形式的。SSDKAuthTypeWeb是只支持网页授权,大家要注意,网页授权是应用内分享,第一次授权时弹出授权界面后,一旦授权成功,后面点击分享是不会有任何跳转的,直接在应用内分享并拿到分享回调。客户端下分享,是在第一次授权后,后面每次都会跳转到客户端的。
4.构造分享参数信息。shareParams是参数信息字典。新浪微博的构造信息参数方法和其他平台略有区别。(1).新浪微博本来就不能分享链接的,他只能分享text和image的,不能像微信那,所以不要想着能像微信那样直接带一个shareUrl,点击就可以看一个网页。(2).微博要分享链接,只能写在text里,当做内容分享,分享出去,微博会把链接显示成网页链接几个字,点击网页链接,就可以跳转到链接,大家可以使用其他的app分享到新浪微博验证下。(3)这里我着重强调一下,新浪微博的参数信息里面,image字段,如果你想传人网络图片,必须需要高级写入接口,需要到新浪微博公众平台申请,否则一定会出错误。避免出现这样的问题,可以使用本地的图片,或者将网络图片下载下来。如果你想问为什么客户端分享没有发现这个问题,那是因为2个方式分享内部的接口是不同的,客户端分享不会有这个错误问题,只有网页。
5.设置允许客户端进行分享.[shareParams SSDKEnableUseClientShare];这句话的意思是允许客户端进行分享,在有客户端的情况下,分享到新浪微博平台就会调用新浪微博客户端。当然,如果没有安装客户端,是不影响网页端的分享的。
6.分享方法的调用选择。
(1)使用ShareSDK系统的弹框进行分享:参考ShareSDK官方demo,可以知道其样式。
(2)使用ShareSDK系统的编辑框进行分享,点击你想要的分享平台按钮,就会弹出这个默认的编辑框:参考ShareSDK官方demo,可以知道其样式。
(3)直接跳转到第三方平台进行分享。点击自己app种代表某个平台的按钮,即可直接跳转到第三方平台进行分享。不需要经历中间过程
(4)选择直接跳转到新浪微博进行分享的方法,跳转到新浪微博客户端后的展现样式
(5).点击发送,在网络情况下即可分享成功,然后调回自己的app。Scheme配置错误的话是不会跳回来的,切记。整过流程就是这样的,亲们有没有觉得很简单。
网友评论
{
case SSDKPlatformType.TypeSinaWeibo:
//设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
appInfo?.SSDKSetupSinaWeiboByAppKey("2444354414",
appSecret : "8d8dbf1c073e16428ca913f5faf76384",
redirectUri : "http://www.sharesdk.cn",
authType : SSDKAuthTypeBoth)
新浪微博我都配置好了,到时进行分享时老是显示Error Domain=ShareSDKErrorDomain Code=200 "(null)" UserInfo={error_message=无法分享! 分享平台(1)尚未初始化!}
这是什么原因请问
具体的方法是什么??
//再把声明的platforms对象传进分享方法里的items参数里
[shareParams SSDKEnableUseClientShare];
// [shareParams ]
[ShareSDK showShareActionSheet:nil
items:platforms
shareParams:shareParams
onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
switch (state) {
case SSDKResponseStateSuccess:
{
[ShowActionView showActiveForTitle:@"分享成功" bringForView:VC.view];
break;
}
case SSDKResponseStateFail:
{
[ShowActionView showActiveForTitle:@"分享失败" bringForView:VC.view];
break;
}
default:
break;
}
}
];
这样是没办法区别新浪微博的啊
ps:shareSDK iOS端已更新到v3.4.2