市场分享最新竞品分析

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

对比ShareSDK和友盟


一.SDK大小

对比环境说明:
  1. 只集成社交平台 新浪微博,微信,QQ,Facebook(微博,QQ,微信均使用精简版)
  2. 均不包含各自的UI库,使用最简单最基础的接口实现分享
  3. 均在一个新建的干净的Xcode项目中进行集成
对比数据说明
  1. 均使用LinkMap对项目进行统计,统计的是项目打包后所占的大小
  2. 表格中均统计各自必须要的库大小(如果需要第三方库,则也应计算在内;不包含系统库)

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

友盟UM Share
arm64
UMShare 394.15KB
UMCommon 273.92KB
libSocialWeChat.a 61.16KB
libSocialSina.a 86.48KB
libSocialQQ.a 65.58KB
FBSDKShareKit 556.99KB
FBSDKCoreKit 509.87KB
FBSDKLoginKit 119.08KB
libSocialFacebook.a 21.93KB
Bolts 86.52KB
总计 2175.68(2.12M)
ShareSDK
arm64
ShareSDK 238.02KB
MOBFoundation 594.77KB
SinaWeiboConnector 142.56KB
WechatConnector 93.50KB
QQConnector 65.15KB
FacebookConnector 112.62KB
ShareSDK.bundle(仅包含Sina,QQ,Wechat,Facebook三个平台的js) 45KB
总计 1291.62(1.26M)

二.集成复杂度

1)注册,登录,创建应用获取key,基本没差别;
2)添加SDK,以及依赖库;

i.可以使用cocoapods集成,无需添加依赖库等配置
ii.手动集成SDK
2种方式基本没有差别;

3)代码配置
(1)设置AppKey,配置第三方平台;
友盟:
//引入头文件
#import <UMShare/UMShare.h>
#import <UMCommon/UMCommon.h>

[UMConfigure initWithAppkey:@"5861e5daf5ade41326001eab" channel:@"App Store"];
  
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wxdc1e388c3822c80b" appSecret:@"3baf1193c85774b3fd9d18447d76cab0" redirectURL:@"http://mobile.umeng.com/social"];
    
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1105821097"/*设置QQ平台的appID*/  appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];
    
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"3921700954"  appSecret:@"04b48b094faeb16683c32669824ebdad" redirectURL:@"https://sns.whalecloud.com/sina2/callback"];


ShareSDK
94FB705E-B1E7-4264-89DB-DB5B7C2D49CB.png
//引入头文件
#import <ShareSDK/ShareSDK.h>
[ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) {
        //QQ
        [platformsRegister setupQQWithAppId:@"100371282" appkey:@"aed9b0303e3ed1e27bae87c33761161d"];
        //微信
        [platformsRegister setupWeChatWithAppId:@"wx617c77c82218ea2c" appSecret:@"c7253e5289986cf4c4c74d1ccc185fb1"];
        //新浪
        [platformsRegister setupSinaWeiboWithAppkey:@"568898243" appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3" redirectUrl:@"http://www.sharesdk.cn"];
    }];

其次,友盟还需要在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<UIApplicationOpenURLOptionsKey, id> *)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)实现分享

友盟:

引入头文件
#import <UMShare/UMShare.h>
- (void)umshare
{
     //创建分享消息对象
    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:UMSocialPlatformType_WechatSession 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:

//引入头文件
#import <ShareSDK/ShareSDK.h>
#import <ShareSDKUI/ShareSDK+SSUI.h>
//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 share:SSDKPlatformTypeWechat parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
         switch (state) {
                    case SSDKResponseStateSuccess:
                    {
                      
        
                        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享成功"
                                                                            message:nil
                                                                           delegate:nil
                                                                  cancelButtonTitle:@"确定"
                                                                  otherButtonTitles:nil];
                        [alertView show];
                        break;
                    }
                    case SSDKResponseStateFail:
                    {
                        NSLog(@"----%@",error.description);
                        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"---分享失败"
                                                                        message:[NSString stringWithFormat:@"%@",error]
                                                                       delegate:nil
                                                              cancelButtonTitle:@"OK"
                                                              otherButtonTitles:nil, nil];
                        [alert show];
                        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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 经市场调查,目前做分享的SDK,最受欢迎的就是ShareSDK和友盟的,下面我们来对比下这2个SDK在集成过程中的...
    白白酱阅读 4,402评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,136评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,467评论 2 59
  • 果实:我蒙雨露拥有氧气般的财富 土壤:安美弘、父母、亲人、业力伙伴 发心:愿全天下的人都拥有氧气般的财富 计划并行...
    蒙雨露阅读 1,605评论 0 0
  • github地址:https://github.com/zhengguorong/maizuo_wechat 欢...
    蟹老板爱写代码阅读 3,505评论 0 0