市场分享竞品分析

简介:

个人感觉目前做分享的SDK,最受欢迎的就是ShareSDK和友盟的,下面我们来对比下这2个SDK在集成过程中的一些区别:
对比ShareSDK和友盟
一.SDK大小
对比环境说明:
1.只集成社交平台 新浪微博,微信,QQ
2.均不包含各自的UI库,使用最简单最基础的接口实现分享
3.均在一个新建的干净的Xcode项目中进行集成
对比数据说明
1.均使用LinkMap对项目进行统计,统计的是项目打包后所占的大小
2.表格中均统计各自必须要的库大小(如果需要第三方库,则也应计算在内;不包含系统库)
以下为统计友盟UM Share 的arm64结果的截图:
_1
二.集成复杂度
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

1

j[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?
友盟:
2
ShareSDK:
3
结论:这里可以看出ShareSDK开发文档更加详细,容易理解。
其他对比
_2
以上就是个人的见解啊,亲们觉得哪个更方便呢,欢迎发表意见哦!

目录
相关文章
|
机器学习/深度学习 人工智能 API
大模型推理服务全景图
国内大模型推理需求激增,性能提升的主战场将从训练转移到推理。
2180 107
|
11月前
|
算法 网络架构
MAC地址与帧结构
本文介绍了MAC地址和帧结构的基础知识。MAC地址是48位物理地址,分为组织唯一标识符(OUI)和制造商自定义两部分,用于局域网设备识别与链路层通信。帧结构以以太网帧为例,包含前导码、帧开始定界符、目的与源MAC地址、类型/长度字段、数据字段及帧校验序列(FCS),确保数据传输的准确性和可靠性。
1473 8
R语言分布滞后线性和非线性模型DLM和DLNM建模应用| 系列文章
R语言分布滞后线性和非线性模型DLM和DLNM建模应用| 系列文章
|
11月前
|
人工智能 前端开发 API
如何快速开发视频下载器
本文介绍如何基于开源工具yt-dlp开发功能全面的视频下载器网站。yt-dlp作为youtube-dl的增强版,支持1000+网站,具备高效下载、格式选择及字幕处理等特性。文章详细解析了前后端架构设计,包括简洁的前端界面与基于Flask/Django的后端API实现,封装yt-dlp核心功能,提供进度跟踪和文件管理。同时探讨容器化部署、性能优化及扩展功能(如字幕翻译、批量下载)。案例“AI易视频”展示了AI辅助开发的高效性。开发时需遵守法律,尊重版权。
1351 11
|
Kubernetes 负载均衡 API
Kubernetes通俗讲解
Kubernetes(K8s)是自动部署、扩展和管理容器化应用的开源平台,源自Google的Borg系统。它简化了大规模容器应用的部署和维护,支持自动部署、扩展、高可用性、服务发现与负载均衡及存储管理。K8s具有Master和Node节点架构,涵盖API Server、Scheduler等组件,其核心概念包括Pod、Service、Deployment和Namespace。使用时需安装集群、定义资源配置文件并应用配置。K8s具备可移植性、可扩展性、自动化及强大的社区支持等优势。
458 2
|
监控 安全 网络安全
社会工程学:概念、技术与防范
社会工程学是一种利用人性弱点而非技术漏洞来获取敏感信息或进行攻击的策略。常见技术包括钓鱼攻击、预设信任、尾随、垃圾箱搜寻、电话欺诈和社交媒体工程。防范措施包括提高意识、双重验证、物理安全、信息管理和技术防护等。通过综合措施,可以有效降低社会工程学攻击的风险,保护信息安全。
1127 10
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力yolov11精度提升
YOLOv11改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力yolov11精度提升
325 0
YOLOv11改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力yolov11精度提升
|
开发框架 Dart 前端开发
Android 跨平台方案对比之Flutter 和 React Native
本文对比了 Flutter 和 React Native 这两个跨平台移动应用开发框架。Flutter 使用 Dart 语言,提供接近原生的性能和丰富的组件库;React Native 则基于 JavaScript,具备庞大的社区支持和灵活性。两者各有优势,选择时需考虑团队技能和项目需求。
1288 9
|
iOS开发 MacOS
解决CocoaPods安装卡住反应慢或失败
解决CocoaPods安装卡住反应慢或失败
3502 4
|
监控 安全 网络安全
inishConnect(..) failed: Connection refused,服务本地正常服务器网关报400,nacos服务实例不能下线
总之,这种问题需要通过多方面的检查和校验来定位和解决,并可能需要结合实际环境的具体情况来进行相应的调整。在处理分布式系统中这类问题时,耐心和细致的调试是必不可少的。
500 13