市场分享竞品分析

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

对比ShareSDK和友盟


一.SDK大小

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

以下为统计友盟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<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)实现分享

友盟:

- (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

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

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,646评论 25赞 708
  • 前言 友盟能实现分享功能,友盟+申请第三方账号的目的: 进行分享、授权操作需要在第三方平台创建应用并提交审核,友盟...
    CoderZb阅读 10,038评论 8赞 60
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 15,401评论 1赞 180
  • 傻瓜发文:冬天,时间会被冻住? 傻瓜,很多时候总是能开启我的意识流。 十一郎鼓励我说,我有写作的天赋,我跟十一郎说...
    林有朽木阅读 1,107评论 5赞 16
  • 载营魄抱一,能无离乎?专气致柔,能婴儿乎?涤除玄览,能无庛乎?爱民治国,能无为知乎?天门开阖,能无为雌乎,明白四达...
    袁夏沐阅读 408评论 0赞 0

友情链接更多精彩内容