美文网首页iOSiOS CodingiOS实战
使用ShareSDK分享到新浪微博需要注意的问题

使用ShareSDK分享到新浪微博需要注意的问题

作者: 纪叙 | 来源:发表于2016-07-22 16:36 被阅读9115次

    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配置错误的话是不会跳回来的,切记。整过流程就是这样的,亲们有没有觉得很简单。

    相关文章

      网友评论

      • e0603b32ed46:ShareSDK新浪微博进行分享,图片会保存到相册,能不能不保存,这个有设置的方法么
        纪叙:@长跑中的蜗牛 亲,亲测是没有的,你查看下是否自己做了保存到相册处理
      • 纳兰嘉懿:能不跳转微博进行分享吗? 有静默分享的处理吗?
        纪叙:@纳兰嘉懿 有得,新浪微博支持直接分享不用跳转
      • 一个xx的程序员:微博分享报204 的错误怎么解决呢
        纪叙:@一个xx的程序员 查看下微博官方文档,看看204对应的错误描述是什么。
      • 阿尔法代码狗:最近不是微博高级写入功能下线了么,那么分享网络图片用什么方法呢,不想用缓存到本地的哪种方法,我现在做的是能跳转到登录,也能跳转到分享内容,,就是最后一步,点击分享,就显示发表微博客失败,,失败原因也没有,就提示WF: _WebFilterIsActive returning: NO,请问楼主知道原因么
        纪叙:@阿尔法代码狗 请检查微博初始化相关配置。分享网络图片出问题,看看分享本地的是否能成功,定位到错误问题。
      • 管饱饱:带转码后的中文的url就不接受了啊
      • 搬砖公: switch platform
        {
        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)尚未初始化!}

        这是什么原因请问
        搬砖公:@纪叙 我已经找到原因了,我sdk下载的有问题,重新下了一份就好了,谢谢你的回复:pray:
        纪叙:@搬砖公 既然提示原因这么清楚,一定要检查自己初始化是不是哪里有问题配置信息等
        纪叙:@搬砖公 可以加我qq,1071034992.交流
      • 独孤伊人_xie:(4)选择直接跳转到新浪微博进行分享的方法,跳转到新浪微博客户端后的展现样式

        具体的方法是什么??
      • 如果我睡着了世界就和没有关系:第一次授权成功以后再用新浪微博分享不跳转到微博客户端编辑,直接就分享成功了,这个怎么改==
        如果我睡着了世界就和没有关系:@慕栩 抱歉啊,好久没上简书了,解决了,如果还需要的话明天告诉你方法:no_mouth:不需要的话就不用回复了(~㉨~)
        1c1125ad0458:@如果我睡着了世界就和没有关系 你好,你的问题解决了吗,我也遇见了和你一样的问题第一次授权成功以后再用新浪微博分享不跳转到微博客户端编辑,直接就分享成功了
        纪叙:@如果我睡着了世界就和没有关系 应该和你的URLScheme设置有关系,请查看。按照我上面所述的步骤来。
      • 0x00chen:楼主求指导815807765
      • 0x00chen:楼主有demo吗?我怎么不能跳到应用界面分享啊
        纪叙:@沙漠屎神王俊凯 首先确定你是否安装了新浪微博客户端,如果装了,一定要细心检查你的scheme是否设置正确,看看控制台输出错误原因
        0x00chen:@纪叙 我的意思是点击分享按钮弹出一个九宫格的分享页面,然后比如选择了新浪微博,他不会直接打开新浪微博。我想要的效果是点击新浪微博就直接打开手机上的新浪微博
        纪叙:@沙漠屎神王俊凯 你指的是我上面提到的第四种跳转后分享情况吗
      • __灼烧:感谢,解决了我的疑问。。
        纪叙:@不尚 不客气。
      • 萝卜酱紫:NSArray * platforms =@[@(SSDKPlatformTypeQQ),@(SSDKPlatformTypeWechat),@(SSDKPlatformTypeSinaWeibo),friendItem,copyItem];

        //再把声明的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;
        }
        }
        ];
        这样是没办法区别新浪微博的啊
        萝卜酱紫:@溪钥 platformType 这个回调参数你试试
        杨桃wd:你好,我遇到跟你同样的问题,请问你解决了吗?
        纪叙:@萝卜酱紫 看官方文档,按照它的来不会错的
      • 萝卜酱紫:怎么 图片查看不了啊
        纪叙:@萝卜酱紫 你指的什么
      • 喵小帅:楼主问一下新浪微博怎么分享指向AppStore的链接,我把链接如果直接写在text文本这种,分享出去的微博文本,点击跳转会一直显示加载中,跳不到相关的AppStore界面
        纪叙:@喵小帅 一般应用不都会放到应用宝嘛,安卓和iOS,你分享出的链接给你们应用在应用宝的链接,这时在微博里点击就会跳转到应用宝,应用宝识别当前设备是苹果手机就会跳转到appstore
        喵小帅:@纪叙 https://itunes.apple.com/cn/app/kavenir/id1153454638?l=zh&ls=1&mt=8链接是这样的,只有微博不行,QQ和微信都能够直接跳转的,你说的找中转界面的话,具体怎么操作呢?
        纪叙:@喵小帅 可以用一个中转界面,例如先跳转到应用宝
      • ff1b19b73c64:请问楼主,Xcode8编译的工程分享到已经授权过的新浪微博,点击分享再次进入授权页,获取授权信息后自动返回APP,如此反复,返回状态 state = SSDKResponseStateCancel,再无其他信息,这是什么情况。
        ps:shareSDK iOS端已更新到v3.4.2
        i_Rick:您好 我也遇到这个问题了 请问您解决了吗
        纪叙:@第一缕阳光的绚烂 认真查看下配置信息,以及最新版本的sdk是否有新增其他配置。按我步骤来应该不会出错
      • 信以为真:请问你跳转过Twitter吗?说Twitter不需要设置白名单,可是我就是跳转不了,每次都是网页登录。好急啊
        纪叙:@信以为真 好的,我明天来看下。既然友盟可以,我想sharesdk应该也可以。
        信以为真:@纪叙 还没解决呢,网上的朋友告诉我说Twitter是跳不了应用的。只能跳网页。。不过友盟的能做到。我就纳闷了
        纪叙:@信以为真 这个还没有使用过,不过我可以看看,应该按文档来,不会有问题。请问你解决了吗
      • 流星企盼:一直有个问题不懂,我们跳新浪,需要加白名单,新浪跳我们应该是一样需要设置白名单的。但是为什么新浪可以直接跳到我们这里。白名单可以用代码设置的吗?
        流星企盼:@纪叙 谢谢您的回复。这样的话,新浪app的白名单中应该有所有的wb+数字组合。新浪app的白名单是怎么处理的呢?
        纪叙:@流星企盼 白名单不能代码设置。需要在info文件里配置
        纪叙:@流星企盼 你理解错了,你添加白名单跳转到新浪,是你接的别人的sdk。你在别人平台上填写了相关信息,而且你在scheme也设置了自己的,这个作用是第三方记住来源app.结束使用回去
      • 纪叙:技术朋友们,看到了也不要吝啬你们的评论嘛:blush:
        纪叙:@唯美_日向 [ShareSDK share:platform parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error)
        ad325602dc46:@纪叙 (4)选择直接跳转到新浪微博进行分享的方法?具体什么方法呢!

      本文标题:使用ShareSDK分享到新浪微博需要注意的问题

      本文链接:https://www.haomeiwen.com/subject/ckuijttx.html