iOS ShareSDK 第三方分享

作者: 灿烂先森 | 来源:发表于2016-01-15 15:53 被阅读7189次

    由于近期工作需要自己抽时间搞了一下第三方分享,这里使用的是shareSDK的第三方,在使用的过程中有一些心得和体会,特在此和大家分享一下~

    一、获取App Key

    首先,您需要登录shareSDK 的官方网站登录或者注册一个账户,注册成功后可以选择进入服务器的后台

    废话不多说,直接上图!

    这里演示的是我已经创建好的实例APP,如果第一次创建直接添加即可.


    add.png interduce.png

    点击左侧列表最下边的应用信息,可以显示你需要添加分享的APP(注意这里的项目一定是要在AppStore上线的),其中App Key 和 App Secret是在创建应用时SharrSDK自动生成的,接下来的应用名称,简介,和应用分类按自己的需求填写就行,这里不多做介绍了.

    下面介绍一下第二栏,IOS相关信息,这里很重要,其中1,2,5是必填的,2,4填一个就行,3为选填(Optional),第一点Bundle ID 不用多说了吧,直接从你的项目里获取就行(需要注意的是一定要填你上线APP的切忌不要填测试版的),第二点iPhone Store ID(即开发者中心的 APP ID) 可以从苹果开发中心获取,苹果开发平台会为每个成功上线项目生成一个独有的APP ID,第三点选填,这里不做介绍,第四点如果你的项目有Pad版本的,这里就需要填写了,获取方法和第二点类似.

    图标,没什么说的,上传你应用图片即可,这里对图标尺寸的大小ShareSDK 并没有明确的规定,但个人觉得清晰就好,哈哈~

    二、下载SDK

    SDK分为简洁版和标准版,这里讲解的是简洁版,标准版的话,个人感觉和简洁版没什么区别哈哈

    下载ShareSDK 包下载后解压压缩包如图所示:

    解压后.jpg

    文件夹libraries就是分享所需要的SDK了(使用时直接将这个文件夹拖入工程),其目录下又有相关SDK和文件夹extends,这里对其做一下简单介绍其中extends文件夹下是你想要使用分享的社交软件相应SDK(比如:微博,QQ,微信等)剩下得SDK是shareSDK公司集成的相关SDK,功能介绍如下:

      1. extends:第三方平台SDK。(不需要的平台的SDK可直接移除)
    • 2.MOBFoundation.framework:基础功能框架。(必要)
    • 3.ShareSDK.bundle:ShareSDK资源文件。(必要)
    • 4.ShareSDK.framework:核心静态库。(必要)
    • 5.ShareSDKConnector.framework:用于ShareSDK框架与外部框架连接 的代理框架插件。使用第三方SDK时必要。
    • 6.ShareSDKExtension.framework:对ShareSDK功能的扩展框架插件。目前主要提供第三方平台登录、一键分享、截屏分享、摇一摇分享等相关功能。需要使用以上功能时必要。
    • 7.ShareSDKInterfaceAdapter.framework:ShareSDK v2.x对简洁版的接口兼容包。(建议直接使用简洁版接口,尽量不使用这个兼容包)
    • 8.ShareSDKUI.bundle:分享菜单栏和分享编辑页面资源包。(如果自定义这些UI可直接移除)
    • 9.ShareSDKUI.framework:分享菜单栏和分享编辑页面。(如果自定义这些UI可直接移除)

    三、快速集成

    第一步:将libraries 文件拖入你的工程目录:

    文档2.png ](http:https://img.haomeiwen.com/i790011/044e4c2bfeed1c6a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    注意:请务必在上述步骤中选择“Create groups for any added folders”单选按钮组。如果你选择“Create folder references for any added folders”,一个蓝色的文件夹引用将被添加到项目并且将无法找到它的资源。

    第二步:添加依赖库 添加步骤见下图:

    添加库.png
    必须添加的依赖库如下(Xcode 7 下 .dylib库后缀名更改为.tbd):
    • 1.libicucore.dylib
    • 2.libz.dylib
    • 3.libstdc++.dylib
    • 4.JavaScriptCore.framework
    以下依赖库根据社交平台添加:

    新浪微博SDK依赖库

    • 1.ImageIO.framework
    • 2.AdSupport.framework
    • 3.libsqlite3.dylib

    QQ好友和QQ空间SDK依赖库

    • 1.libsqlite3.dylib
    • 2.微信SDK依赖库
    • 3.libsqlite3.dylib

    短信和邮件需要依赖库

    • 1.MessageUI.framework

    Google+SDK依赖库

    • 1.CoreMotion.framework
    • 2.CoreLocation.framework
    • 3.MediaPlayer.framework
    • 4.AssetsLibrary.framework
    • 5.AddressBook.framework

    第三步:设置ShareSDK的Appkey并初始化对应的第三方社交平台 打开AppDelegate.m(代表你的工程名字)导入头文件

    #import <ShareSDK/ShareSDK.h>
    #import <ShareSDKConnector/ShareSDKConnector.h>
    
    //腾讯开放平台(对应QQ和QQ空间)SDK头文件
    #import <TencentOpenAPI/TencentOAuth.h>
    #import <TencentOpenAPI/QQApiInterface.h>
    
    //微信SDK头文件
     #import "WXApi.h"
    
    //新浪微博SDK头文件
     #import "WeiboSDK.h"
    //新浪微博SDK需要在项目Build Settings中的Other Linker Flags添加"-ObjC"
    
    //人人SDK头文件
    #import <RennSDK/RennSDK.h>
    
    //GooglePlus SDK头文件
    #import <GooglePlus/GooglePlus.h>
    //GooglePlus SDK需要在项目Build Settings中的Other Linker Flags添加"-ObjC"
    

    在- (BOOL)application: didFinishLaunchingWithOptions:方法中调用registerApp方法来初始化SDK并且初始化第三方平台
    - (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions: (NSDictionary )launchOptions
    {
    /

    * 设置ShareSDK的appKey,如果尚未在ShareSDK官网注册过App,请移步到http://mob.com/login 登录后台进行应用注册,
    * 在将生成的AppKey传入到此方法中。
    * 方法中的第二个第三个参数为需要连接社交平台SDK时触发,
    * 在此事件中写入连接代码。第四个参数则为配置本地社交平台时触发,根据返回的平台类型来配置平台信息。
    * 如果您使用的时服务端托管平台信息时,第二、四项参数可以传入nil,第三项参数则根据服务端托管平台来决定要连接的社交SDK。
    */
    [ShareSDK registerApp:@"iosv1101"`

           activePlatforms:@[
                            @(SSDKPlatformTypeSinaWeibo),
                            @(SSDKPlatformTypeMail),
                            @(SSDKPlatformTypeSMS),
                            @(SSDKPlatformTypeCopy),
                            @(SSDKPlatformTypeWechat),
                            @(SSDKPlatformTypeQQ),
                            @(SSDKPlatformTypeRenren),
                            @(SSDKPlatformTypeGooglePlus)]
           onImport:^(SSDKPlatformType platformType)    
           {
               switch (platformType)
               {
                  case SSDKPlatformTypeWechat:
                       [ShareSDKConnector connectWeChat:[WXApi class]];
                    break;
                  case SSDKPlatformTypeQQ:
                       [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
                    break;
                  case SSDKPlatformTypeSinaWeibo:
                          [ShareSDKConnector connectWeibo:[WeiboSDK class]];
                    break;
                  case SSDKPlatformTypeRenren:
                          [ShareSDKConnector connectRenren:[RennClient class]];
                    break;
                  case SSDKPlatformTypeGooglePlus:
                          [ShareSDKConnector connectGooglePlus:[GPPSignIn class]
                                                       shareClass:[GPPShare class]];
                    break;
                  default:
                    break;
                }
          }
          onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) 
          {
    
              switch (platformType)
              {
                  case SSDKPlatformTypeSinaWeibo:
                      //设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
                      [appInfo SSDKSetupSinaWeiboByAppKey:@"568898243"
                                                appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3"
                                              redirectUri:@"http://www.sharesdk.cn"
                                                 authType:SSDKAuthTypeBoth];
                   break;
                  case SSDKPlatformTypeWechat:
                      [appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885"
                                            appSecret:@"64020361b8ec4c99936c0e3999a9f249"];
                   break;
                  case SSDKPlatformTypeQQ:
                      [appInfo SSDKSetupQQByAppId:@"100371282"
                                           appKey:@"aed9b0303e3ed1e27bae87c33761161d"
                                         authType:SSDKAuthTypeBoth];
                   break;
                  case SSDKPlatformTypeRenren:
                      [appInfo        SSDKSetupRenRenByAppId:@"226427"
                                               appKey:@"fc5b8aed373c4c27a05b712acba0f8c3"
                                            secretKey:@"f29df781abdd4f49beca5a2194676ca4"
                                             authType:SSDKAuthTypeBoth];
                    break;
                   case SSDKPlatformTypeGooglePlus:
                      [appInfo SSDKSetupGooglePlusByClientID:@"232554794995.apps.googleusercontent.com"
                                                clientSecret:@"PEdFgtrMw97aCvf0joQj7EMk"
                                                 redirectUri:@"http://localhost"
                                                    authType:SSDKAuthTypeBoth];
                    break;
                   default:
                    break;
              }
          }];
     return YES;
    }
    

    (注意:每一个case对应一个break不要忘记填写,不然很可能有不必要的错误,新浪微博的外部库如果不要客户端分享或者不需要加关注微博的功能可以不添加,否则要添加,QQ,微信,google+这些外部库文件必须要加)

    第四步:添加实现代码 打开需要集成分享功能的视图源码,把如下代码复制并粘贴到你要分享的位置,例如到响应分享按钮的方法中。并且修改相应的参数即可。

    1.需要在分享的试图中导入的头文件

    #import <ShareSDK/ShareSDK.h>
    #import <ShareSDKUI/ShareSDK+SSUI.h>
    

    2.调用构造分享参数接口和分享的接口

      //1、创建分享参数
    NSArray* imageArray = @[[UIImage imageNamed:@"shareImg.png"]];
    (注意:图片必须要在Xcode左边目录里面,名称必须要传正确,如果要分享网络图片,可以这样传iamge参数 images:@[@"http://mob.com/Assets/images/logo.png?v=20150320"])
    if (imageArray) {
    
        NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
        [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                         images:imageArray
                                            url:[NSURL URLWithString:@"http://mob.com"]
                                          title:@"分享标题"
                                           type:SSDKContentTypeAuto];
     //2、分享(可以弹出我们的分享菜单和编辑界面)
        [ShareSDK showShareActionSheet:nil //要显示菜单的视图, iPad版中此参数作为弹出菜单的参照视图,只有传这个才可以弹出我们的分享菜单,可以传分享的按钮对象或者自己创建小的view 对象,iPhone可以传nil不会影响
                                 items:nil
                           shareParams:shareParams
                   onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
    
                       switch (state) {
                           case SSDKResponseStateSuccess:
                           {
                               UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享成功"
                                                                                   message:nil
                                                                                  delegate:nil
                                                                         cancelButtonTitle:@"确定"
                                                                         otherButtonTitles:nil];
                               [alertView show];
                               break;
                           }
                           case SSDKResponseStateFail:
                           {
                               UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失败"
                                                                                   message:[NSString stringWithFormat:@"%@",error]
                                                                                  delegate:nil
                                                                         cancelButtonTitle:@"OK"
                                                                         otherButtonTitles:nil, nil];
                                [alert show];
                                break;
                            }
                            default:
                               break;
                            }
                    }  
        ];}
    

    编译并运行后,点击分享按钮就成功发送到社交平台的话说明你已经基本集成成功了。但是,为了使您的用户有更好的分享体验,以及您的应用有更多的分享量,更好地在社交平台上传播,我们建议您参考“进阶功能”的指引进行SSO(免登录)和更多社交平台的设置。

    下面是SSO设置

    可选:支持微信所需的相关配置及代码 在微信开放平台(http://open.weixin.qq.com/ )注册应用并取得应用的AppID,然后打开下图位置,在URL Types中添加微信AppID

    微信.png
    打开AppDelegate.m(代表你的工程名字)文件,导入微信SDK的头文件并增加微信的外部库接口
    #import <ShareSDKConnector/ShareSDKConnector.h>
    //微信SDK头文件
    #import "WXApi.h"
    //初始化的import参数注意要链接原生微信SDK。
    case SSDKPlatformTypeWechat:
    [ShareSDKConnector connectWeChat:[WXApi class]];
    break;
    可选:支持QQ所需的相关配置及代码 登录QQ互联(http://connect.qq.com/ )注册成为开发者并登记应用取得AppId,然后打开下图位置,在URL Types中添加QQ的AppID,其格式为:”QQ” + AppId的16进制(如果appId转换的16进制数不够8位则在前面补0,如转换的是:5FB8B52,则最终填入为:QQ05FB8B52 注意:转换后的字母要大写) 转换16进制的方法:echo ‘ibase=10;obase=16;801312852′|bc,其中801312852为QQ的AppID,见下图 转码.png
    QQ的有些小蛋疼,因为要转十六进制码,如果觉得上面的命令行转码比较麻烦的话,还可以使用网上的在线转码,这里给出开源中国的在线转码,呵呵,秒转!
    转码完成后,需要在十六进制码的前面加上QQ的前缀,以及将十六进制码的字母大写,一定要大写,切记切记! QQ.png
    然后打开工程中的AppDelegate.m(代表你的工程名字)文件,导入QQSDK的头文件并增加QQ的外部库文件接口:
    #import <ShareSDK/ShareSDK.h>
    #import <ShareSDKConnector/ShareSDKConnector.h>
    //腾讯开放平台(对应QQ和QQ空间)SDK头文件
    #import <TencentOpenAPI/TencentOAuth.h>
    #import <TencentOpenAPI/QQApiInterface.h>
    //初始化的import参数注意要链接原生QQSDK。
    case SSDKPlatformTypeQQ:
    [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
    break;
    可选:配置新浪微博、Facebook的SSO 登录新浪微博和facebook的开放平台,获取AppID 。新浪微博的url scheme的设置格式为wb+AppID,facebook的设置格式为fb+AppID。具体参考下图: 新浪微博.png
    附:目前的新浪微博SDK需要在项目的Build Settings中的Other Linker Flags添加”-ObjC”,如果不配置有可能会崩溃。步骤如下:
    添加objc.png
    当新浪微博需要客户端分享或者增加关注微博的功能,需要打开工程中的AppDelegate.m(代表你的工程名字)文件,导入新浪微博SDK的头文件并增加新浪微博的外部库文件接口:
    #import <ShareSDK/ShareSDK.h>
    #import <ShareSDKConnector/ShareSDKConnector.h>
    //新浪微博SDK头文件
    #import "WeiboSDK.h"
    //初始化的import参数注意要链接原生新浪微博SDK。
    case SSDKPlatformTypeSinaWeibo:
    [ShareSDKConnector connectWeibo:[WeiboSDK class]];
    break;
    详情可参考:shareSDK官方文档

    四、iOS9如何适配

    1、大部分社交平台接口不支持https协议

    作为开发者大家想必都知道苹果在iOS9发布后,将http协议升级为https安全协议。因此在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据。而对ShareSDK来说,具体表现可能是,无法授权、分享、获取用户信息等。

    那么该如何解决呢?这里提供一个简单暴力的方法——暂时退回到http协议
    具体方法:

    在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。

    然后给它添加一个Key:NSAllowsArbitraryLoads,类型为Boolean类型,值为YES;

    白名单.png

    2、大部分社交平台SDK不支持bitcode

    iOS 9新建项目默认需要支持bitcode,而不支持bitcode的SDK会导致无法编译运行。

    解决方案:

    (1)、暂时关闭对bitcode的支持(建议),方法如下图

    (2)、移除不支持bitcode的平台SDK。

    bitcode.png

    在iOS 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。因此要支持客户端的分享和授权等,需要配置Scheme名单。

    具体方法:

    1)、在项目的info.plist中添加一LSApplicationQueriesSchemes,类型为Array。

    2)、然后给它添加一个需要支持的项目,类型为字符串类型;


    Scheme.png

    各平台详细URL请看:详细URL

    必看注意

    1.在iOS9中,如果没有添加上述白名单,系统会打印类似如下提示:
    .-canOpenURL: failed for URL: “sinaweibohdsso://xxx” – error: “This app is not allowed to query for scheme sinaweibohdsso”(如下图)
    如没有添加相关白名单,有可能导致分享失败,例如不会跳转微信,不会跳转QQ等。
    2.添加完上述所需的名单,系统依然会打印类似信息:
    .-canOpenURL: failed for URL: “sinaweibohdsso://xxx” – error: “null”
    这是系统打印的信息,目前是无法阻止其打印,即无法消除的
    3.上述白名单,是技术人员通过不断的测试收集整理所得,如果各位开发者朋友发现上表格有所遗漏,请根据系统信息添加相关白名单即可。

    五、其他问题

    1、自定义分享图标

    如果你嫌弃shareSDK自带的图标想换成自己的美美哒图标的话,你需要替换shareSDK的集成包,目录如下

    icon.png
    这里图标名称是固定的: sns_icon_xx@2x.png
    如果你想修改图标,把你的定制的图标讲此文件下对应的图标替换即可,注意要先删除shareSDK自带的再倒入,不然导不进去
    替换完成效果: 图标.jpg

    2、修改分享平台名称

    问题1.jpg

    shareSDK 自带的分享平台名称默认是英文的,如果想汉化的话,执行操作如下:

    汉化.png
    如果汉化的名称还不满意,比如:QQ改成QQ好友分享,那你需要修改shareSDK的汉化包 汉字修改.png

    3、去掉朋友圈收藏、QQ空间

    如果你的项目需求并没有要求QQ空间分享,和微信朋友圈收藏,但shareSDK 自带的有,想去掉怎么办?
    QQ和微信默认的SDK都导入的是主平台,而主平台自带QQ空间(朋友圈收藏),要想去掉的话我们只能将主平台替换为响应的子平台:

     [ShareSDK registerApp:@"XXXXXXX"
            activePlatforms:@[
                            // 不要使用微信总平台进行初始化
                            //@(SSDKPlatformTypeWechat),
                            // 使用微信子平台进行初始化,即可
                            @(SSDKPlatformSubTypeWechatSession),
                            @(SSDKPlatformSubTypeWechatTimeline),
                            //不要使用QQ总平台进行初始化
                            //@(SSDKPlatformTypeQQ),
                            //使用QQ子平台进行初始化
                            @(SSDKPlatformSubTypeQQFriend)]
                            ]
            onImport:^(SSDKPlatformType platformType) {
    
                     switch (platformType)
                     {
                         case SSDKPlatformTypeWechat:
                             [ShareSDKConnector connectWeChat:[WXApi class]];
                             break;
                        default:
                             break;
                     }
    
                 }
            onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) {
    
              switch (platformType)
              {
                   case SSDKPlatformTypeWechat:
                      [appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885"
                                            appSecret:@"64020361b8ec4c99936c0e3999a9f249"];
                      break;
                    case SSDKPlatformTypeQQ:
                      [appInfo SSDKSetupQQByAppId:@"100371282"
                                           appKey:@"aed9b0303e3ed1e27bae87c33761161d"
                                         authType:SSDKAuthTypeBoth];
                      break;
                   default:
                      break;
              }
          }];
    

    4、跳过分享的编辑界面

    设置弹出分享菜单,直接点击菜单中的平台分享(跳过分享的编辑界面)。

    //先构造分享参数:
     NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
     [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                         images:@[[UIImage imageNamed:@"shareImg.png"]]
                                            url:[NSURL URLWithString:@"http://mob.com"]
                                          title:@"分享标题"
                                           type:SSDKContentTypeAuto];
      //调用分享的方法
      SSUIShareActionSheetController *sheet = [ShareSDK showShareActionSheet:view
                               items:nil
                         shareParams:shareParams
                      onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
                             switch (state) {
                                           case SSDKResponseStateSuccess:
                                                    NSLog(@"分享成功!");
                                                    break;
                                           case SSDKResponseStateFail:
                                                    NSLog(@"分享失败%@",error);
                                                    break;
                                           case SSDKResponseStateCancel:
                                                     NSLog(@"分享已取消");
                                                     break;
                                           default:
                                                      break;
                                         }
                                   }];
    //删除和添加平台示例
     [sheet.directSharePlatforms removeObject:@(SSDKPlatformTypeWechat)];(默认微信,QQ,QQ空间都是直接跳客户端分享,加了这个方法之后,可以跳分享编辑界面分享)
     [sheet.directSharePlatforms addObject:@(SSDKPlatformTypeSinaWeibo)];(加了这个方法之后可以不跳分享编辑界面,直接点击分享菜单里的选项,直接分享)
    

    5、自定义分享菜单栏样式

    如何自定义分享菜单呢?你可以这样:

    // 弹出分享菜单需要导入的头文件
    #import <ShareSDKUI/ShareSDK+SSUI.h>
    // 自定义分享菜单栏需要导入的头文件
    #import <ShareSDKUI/SSUIShareActionSheetStyle.h>
    
    //1、创建分享参数(必要)
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    NSArray* imageArray = @[[UIImage imageNamed:@"图片名.png"]];
     (注意:图片必须要在Xcode左边目录里面,名称必须要传正确,如果要分享网络图片,可以这样传iamge参数 images:@[@"http://mob.com/Assets/images/logo.png?v=20150320"])
    [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                     images:imageArray
                                        url:[NSURL URLWithString:@"http://mob.com"]
                                      title:@"分享标题"
                                       type:SSDKContentTypeAuto];
    
    // 设置分享菜单栏样式(非必要)
    // 设置分享菜单的背景颜色
    [SSUIShareActionSheetStyle setActionSheetBackgroundColor:[UIColor colorWithRed:249/255.0 green:0/255.0 blue:12/255.0 alpha:0.5]];
    // 设置分享菜单颜色
    [SSUIShareActionSheetStyle setActionSheetColor:[UIColor colorWithRed:21.0/255.0 green:21.0/255.0 blue:21.0/255.0 alpha:1.0]];
    // 设置分享菜单-取消按钮背景颜色
    [SSUIShareActionSheetStyle setCancelButtonBackgroundColor:[UIColor colorWithRed:21.0/255.0 green:21.0/255.0 blue:21.0/255.0 alpha:1.0]];
    // 设置分享菜单-取消按钮的文本颜色
    [SSUIShareActionSheetStyle setCancelButtonLabelColor:[UIColor blackColor]];
    // 设置分享菜单-社交平台文本颜色
    [SSUIShareActionSheetStyle setItemNameColor:[UIColor whiteColor]];
    // 设置分享菜单-社交平台文本字体
    [SSUIShareActionSheetStyle setItemNameFont:[UIFont systemFontOfSize:10]];
    //设置分享编辑界面的导航栏颜色
    [SSUIEditorViewStyle setiPhoneNavigationBarBackgroundColor:[UIColor blackColor]];
    //设置编辑界面标题颜色
    [SSUIEditorViewStyle setTitleColor:[UIColor redColor]];
    //设置取消发布标签文本颜色
    [SSUIEditorViewStyle setCancelButtonLabelColor:[UIColor blueColor]];
    [SSUIEditorViewStyle setShareButtonLabelColor:[UIColor blueColor]];
    //设置分享编辑界面状态栏风格
    [SSUIEditorViewStyle setStatusBarStyle:UIStatusBarStyleLightContent];
    //设置简单分享菜单样式
    [SSUIShareActionSheetStyle setShareActionSheetStyle:ShareActionSheetStyleSimple];
    
    //2、弹出ShareSDK分享菜单
    [ShareSDK showShareActionSheet:view
                             items:nil
                       shareParams:shareParams
               onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) { ...... }
    

    不过,在iOS端的自定义分享菜单上shareSDK 给出开发者的自定义只是简单的修改一下背景颜色、修改文本颜色等,并无法大面积修改UI,如果非要修改的话,开发者只能重新定制UI,包括图标排版,每个分享平台的响应等等,而相比iOS端,安卓端可以直接继承其官方方法修改UI...有点小坑啊,希望以后多做改进!

    假如你想自定义UI的话,你需要用自己的方法写界面,写好了之后可以调用ShareSDKd的无UI的分享方法

    //创建分享参数
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                         images:images //传入要分享的图片
                                            url:[NSURL URLWithString:@"http://mob.com"]
                                          title:@"分享标题"
                                           type:SSDKContentTypeAuto];
     //进行分享
     [ShareSDK share:SSDKPlatformTypeSinaWeibo //传入分享的平台类型
         parameters:shareParams
    onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) { // 回调处理....}];
    }
    

    另外,现在ShareSDK 开源了他们的自定义UI,地址点这里

    好了第三方分享就写到这里了,希望此贴可以帮到你!同时也希望大家提出宝贵意见,大家一起交流学习。思密达!

    相关文章

      网友评论

      • 木登与木由:你好楼主,分享后留在微信或QQ,再返回APP后返回的结果是取消分享是怎么回事
        灿烂先森:@DP_XZC 1、要确定分享的内容是否已经分享出去;2、打印下分享回调看看控制台输出什么,然后再确定问题
      • 野比大雄001:大神,求一份Demo?
        灿烂先森:@桥边风满袖 shareSDK 官网可以下
      • JornyQi:你好,博主,使用sdk 分享过程,[ShareSDK isClientInstalled:SSDKPlatformSubTypeQQFriend] 这个方法返回NO, 一直提示未安装;可能是哪里问题
        灿烂先森:你好,猜测是你的URL Schemes设置问题。请看本文三下面的SSO设置
      • overla5:你好。集成facebook分享 登录,需要导入facebook 的 sdk吗?还是sharesdk 自带的有 调用就可以了?
        facebook 创建应用的话,需要通过他的那个审核吗?不通过可以调起app吗
        谢谢
        灿烂先森:@失格人间 是的,祝你顺利通过:relaxed:
        overla5:@灿烂先森 好的。谢谢 就是说要先通过审核 谢谢:smiley:
        灿烂先森:@失格人间 facebook的SDK不用单独导,shareSDK里有集成,你在下载的时候选择包含facebook就行。如果想要使用facebook分享的话,一定要过他的审核的,不通过即不能使用它的相关服务,及时有应用也无法调起,因为你没有先关的key关联到它
      • 863c73f31933:作者你好,sharesdk新浪分享sso失败,配置信息都看了核对了几遍了,在测试demo里面是可以的,但是放到工程里面就不行了,作者你知道这是什么原因不?
        灿烂先森:@SunlightInMyLif 解决了便是极好的~抱歉没有及时回复你 ,祝技术更上一层楼! :blush:
        863c73f31933:@灿烂先森 已经解决了是新的sdk里面有个XML文件里面把bundleid写死了,把那块代码注释了就好了
        灿烂先森:@SunlightInMyLif 首先你需要核对下你新浪微博的key是否正确;(注意这个Key是你利用自己APP的bundle id申请的),如果key没问题,你需要查看你的URL Scheme是否配置了,路径:Targets->info->url type(具体配置参考文章:三->SSO设置)。希望能够帮到你 :blush:
      • 863c73f31933:作者你好,sharesdk新浪分享sso失败,配置信息都看了核对了几遍了,在测试demo里面是可以的,但是放到工程里面就不行了,作者你知道这是什么原因不?
      • Fluent:问一下,我的app还没有上线呢,iPhone Store ID填什么
        灿烂先森:@FlyChang iPhone Store ID 是用来绑定你的APP的,如果没有上线的话,分享的功能是可以正常使用的,测试阶段,iPhone Store ID可以先不填,不影响使用,待APP上线后再补上即可,或者你可以先用ShareSDKDemo中的提供的一些Key也行;希望可以帮到你 :blush:
      • 916e25e9d71d:你好楼主,我把官方的demo集成到我的项目中,代码是一模一样的,设置也是直接考过来的,最后出现的分享平台中也出现的很多选择,但没有微信朋友圈和qq的平台图标,但是这些官方的demo单独运行的时候这些都是有的,这是为什么呢
        灿烂先森:@ios666 出现你这种情况可能有两种原因。一、你的模拟器或者真机并没有安装微信,QQ等APP,或者是你的项目中在集成这些社交软件时出了问题,比如key问题,SDK导入问题;二、你项目中的图标和ShareSDK中的图标冲突了,图标路径可看本博的五-1;希望可以帮到你! :blush:
      • 空转风:公司之前有个安卓版的项目,现在要做iOS,我去qq开放平台注册提示我项目名重复,那我又不能用其他项目名,而这个项目是安卓的,我就想问我iOS能用他的appid还有appsecret吗
        灿烂先森:@年光逝也被僵尸号占了 天了噜!安卓和iOS可以用一套appid? :scream: 是我孤陋寡闻了 :fearful:
        空转风:@灿烂先森 没标明……但是我在cocoachina问了一下他们说可以…………
        灿烂先森:@年光逝也被僵尸号占了 iOS不能用安卓的appid,iOS也没有appsecret这一项。平台的项目名重复?不应该吧,难道以前项目申请时没有标明是安卓移动端而非iOS端吗?
      • 信以为真:1.我跳FaceBook的时候,url参数如果设置了就跳不了应用只能跳网页。设置为空才能条应用;
        刚好看到你给的答案链接里说不能有链接
        [shareParams SSDKSetupShareParamsByText:@"分享方法一 http://mob.com&quot;
        images:imageArray
        url:nil
        title:@"分享标题"
        type:SSDKContentTypeAuto];
        2.我也试着集成友盟的,友盟可以跳转应用,。。
        信以为真:@信以为真 分享到微信的,怎么把那个微信收藏的那个不要显示。。
        信以为真:@灿烂先森 恩恩。我公司做外贸的,友盟注册应用确实麻烦,还要国外手机!
        灿烂先森:@信以为真 确实相比国内分享平台,Facebook,Twitter这种分享比较麻烦一些,第三方支持也少。友盟的话没有深研究过,形式应该和Share差不多吧!如果可以的话,可以互相探讨下!共同进步 :blush:
      • 信以为真:请问我分享到Twitter却跳不了应用,只能网页授权,你试过吗、。?网上说Twitter不需要设置额外的白名单啊。。
        灿烂先森:@信以为真 Twitter只能网页授权,调不了应用的,所以Twitter不需要设置白名单。这是官方给出的答案,希望能够帮到你!http://bbs.mob.com/forum.php?mod=viewthread&tid=15991&highlight=Twitter
      • 34码的小孩子:我想问一下,如果想要自定义内容编辑视图,该怎么弄?在官方的文档中只看到可以设置菜单栏的样子,是不是不能自定义内容编辑视图?
        34码的小孩子:上次我没注意到这个,想错了。要自定义编辑视图还是很简单的 :joy:
        34码的小孩子:@灿烂先森 其实我发现可以换另外一种做法来完成。官方是允许我们自定义分享视图的,而且也提供了一个无UI分享,其实只要我们在自定义分享视图中选择item的时候,跳转到自定义内容编辑视图,然后再用无UI分享,就可以了。因为觉得自带的内容编辑视图真的无法适应自家的app的UI,所以不能忍 :joy:
        灿烂先森:@34码的小孩子 share的话,目前不支持自定义视图编辑,我问过官方技术支持的!有空的话你也可以问下 :stuck_out_tongue_winking_eye:
      • 小代码仔:楼主早上好。 还是昨天的问题 在配置SSO 免登陆分享的时候 提到在APPDelegate 中添加头文件,然后设置外部库文件接口。 这个步骤 不知道怎么弄,直接粘上去会报错的
        灿烂先森:@qwj SSO的话,你需要看下你项目的info文件是否做了相应的配置(详细看帖子的SSO设置),头文件,不需要再添加,除非你刚导入时没添加全。至于添加报错的话,可能是你重复添加头文件,或者是相关分享的SDK文件没导入全
      • 小代码仔:您好楼主,在加**的外部库文件接口时候,不知道写在哪里。 还有分享的时候微信,qq,朋友圈,qq空间都没有出现在分享的那个面板上。是因为用的是模拟器的原因吗
        灿烂先森:@qwj 对的,模拟器只会出现微博的分享,因为微博有网页版的分享跳转,QQ和微信则没有,需要手机上安装了相应的APP才会出现图标,以及分享时的跳转(建议使用真机测试分享)
      • c82c89fa243d:你好问下如何让编辑页面不显示,直接跳转
        灿烂先森:@Gentear 也没帮到你。。。。 :sweat:
        c82c89fa243d:@斑马banana 就是弹出新的页面 然后点击按钮分享的那个 我在官方demo找到了 谢谢啦
        灿烂先森:@Gentear 你的编辑页面指的是哪个呢?

      本文标题:iOS ShareSDK 第三方分享

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