您的位置:首页 > 移动开发 > IOS开发

iOS:友盟SDK第三方登录 分享及友盟统计的使用

2015-12-14 18:20 639 查看
下面就是关于使用友盟社会化组件的详细过程:


一、集成过程

集成友盟社会化组件的主要流程是: 注册友盟帐号=》创建推送应用=》下载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:

123Security.framework,libiconv.dylib,SystemConfiguration.framework,CoreGraphics.framework,libsqlite3.dylib,CoreTelephony.framework,libstdc++.dylib,libz.dylib。
3)导入头文件,添加测试文件为了引用头文件方便,在工程的.pch文件内添加如下代码:

1

2

#import "UMSocial.h"

#define APPKEY @"53cde22c56240b55aa02368c"

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

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

4)基本功能集成

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

123[UMSocialDatasetAppKey:APPKEY];//打开调试日志[UMSocialDataopenLog:YES];
在ViewController.m中添加实现基本分享功能的代码,各个参数的设置请参考绿字注释部分:

1

2

3

4

5

6

7

8

9

10

/**

弹出一个分享列表的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)使用直接分享底层接口

1234567891011121314151617/**发送微博内容到多个微博平台 @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资源

1

2

3

4

5

6

7

//根据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对象,再进行分享,参考如下方法:

123NSString *path = [[NSBundlemainBundle]pathForResource:@"001"ofType:@"gif"];NSData *gifData = [NSDatadataWithContentsOfFile:path];[UMSocialSnsServicepresentSnsIconSheetView:selfappKey:APPKEYshareText:@"今天一直都要萌萌哒!" shareImage:gifData shareToSnsNames:nildelegate:self];
效果如下(请原谅我只能截取到静态图):

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#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)进入授权信息页面

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

12UINavigationController *accountViewController = [[UMSocialControllerServiceCommentdefaultControllerService] getSocialAccountController];[selfpresentModalViewController:accountViewController animated:YES];
效果图如下:

10)获取授权用户信息

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

//判断是否授权

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)社会化操作栏

12345//初始化一个`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];
在屏幕的下方会出现这样的一个操作栏,从左往右依次是评论、喜欢、分享、用户信息:

二、主要功能

1 、分享到各个平台:

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

3、分享URL资源:

三、功能特色

1、摇一摇截图分享:

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

3、评论某条消息并分享:

4、DEMO展示

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

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

}

5、测试日志

进入到分享页面的日志:





发送分享时的日志:





分享后返回结果的日志:






四、遇到的问题

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


五、上手难易

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


六、开发文档

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

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


七、测试点评

友盟社会化组件可以帮助移动应用快速集成分享、登录、评论、喜欢等社交功能,并提供数据统计分析服务。下面是笔者对其试用过程,总结出以下特点:

1.友盟社会化组件是一款跨Android,iOS,Windows Phone三大平台的社会化分享组件,并且同时支持Cocos2d-x和PhoneGap平台的开发;

2.友盟分享的接口简便,如果只使用最基本的分享功能,只需不到半个小时就可以为APP增加新浪微博、腾讯微博等平台的分享功能;

3.友盟分享支持的社交平台很多,截止到目前未知,友盟分享已经支持了14种社交平台甚至包括来往、易信这些用户比较少用到的平台,提供的平台比较广泛;

4.友盟分享可以分享url资源,例如图片、音乐、视频等,另外还有摇一摇截屏分享功能;

5.友盟分享提供了一个登录授权接口,可以查看各个平台的授权情况,用户可以对授权账号进行增加、更改、删除,并可以对各个平台进行授权和解除授权,方便管理;

6.用户可以针对一篇文章、一首歌曲等内容点击喜欢或不喜欢、或评论并分享,友盟也提供了一个操作栏来提供提供这些功能,使用起来非常简便;

7.除了分享功能外,友盟还提供有一个后台数据统计分析功能,可以对用户的分享情况进行统计分析;

8.友盟分享目前最新版本为iOS SDK v4.1,更新时间为2014/08/18,更新及时。


八、适用人群

如果开发者需要一款支持多种平台分享的第三方服务,那么友盟社会化分享很不错,可供用户自定义的部分也比较多。友盟的评论分享功能做的很好,在APP中集成的话实用性很高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: