博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
市场分享竞品分析
阅读量:7065 次
发布时间:2019-06-28

本文共 7958 字,大约阅读时间需要 26 分钟。

hot3.png

个人感觉目前做分享的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

[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?

友盟:

ShareSDK:

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

其他对比

对比点

友盟

ShareSDK

大小

1

 

技术服务

 

1

SDk更新频率

 

1

文档简单

 

1

技术论坛

 

1

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

 

 

 

转载于:https://my.oschina.net/u/3773669/blog/1623625

你可能感兴趣的文章
简单的原生ajax
查看>>
h5开发坑点小总结
查看>>
几分钟内提升技能的8个 JavaScript 方法!
查看>>
mac显示隐藏文件
查看>>
Android 插件化原理-好文收集(陆续中。。。)
查看>>
双亲委派模型与Tomcat类加载架构
查看>>
Highcharts tooltip显示数量和百分比
查看>>
小程序兼容iphoneX(齐刘海)代码,mpvue的写法
查看>>
小米设备怎么不ROOT激活Xposed框架的步骤
查看>>
Vue Router
查看>>
你所听到的技术原理、技术本质到底是什么?
查看>>
决战燕京城-10 前往天寿山
查看>>
WebMvcTest与SpringBootTest
查看>>
面试官:你接受免费加班吗?程序员这样怼回去,网友:老铁没毛病
查看>>
分享我的个人项目:Wildfire 野火评论系统
查看>>
【机器视觉与图像处理】基于MATLAB的角度计算
查看>>
一篇很全面的IOS面试题(下)
查看>>
极简.高性能.分布式框架,可运行于多种环境(apache/php-fpm,swoole)
查看>>
DESTOON7.0农产品B2B供应求购交易平台源码
查看>>
node js 批量处理pdf,提取关键信息,并导出excel
查看>>