• 市场分享竞品分析
  • 2025-10-11 03:25:37
  • 经市场调查,目前做分享的SDK,最受欢迎的就是ShareSDK和友盟的,下面我们来对比下这2个SDK在集成过程中的一些区别:

    对比ShareSDK和友盟

    一.SDK大小

    对比环境说明:

    只集成社交平台 新浪微博,微信,QQ

    均不包含各自的UI库,使用最简单最基础的接口实现分享

    均在一个新建的干净的Xcode项目中进行集成

    对比数据说明

    均使用LinkMap对项目进行统计,统计的是项目打包后所占的大小

    表格中均统计各自必须要的库大小(如果需要第三方库,则也应计算在内;不包含系统库)

    以下为统计友盟UM Share 的arm64结果的截图:

    友盟UM Share

    库

    arm64

    UMSocialCore

    318.54KB

    UMSocialNetwork

    37.38KB

    libUMSocialCloudShare.a

    45.50KB

    libSocialWeChat.a

    58.09KB

    libSocialSina.a

    77.89KB

    libSocialQQ.a

    59.87KB

    总计

    597.27KB(0.58M)

    ShareSDK

    库

    arm64

    ShareSDK

    350.56KB

    MOBFoundation

    452.62KB

    ShareSDKConnector

    14.14KB

    ShareSDK.bundle(仅包含Sina,QQ,Wechat三个平台的js)

    72KB

    总计

    889.32KB(0.87M)

    二.集成复杂度

    1)注册,登录,创建应用获取key,基本没差别;

    2)添加SDK,以及依赖库;

    i.可以使用cocoapods集成,无需添加依赖库等配置

    ii.手动集成SDK

    2种方式基本没有差别;

    3)代码配置

    (1)设置AppKey,配置第三方平台;

    友盟:

    [[UMSocialManager defaultManager] setUmSocialAppkey:@"5861e5daf5ade41326001eab"];

    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wxdc1e388c3822c80b" appSecret:@"3baf1193c85774b3fd9d18447d76cab0" redirectURL:nil];

    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1105821097"/*设置QQ平台的appID*/ appSecret:nil redirectURL:nil];

    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"3921700954" appSecret:@"04b48b094faeb16683c32669824ebdad" redirectURL:@"https://sns.whalecloud.com/sina2/callback"];

    ShareSDK

    94FB705E-B1E7-4264-89DB-DB5B7C2D49CB.png

    [ShareSDK registerActivePlatforms:@[

    @(SSDKPlatformTypeSinaWeibo),

    @(SSDKPlatformTypeWechat),

    @(SSDKPlatformTypeQQ)]

    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;

    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; default:

    break;

    }

    }]

    其次,友盟还需要在Appdelegate.m里增加这些回调处理的方法:

    // 支持所有iOS系统

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

    {

    //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响

    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation];

    if (!result) {

    // 其他如支付等SDK的回调

    }

    return result;

    }

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options

    {

    //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响

    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url options:options];

    if (!result) {

    // 其他如支付等SDK的回调

    }

    return result;

    }

    //支持目前所有iOS系统

    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

    {

    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];

    if (!result) {

    // 其他如支付等SDK的回调

    }

    return result;

    }

    但是ShareSDK并不需要加这些方法。

    (2)实现分享

    友盟:

    - (void)umshare

    {

    [UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {

    // 根据platformType调用相关平台进行分享

    if (platformType == UMSocialPlatformType_WechatSession) {

    [self shareWebPageToPlatformType:UMSocialPlatformType_WechatSession];

    } else if(platformType == UMSocialPlatformType_QQ)

    {

    [self shareWebPageToPlatformType:UMSocialPlatformType_QQ];

    }

    else if(platformType == UMSocialPlatformType_Sina)

    {

    [self shareWebPageToPlatformType:UMSocialPlatformType_Sina];

    }

    }];

    }

    - (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType

    {

    //创建分享消息对象

    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];

    //创建网页内容对象

    NSString* thumbURL = @"https://mobile.umeng.com/images/pic/home/social/img-1.png";

    // NSString *imgPath = [[NSBundle mainBundle] pathForResource:@"D11" ofType:@"jpg"];

    // NSData * path =[NSData dataWithContentsOfFile:imgPath];

    UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"欢迎使用【友盟+】社会化组件U-Share" descr:@"欢迎使用【友盟+】社会化组件U-Share,SDK包最小,集成成本最低,助力您的产品开发、运营与推广!" thumImage:thumbURL];

    //设置网页地址

    shareObject.webpageUrl = @"http://mobile.umeng.com/social";

    //分享消息对象设置分享内容对象

    messageObject.shareObject = shareObject;

    //调用分享接口

    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {

    if (error) {

    NSLog(@"************Share fail with error %@*********",error);

    }else{

    NSLog(@"response data is %@",data);

    NSLog(@"分享成功");

    }

    }];

    }

    ShareSDK:

    //1、创建分享参数

    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];

    [shareParams SSDKSetupShareParamsByText:@"分享内容"

    images:[[NSBundle mainBundle] pathForResource:@"COD13" ofType:@"jpg"]

    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:

    {

    NSLog(@"分享成功");

    break;

    }

    case SSDKResponseStateFail:

    {

    NSLog(@"分享失败~~%@",error.description);

    break;

    }

    default:

    break;

    }

    }

    ];

    总结:

    ShareSDK:方法多为block设置结构,代码多但易于检查,层次清晰;

    友盟:方法设置比较分散,平台多时不易查找问题,不过灵活多选;

    个人感觉ShareSDK比友盟更好用,这不仅体现在代码设计结构上,另外ShareSDK也有更专业的技术服务!

    4)设置URL Scheme以及白名单

    如何设置QQ的URL Scheme?

    友盟:

    D4672FFE-76B1-47CA-807D-2DB3A89313AB.png

    ShareSDK:

    D6A81DD7-1E56-49EE-AEB6-967A270393D1.png

    结论:这里可以看出ShareSDK开发文档更加详细,容易理解。

    其他对比

    对比点

    友盟

    ShareSDK

    大小

    1

    技术服务

    1

    SDk更新频率

    1

    文档简单

    1

    技术论坛

    1

    以上就是个人的见解啊,亲们觉得哪个更方便呢,欢迎发表意见哦!