DevStore首页 > DEV资源 > 服务评测下载 > 友盟社会化分享iOS版服务评测

友盟社会化分享iOS版服务评测

查看服务>>
DevStore编辑 尚丽洁 | 2014-08-17 13:30    浏览量(18654)    纠错    评论(0)    友盟社会化分享服务详情>>

服务评测作者

  • 82 能力值
  • 15 源码
  • 26 评测
  • 0 资料

评测目录

集成测试

评测环境

wifi环境下:

测试对象

友盟社会化组件SDK v4.0

测试环境

Mac OS X(10.10)    + Xcode (5.1)

测试设备

iPhone 4S

系统版本

iOS 5.1

设备网络

wifi

测试方法

客户端运行实例+测试API接口

测试时间

2014-08-0416:10

测试时长

2小时

基本参数:

支持平台

iOS、Android、Windows Phone

支持社交平台

新浪微博、腾讯微博、微信等14种社交平台

稳定性

稳定

及时性

及时

自定义分享 

支持

SSO授权登录

支持

集成难度

简单

摇一摇分享

支持

截图分享

支持

分享统计

一般

对应用运行的影响

集成过程

客户端集成

如何快速集成友盟社会化组件:

注册友盟帐号=》创建推送应用=》下载SDK=》集成开发=》测试应用=》发布应用

1、注册友盟账号

友盟开发者账号的注册地址:http://www.umeng.com/users/sign_up

2、创建新应用

使用注册的友盟账号登录后进入我的产品,在屏幕左方会看到这样一个按钮,友盟社会化组件点击选择添加新应用:

友盟社会化组件

提交成功后会获得Appkey并提示如下界面,然后就可以进入测试模式。

3、下载IOS SDK

友盟社会化组件iOS SDK的下载地址:http://dev.umeng.com/social/ios/sdk-download

进入后选择下载根据自己需要选择模块

友盟社会化组件

4、集成开发

1)新建一个工程

友盟社会化组件

2)添加友盟SDK和静态库

解压iOS SDK压缩包,将其中的UMSocial_Sdk_4.0和UMSocial_Sdk_Extra_Frameworks文件夹加入到工程中去,再添加系统framework:

Security.framework,libiconv.dylib,SystemConfiguration.framework,CoreGraphics.framework,libsqlite3.dylib,CoreTelephony.framework,libstdc++.dylib,libz.dylib。

3)导入头文件,添加测试文件

为了引用头文件方便,在工程的.pch文件内添加如下代码:

#import "UMSocial.h"
#define APPKEY @"53cde22c56240b55aa02368c"

UMSocial头文件内包含众多社会化分析库文件的引用,直接引用一个UMSocial就可以使用全部功能,不用重复导入,很方便,APPKEY就是申请应用获得的Appkey。

为了测试分享图片的功能,在工程内加入了一个名为”108.png”的静态图片和一个名为”001.gif”的动态图片。

4)基本功能集成

首先在AppDelegate内设置AppKey,在didFinishLauchingWIthOptions方法内添加如下代码:

[UMSocialDatasetAppKey:APPKEY];
//打开调试日志
[UMSocialDataopenLog:YES];

在ViewController.m中添加实现基本分享功能的代码,各个参数的设置请参考绿字注释部分:

/**
弹出一个分享列表的UITableViewController
@param controller 在该controller弹出分享列表的UIActionSheet
@param appKey 友盟appKey
@param shareText  分享编辑页面的内嵌文字
@param shareImage 可以传入`UIImage`,或者`NSData`类型,分享内嵌图片,用户可以在编辑页面删除
@param snsNames 你要分享到的sns平台类型,该NSArray值是`UMSocialSnsPlatformManager.h`定义的平台名的字符串常量,有UMShareToSina,UMShareToTencent,UMShareToRenren,UMShareToDouban,UMShareToQzone,UMShareToEmail,UMShareToSms等
@param delegate 实现分享完成后的回调对象,如果不关注分享完成的状态,可以设为nil
 */
[UMSocialSnsServicepresentSnsIconSheetView:selfappKey:APPKEYshareText:@"好开心啊,今天又没有吃药!" shareImage:[UIImage imageNamed:@"001.gif"] shareToSnsNames:[NSArray arrayWithObjects:UMShareToWechatSession,UMShareToQzone,UMShareToSina,UMShareToTencent,UMShareToRenren,nil] delegate:nil];

