美文网首页
市场分享竞品分析

市场分享竞品分析

作者: 白白酱 | 来源:发表于2018-02-24 12:15 被阅读0次

经市场调查,目前做分享的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

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

相关文章

网友评论

      本文标题:市场分享竞品分析

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