会有如下效果:

友盟社会化组件

5)使用直接分享底层接口

/**
发送微博内容到多个微博平台
 
@param platformTypes    分享到的平台,数组的元素是`UMSocialSnsPlatformManager.h`定义的平台名的常量字符串,例如`UMShareToSina`,`UMShareToTencent`等。
@param content          分享的文字内容
@param image            分享的图片,可以传入UIImage类型或者NSData类型
@param location         分享的地理位置信息
@param urlResource      图片、音乐、视频等url资源
@param completion       发送完成执行的block对象
@param presentedController 如果发送的平台微博只有一个并且没有授权,传入要授权的viewController,将弹出授权页面,进行授权。可以传nil,将不进行授权。
 
 */
  [[UMSocialDataServicedefaultDataService] postSNSWithTypes:@[UMShareToSina]content:@"今天又没有吃药!" image:[UIImage imageNamed:@"001.gif"] location:nilurlResource:nilpresentedController:self completion:^(UMSocialResponseEntity *response) {
if (response.responseCode == UMSResponseCodeSuccess) {
NSLog(@"respon%@",response);
NSLog(@"分享成功!");
}}];

发送成功后进入新浪微博查看自己发送的微博,看到如下界面:

友盟社会化组件

6)分享url资源

//根据url创建一个UMSocialUrlResource对象;resourceType:多媒体资源类型,图片、音乐或者视频;urlString:url字符串
UMSocialUrlResource *urlResource = [[UMSocialUrlResourcealloc]initWithSnsResourceType:UMSocialUrlResourceTypeImageurl:@"http://img0.pcgames.com.cn/pcgames/1407/07/4057451_1_thumb.jpg"];
//分享url资源
    [[UMSocialDataServicedefaultDataService]postSNSWithTypes:@[UMShareToSina]content:@"Chinajoy的萌妹子" image:nillocation:nilurlResource:urlResource presentedController:selfcompletion:^(UMSocialResponseEntity *response) {
if (response.responseCode == UMSResponseCodeSuccess) {
NSLog(@"分享成功!");
}}];

效果如下:

友盟社会化组件

7)分享本地动态gif图片

把本地的gif图片声称NSData对象,再进行分享,参考如下方法:

NSString *path = [[NSBundlemainBundle]pathForResource:@"001"ofType:@"gif"];
NSData *gifData = [NSDatadataWithContentsOfFile:path];
[UMSocialSnsServicepresentSnsIconSheetView:selfappKey:APPKEYshareText:@"今天一直都要萌萌哒!" shareImage:gifData shareToSnsNames:nildelegate:self];

效果如下(请原谅我只能截取到静态图):

友盟社会化组件

8)摇一摇截屏分享

实现摇一摇截图分享需要导入两个头文件,功能实现如下:

#import "UMSocialShakeService.h"
#import "UMSocialScreenShoter.h"
/**
设置响应摇一摇事件,并且弹出分享页面
 
@param snsTypes 要分享的平台类型名,例如@[UMShareToSina,UMShareToTencent,UMShareToWechatSession]
@param shareText 分享内嵌文字
@param screenShoter 摇一摇分享用到的截屏对象
@param controller  出现分享界面所在的ViewController
@param delegate 实现摇一摇后,或者分享完成后的回调对象,如果不处理这些事件,可以设置为nil
     */
    [UMSocialShakeServicesetShakeToShareWithTypes:@[UMShareToTencent,UMShareToSina,UMShareToRenren]shareText:@"摇一摇"screenShoter:[UMSocialScreenShoterDefaultscreenShoter] inViewController:selfdelegate:nil];
//设置摇一摇灵敏度
    [UMSocialShakeServicesetShakeThreshold:1.0];

手机端摇一摇出现如下界面:

友盟社会化组件

9)进入授权信息页面

个人中心的登录账号可以选择下面已经授权的平台登录

UINavigationController *accountViewController = [[UMSocialControllerServiceCommentdefaultControllerService] getSocialAccountController];
[selfpresentModalViewController:accountViewController animated:YES];

效果图如下:

友盟社会化组件

10)获取授权用户信息

//判断是否授权
BOOL isOauth = [UMSocialAccountManagerisOauthAndTokenNotExpired:UMShareToSina];
if (isOauth == YES) {
//授权成功,获取微博平台账户信息
NSDictionary *snsAccountDic = [UMSocialAccountManagersocialAccountDictionary];
//创建一个微博账户对象
UMSocialAccountEntity *sinaAccount = [snsAccountDic valueForKey:UMShareToSina];
NSLog(@"sina name is %@, icon URL is %@",sinaAccount.userName,sinaAccount.iconURL);
//获取用户微博账号详细信息
        [[UMSocialDataServicedefaultDataService]requestSnsInformation:UMShareToSinacompletion:^(UMSocialResponseEntity *response) {
NSLog(@"response is %@",response.data);
self.textView.text = [response.datadescription];
        }];
    }else{
//未授权,进入授权页面
        [UMSocialSnsPlatformManagergetSocialPlatformWithName:UMShareToSina].loginClickHandler(self,[UMSocialControllerServicedefaultControllerService],YES,^(UMSocialResponseEntity *response){
if (response.responseCode == UMSResponseCodeSuccess) {
//获取微博用户名、uid、token等
UMSocialAccountEntity *snsAccount = [[UMSocialAccountManagersocialAccountDictionary] valueForKey:UMShareToSina];
NSLog(@"username is %@, uid is %@, token is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken); }});}

11)社会化操作栏

//初始化一个`UMSocialData`对象,identifier是一个`UMSocialData`对象的标识符,相同标识符的`UMSocialData`拥有相同的属性
UMSocialData *socialData =[[UMSocialDataalloc]initWithIdentifier:@"A Book Named BILI"];
UMSocialBar *socialBar = [[UMSocialBaralloc]initWithUMSocialData:socialData withViewController:self];
    socialBar.center = CGPointMake(160, 435);
[self.viewaddSubview:socialBar];

在屏幕的下方会出现这样的一个操作栏,从左往右依次是评论、喜欢、分享、用户信息:

友盟社会化组件

主要功能

分享到各个平台:

友盟社会化组件

编辑分享内容,可以切换用户和@好友

友盟社会化组件

分享URL资源:

友盟社会化组件

功能特色

摇一摇截图分享:

友盟社会化组件

用户个人中心和登录管理授权:

友盟社会化组件

评论某条消息并分享:

友盟社会化组件

DEMO展示

- (IBAction)share:(id)sender {
//使用分享API(自动授权后,进入编辑页面)
//    [[UMSocialControllerService defaultControllerService]setShareText:@"今天又没有吃药!" shareImage:[UIImage imageNamed:@"001.gif"] socialUIDelegate:self];
//    [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina].snsClickHandler(self,[UMSocialControllerService defaultControllerService],YES);
 
 
    [UMSocialSnsServicepresentSnsIconSheetView:selfappKey:APPKEYshareText:@"好开心啊,今天又没有吃药!" shareImage:[UIImage imageNamed:@"001.gif"] shareToSnsNames:[NSArray arrayWithObjects:UMShareToWechatSession,UMShareToQzone,UMShareToSina,UMShareToTencent,UMShareToRenren,nil] delegate:nil];
}
//直接分享底层接口
- (IBAction)postShare:(id)sender {
//直接发送分享,如果未授权,则跳转到授权页面
    [[UMSocialDataServicedefaultDataService] postSNSWithTypes:@[UMShareToSina]content:@"今天又没有吃药!" image:[UIImage imageNamed:@"001.gif"] location:nilurlResource:nilpresentedController:self completion:^(UMSocialResponseEntity *response) {
if (response.responseCode == UMSResponseCodeSuccess) {
NSLog(@"respon%@",response);
NSLog(@"分享成功!");
        }
    }];
 
}
 
- (IBAction)shareUrlResource:(id)sender {
//设置URL分享内容
//[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"http://img0.pcgames.com.cn/pcgames/1407/07/4057451_1_thumb.jpg"];
//[UMSocialSnsService presentSnsIconSheetView:self appKey:@"53cde22c56240b55aa02368c" shareText:@"Chinajoy的萌妹子" shareImage:nil shareToSnsNames:@[UMShareToWechatSession,UMShareToQzone,UMShareToSina,UMShareToTencent,UMShareToRenren] delegate:nil];
 
//根据url创建一个UMSocialUrlResource对象;resourceType:多媒体资源类型,图片、音乐或者视频;urlString:url字符串
UMSocialUrlResource *urlResource = [[UMSocialUrlResourcealloc]initWithSnsResourceType:UMSocialUrlResourceTypeImageurl:@"http://img0.pcgames.com.cn/pcgames/1407/07/4057451_1_thumb.jpg"];
//分享url资源
    [[UMSocialDataServicedefaultDataService]postSNSWithTypes:@[UMShareToSina]content:@"Chinajoy的萌妹子" image:nillocation:nilurlResource:urlResource presentedController:selfcompletion:^(UMSocialResponseEntity *response) {
if (response.responseCode == UMSResponseCodeSuccess) {
NSLog(@"分享成功!");
            }
        }];
}
 
- (IBAction)shareGif:(id)sender {
NSString *path = [[NSBundlemainBundle]pathForResource:@"001"ofType:@"gif"];
NSData *gifData = [NSDatadataWithContentsOfFile:path];
    [UMSocialSnsServicepresentSnsIconSheetView:selfappKey:APPKEYshareText:@"今天一直都要萌萌哒!" shareImage:gifData shareToSnsNames:nildelegate:self];
}
 
- (IBAction)shakeAndShare:(id)sender {
    [UMSocialShakeServicesetShakeToShareWithTypes:nil
shareText:nil
screenShoter:nil
inViewController:nil
delegate:self];
}
 
- (IBAction)shakeScreenShoot:(id)sender {
/**
设置响应摇一摇事件,并且弹出分享页面
 
@param snsTypes 要分享的平台类型名,例如@[UMShareToSina,UMShareToTencent,UMShareToWechatSession]
@param shareText 分享内嵌文字
@param screenShoter 摇一摇分享用到的截屏对象
@param controller  出现分享界面所在的ViewController
@param delegate 实现摇一摇后,或者分享完成后的回调对象,如果不处理这些事件,可以设置为nil
     */
    [UMSocialShakeServicesetShakeToShareWithTypes:@[UMShareToTencent,UMShareToSina,UMShareToRenren]shareText:@"摇一摇"screenShoter:[UMSocialScreenShoterDefaultscreenShoter] inViewController:selfdelegate:nil];
//设置摇一摇灵敏度
    [UMSocialShakeServicesetShakeThreshold:1.0];
}
- (IBAction)login:(id)sender {
UINavigationController *accountViewController = [[UMSocialControllerServiceCommentdefaultControllerService] getSocialAccountController];
    [selfpresentModalViewController:accountViewController animated:YES];
}

测试日志

进入到分享页面:

友盟社会化组件

发送分享:

友盟社会化组件

分享后返回结果:

友盟社会化组件

遇到问题

在分享url资源的时候,笔者使用了setResourceType这个方法来设置url图片为分享内容并且发送了一个分享,分享以后发现其它分享方式的图片都变成了这个url图片,如果只是需要这一个分享使用的,而不改变其它分享方式的图片,则需要创建一个UMSocialUrlResource对象,用postSNSWithTypes方法发送分享。详情可以参考demo中的shareUrlResource方法。

上手难易

友盟社会化组件集成比较简单,用户只需引用友盟社会化类,直接调用API方法即可,处理返回内容也比较轻松。

开发文档

友盟社会化组件API列表下载地址:

http://dev.umeng.com/system/resources/W1siZiIsIjIwMTQvMDcvMDIvMTZfMTJfNTJfOTk3X1VNU29jaWFsX1Nka19BcGlfUmVmZXJlbmNlLnppcCJdXQ/UMSocial_Sdk_Api_Reference.zip

iOS SDK下载时可选一个Demo测试源码工程,可以参考这个工程和API文档完成项目集成。

此服务评测版权归DevStore所有,禁止转载,申请升级为 特约评测员 才可进行测评立即申请

声明:DevStore评测内容都是基于专业评测人员/开发者通过真实的测试之后得出的数据,服务版本实时都在更新,所以评测并不一定是此服务的最新版本,但我们会秉承公正专业精准的态度,对开发者负责,同时欢迎大家监督和建议,如对评测内容有异议,请提交纠错,由专业的评测团队再次评测,我们会尽最大努力为大家提供更贴心的服务。

DevStore_全球首家第三方开发者服务商店,最精准的服务对比、最专业的服务评测、最及时的行业动态,为开发者挑选服务提供最全面的参考和专业分析,加入DevStore,从此告别熬夜加班,你也可以这么帅!搜索微信号:DevStore

评论(0)