IOS友盟 社会化分享 > 社会化iOS组件 > 分享集成

来源:互联网 发布:g3110扫描仪软件 编辑:程序博客网 时间:2024/05/22 00:12

转自:http://blog.csdn.net/u012960049/article/details/51788268

由于苹果审核政策需求,建议大家对未安装客户端平台进行隐藏,在设置QQ、微信AppID之后调用下面的方法,[UMSocialConfig hiddenNotInstallPlatforms:@[UMShareToQQ, UMShareToQzone, UMShareToWechatSession, UMShareToWechatTimeline]]; 这个接口只对默认分享面板平台有隐藏功能,自定义分享面板或登录按钮需要自己处理 友盟分享sdk5.2.1已经兼容ipv6,请大家升级sdk,避免无法通过APPstore审核>

1.  分享流程介绍

1.1  下载并安装SDK

安装SDK可以采用CocoaPods和手动下载两种方式,选择下面其中一种来集成即可

1.1.1  使用CocoaPods集成

在Podfile中增加一行,内容如下:

pod 'UMengSocialCOM', '~> 5.2.1'

然后执行安装即可

pod install

如果是1.0版本以上pod需要增加下面的配置

target:工程名称 doplatform :ios,'5.0'pod 'UMengSocialCOM', '~> 5.2.1'end

1.1.2  手动集成SDK

下载 最新版SDK

解压SDK压缩包,将形如UMSocial_Sdk_x.x.x的文件夹拖入工程目录:

alt text

确认勾选了“Copy items to destination's group folder”选项,并选择你要添加到的Target: 

alt text

现在应该是这样的效果:

alt text

UMSocial_Sdk_x.x.x 文件夹的目录结构

文件或文件夹含义libUMSocial_Sdk_x.x.x.a, libUMSocial_Sdk_Comment_3.0.a库文件Header头文件SocialSDKXibxib文件en.lproj,zh-Hans.lproj英文和中文语言文件frameworks使用的第三方SDK,里面的Wechat 代表微信SDK

UMSocial_Sdk_Extra_Frameworks 文件夹的目录结构

文件或文件夹含义TencentOpenAPIQQ互联SDKWeChat微信SDKSinaSSO微博SDK

1.2  添加系统需要的framework

  • 添加SDK后需要手动添加系统库SystemConfiguration.framework

  • 在other linker flags增加-ObjC 选项,并添加ImageIO 系统framework(实现新浪微博必须完成的步骤)

  • 添加SDK依赖的系统库文件

    在Xcode中打开工程配置文件,选择“summary”一栏。在“summary”中选择“Linked Frameworks and Libraries”一栏,点击“+”图标添加下面八个库文件,分别是

    • Security.framework
    • libiconv.dylib
    • SystemConfiguration.framework
    • CoreGraphics.Framework
    • libsqlite3.dylib
    • CoreTelephony.framework
    • libstdc++.dylib
    • libz.dylib

1.3  设置友盟appkey

  • 获取友盟Appkey。如果你之前已经在友盟注册了应用,获得了Appkey,可以继续使用之前获得Appkey。 

  • 如果你尚未在友盟注册账号,需要先注册,注册之后登录你的账号,点击添加新应用,完成新应用填写之后,将进入应用管理页面。在该页面就能得到Appkey

  • 在代码中设置你的友盟Appkey,在 AppDelegate文件内设置你的AppKey:

#import "UMSocial.h"- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    [UMSocialData setAppKey:@"507fcab25270157b37000010"];}

1.4  配置第三方平台APPID及scheme

1.4.1  配置第三方APPID

这里只列出最常用的微信、QQ及新浪微博的配置方法,其他平台如Facebook等请参考对应文档配置, 申请平台APPID请直接参考文档申请第三方账号

在APPdelegate.m文件中增加对应下面的配置

#import "UMSocial.h"     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    //设置友盟社会化组件appkey    [UMSocialData setAppKey:UmengAppkey];    //设置微信AppId、appSecret,分享url    [UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"];    //设置手机QQ 的AppId,Appkey,和分享URL,需要#import "UMSocialQQHandler.h"    [UMSocialQQHandler setQQWithAppId:@"100424468" appKey:@"c7394704798a158208a74ab60104f0ba" url:@"http://www.umeng.com/social"];    //打开新浪微博的SSO开关,设置新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。需要 #import "UMSocialSinaSSOHandler.h"   [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"3921700954"                                              secret:@"04b48b094faeb16683c32669824ebdad"                                         RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];}

1.4.2  配置系统回调

在APPdelegate.m中增加下面的系统回调配置,注意如果同时使用微信支付、支付宝等其他需要改写回调代理的SDK,请在if分支下做区分,否则会影响 分享、登录的回调

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{    BOOL result = [UMSocialSnsService handleOpenURL:url];    if (result == FALSE) {        //调用其他SDK,例如支付宝SDK等    }    return result;}

1.4.3  配置URL scheme

在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes。如果使用的是Xcode3或更低版本,则需要在plist文件中添加。获取各个平台appkey或者appid的方法可以参考分享详细文档绑定各个平台部分,各个平台的url scheme格式如下表:

平台 url scheme设置格式新浪微博“wb”+新浪appkey,例如“wb126663232”微信微信应用appId,例如“wxd9a39c7122aa6516”,微信详细集成步骤参考微信集成方法QQ、QQ空间需要添加两个URL schemes 1. “QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”,注意大写,生成十六进制方法:点击链接,2.“tencent“+腾讯QQ互联应用Id,例如“tencent100424468" ,QQ及Qzone详细集成步骤参考手机QQ集成方法Facebook集成最新Facebook SDK在iOS7.0以上有效,若要使用我们提供的facebook分享需要设置“fb”+facebook AppID,例如“fb1440390216179601”,详细集成方法见集成facebook

socialbar

1.5  设置分享文本、图片

1.5.1  使用默认UI风格

  • 适用人群:希望10分钟集成从无到有实现分享的开发者

打开需要集成分享功能的视图源码UIViewController.m,把如下代码复制并粘贴到你将弹出一个分享列表的位置,例如到响应分享按钮的方法中。并且修改下面的友盟appkey,你要分享的文字、图片,你要分享到的微博平台,例如下面写的是新浪微博、QQ、微信。

//如果需要分享回调,请将delegate对象设置self,并实现下面的回调方法[UMSocialData defaultData].extConfig.title = @"分享的title";[UMSocialData defaultData].extConfig.qqData.url = @"http://baidu.com";[UMSocialSnsService presentSnsIconSheetView:self                                     appKey:@"507fcab25270157b37000010"                                  shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"                                 shareImage:[UIImage imageNamed:@"icon"]                            shareToSnsNames:@[UMShareToWechatSession,UMShareToWechatTimeline,UMShareToSina,UMShareToQQ,UMShareToQzone]                                   delegate:self]; 
  • 代码中配置的URL为点击分享内容后的跳转链接,只配置了QQ的分享URL,有其他平台配置需要的开发者可以自行修改参数,如微信平台将qqData替换为wechatSessionData

  • 代码中只配置了微信、新浪、QQ、Qzone、朋友圈,有其他平台需要的参考对应的文档

需要分享URL图片资源的开发者参考下面的代码

[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"http://www.baidu.com/img/bdlogo.gif"];[UMSocialData defaultData].extConfig.title = @"分享的title";[UMSocialData defaultData].extConfig.qqData.url = @"http://baidu.com";[UMSocialSnsService presentSnsIconSheetView:self                                     appKey:@"507fcab25270157b37000010"                                  shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"                                 shareImage:[UIImage imageNamed:@"icon"]                            shareToSnsNames:@[UMShareToWechatSession,UMShareToWechatTimeline,UMShareToSina,UMShareToQQ,UMShareToQzone]                                   delegate:self]; 
  • 注意当URL图片和UIImage同时存在时,只有URL图片生效

现在会出现效果:
social

注意: 1. 支持分享编辑页和授权页面横屏,必须要在出现列表页面前设置:
[UMSocialConfig setSupportedInterfaceOrientations:UIInterfaceOrientationMaskLandscape];

实现回调方法

-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response{    //根据`responseCode`得到发送结果,如果分享成功    if(response.responseCode == UMSResponseCodeSuccess)    {        //得到分享到的平台名        NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);    }      }

1.5.2  直接分享底层接口

  • 适用人群:较深耕细作型开发者,希望自定义分享列表,希望授权和分享发生,使用分享底层API并自动授权。
  • 直接发送到对应的平台,仅支持分享到一个平台,可以传入文字、图片、地理位置、url资源。图片、地理位置和url资源可以设为nil。
//需要自定义面板样式的开发者需要自己绘制UI,在对应的分享按钮中调用此接口[UMSocialData defaultData].extConfig.title = @"分享的title";[UMSocialData defaultData].extConfig.qqData.url = @"http://baidu.com";   UMSocialUrlResource *urlResource = [[UMSocialUrlResource alloc] initWithSnsResourceType:UMSocialUrlResourceTypeImage url:                                    @"http://www.baidu.com/img/bdlogo.gif"];[[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToQQ] content:@"分享内嵌文字" image:nil location:nil urlResource:urlResource presentedController:self completion:^(UMSocialResponseEntity *shareResponse){   if (shareResponse.responseCode == UMSResponseCodeSuccess) {       NSLog(@"分享成功!");   }}];
  • 只需要传递本地图片的开发者删掉URL资源,直接传递UIImage对象即可

设置支持的屏幕方向

支持分享编辑页和授权页面横屏,必须要在出现列表页面前进行下面,并在Xcode上的xxx_info.plist文件支持屏幕方向的字段'Supported interface orientations'增加相应的横屏或者竖屏的枚举值。 
    //根据你要支持的方向,UIInterfaceOrientationMaskLandscape设置成相应的方向[UMSocialConfig setSupportedInterfaceOrientations:UIInterfaceOrientationMaskLandscape];

处理分享错误

用下面的代码打开我们SDK在控制台的输出后能看到相应的错误码。

    [UMSocialData openLog:YES];

2.  添加微信及朋友圈

2.1  注册应用

使用微信分享首先需要在微信开放平台(点击链接)申请, 按照要求填写应用信息,审核通过后获取到微信APPID和APPsecret

2.2  添加相关文件

UMSocial_Sdk_Extra_Frameworks目录下,添加Wechat文件夹到工程

添加SDK依赖的系统库文件。

在Xcode中打开工程配置文件,选择“summary”一栏。在“summary”中选择“Linked Frameworks and Libraries”一栏,点击“+”图标添加下面八个库文件,分别是

  • Security.framework
  • libiconv.dylib
  • SystemConfiguration.framework
  • CoreGraphics.Framework
  • libsqlite3.dylib
  • CoreTelephony.framework
  • libstdc++.dylib
  • libz.dylib

2.3  添加微信

2.3.1  添加微信及朋友圈到分享列表

在你的程序APPdelegate入口方法添加下面的代码

  #import "UMSocialWechatHandler.h"    //设置微信AppId、appSecret,分享url    [UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"];
  • 如果不添加上面的代码,则分享列表中不会出现微信及朋友圈图标
  • URL必须为http链接

2.3.2  配置URL schemes

在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,添加xcode的url scheme为微信应用appId,例如“wxd9a39c7122aa6516”

2.3.3  添加系统回调

在APPdelegate中实现下面两个系统回调方法:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{    BOOL result = [UMSocialSnsService handleOpenURL:url];    if (result == FALSE) {        //调用其他SDK,例如支付宝SDK等    }    return result;}

2.4  设置URL、title及分享类型

设置分享文本、图片的代码在前文中已经描述,这里不再复述

2.4.1  设置点击分享内容跳转链接

当分享消息类型为图文时,点击分享内容会跳转到预设的链接,设置方法如下

[UMSocialData defaultData].extConfig.wechatSessionData.url = @"http://baidu.com";

如果是朋友圈,则替换平台参数名即可

[UMSocialData defaultData].extConfig.wechatTimelineData.url = @"http://baidu.com";

注意设置的链接必须为http或https链接

2.4.2  设置title

设置微信好友title方法为

[UMSocialData defaultData].extConfig.wechatSessionData.title = @"微信好友title";

设置微信朋友圈title方法替换平台参数名即可

[UMSocialData defaultData].extConfig.wechatTimelineData.title = @"微信朋友圈title";

微信朋友圈分享消息只显示title

2.4.3  设置分享消息类型

微信分享消息类型分为图文、纯图片、纯文字、应用三种类型,默认分享类型为图文分享,即展示分享文字及图片缩略图,点击后跳转到预设链接

纯图片分享类型方法为

[UMSocialData defaultData].extConfig.wxMessageType = UMSocialWXMessageTypeImage;

纯图片分享类型没有文字,点击图片可以查看大图

纯文字分享类型方法为

[UMSocialData defaultData].extConfig.wxMessageType = UMSocialWXMessageTypeText;

纯文字分享类型没有图片,点击不会跳转

应用分享类型方法

[UMSocialData defaultData].extConfig.wxMessageType = UMSocialWXMessageTypeApp;

应用分享类型如果用户已经安装应用,则打开APP,如果为安装APP,则提示未安装或跳转至微信开放平台

3.  新浪微博分享

3.1  注册应用

在微博开放平台(点击链接)注册应用,完整填写相关应用信息,并且审核通过,未审核应用会遇到5034错误码,详情参考文档

  • 注意工程bundle ID必须和微博开放平台填写一致,否则会提示网络错误或sso package or sign error

3.2  添加相关文件

解压SDK压缩包,将形如UMSocial_Sdk_x.x.x的文件夹拖入工程目录 

解压下载文件夹,将SinaSSO文件夹添加到工程。

在other linker flags增加-ObjC 选项,并添加ImageIO 系统framework

3.2.1  配置URL schemes

在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式为“wb”+新浪appkey,例如“wb126663232”

3.2.2  配置微博APPkey

在APPdelegate中添加下面的代码

  #import "UMSocialSinaSSOHandler.h"  //第一个参数为新浪appkey,第二个参数为新浪secret,第三个参数是新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。   [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"3921700954"                                              secret:@"04b48b094faeb16683c32669824ebdad"                                         RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];

回调URL必须和后台保持一致,否则会返回错误码21322

3.2.3  添加系统回调

在APPdelegate中实现下面的回调方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{    BOOL result = [UMSocialSnsService handleOpenURL:url];    if (result == FALSE) {        //调用其他SDK,例如支付宝SDK等    }    return result;}

3.3  分享多媒体资源

3.3.1  分享本地gif图片

分享本地gif图片到各个开放平台,需要生成把本地gif图片生成NSData对象,作为各个分享方法的shareImage参数,例如快速分享接口如下写法。
分享png、jpg图片则只需要生成UIImage,传入到shareImage参数,不能使用这种写法。

  //分享gif图片  NSString *path = [[NSBundle mainBundle] pathForResource:@"picName"                                                     ofType:@"gif"];    NSData *gifData = [NSData dataWithContentsOfFile:path];    [UMSocialSnsService presentSnsIconSheetView:self appKey:UmengAppkey shareText:shareText shareImage:gifData shareToSnsNames:@[UMShareToSina] delegate:self];    //分享png、jpg图片    [UMSocialSnsService presentSnsIconSheetView:self appKey:UmengAppkey shareText:shareText shareImage:[UIImage imageNamed:@"picName"] shareToSnsNames:@[UMShareToSina] delegate:self];

3.3.2  分享url音乐

分享URL音乐资源将UrlResourceType设置为Music即可

[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeMusic url:@"http://music.huoxing.com/upload/20130330/1364651263157_1085.mp3"];//调用快速分享接口

3.3.3  分享url视频

分享URL视频资源将UrlResourceType设置为Video即可

[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeVideo url:@"http://v.youku.com/v_show/id_XNjQ1NjczNzEy.html?f=21207816&ev=2"];//调用快速分享接口

3.4  关注官方微博

在授权页面中显示关注官方微博的复选页面,只在第一次授权时出现,需要在微博开放平台设置官方运营微博

4.  添加QQ及Qzone

4.1  注册应用

使用QQ及Qzone分享首先在腾讯开放平台注册应用,地址:http://open.qq.com 按照要求填写,审核通过前需要添加测试账号,否则会报错110406或110404

4.2  添加相关文件

UMSocial_Sdk_Extra_Frameworks目录下的,添加TencentOpenAPI文件夹到工程 添加下面几个系统framework

在Xcode中打开工程配置文件,选择“summary”一栏。在“summary”中选择“Linked Frameworks and Libraries”一栏,点击“+”图标添加下面八个库文件,分别是

  • Security.framework
  • libiconv.dylib
  • SystemConfiguration.framework
  • CoreGraphics.Framework
  • libsqlite3.dylib
  • CoreTelephony.framework
  • libstdc++.dylib
  • libz.dylib

在 Xcode7下库后缀名可能不同

4.3  添加QQ及Qzone

4.3.1  添加QQ及Qzone到分享列表

在AppDelegate应用入口方法打开集成手机QQ、Qzone开关

//设置分享到QQ/Qzone的应用Id,和分享url 链接#import "UMSocialQQHandler.h"[UMSocialQQHandler setQQWithAppId:@"100424468" appKey:@"c7394704798a158208a74ab60104f0ba" url:@"http://www.umeng.com/social"];
  • 如果不添加上面的代码,则分享列表中不会出现QQ及Qzone图标
  • URL必须为http或https链接

4.3.2  配置URL schemes

在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,设置Xcode的url scheme格式为“QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”。 额外设置 url schemes 的格式为"tencent"+腾讯QQ互联应用appId,例如“tencent100424468”

如果 URL schemes 配置错误,则分享完成后无法返回应用

在Xcode 6.0创建工程时,默认可能没有单独设置Bundle display name属性值。但是因为SDK需要用到Bundle display name的值,所以务必请检查确保这个属性存在,如果没有请添加上。

4.3.3  添加系统回调

在APPdelegate中实现下面的方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{    BOOL result = [UMSocialSnsService handleOpenURL:url];    if (result == FALSE) {        //调用其他SDK,例如支付宝SDK等    }    return result;}

4.4  设置URL、title及分享类型

Qzone分享文字与图片缺一不可,否则会出现错误码10001

4.4.1  设置点击分享内容跳转链接

QQ设置点击分享内容跳转链接调用下面的方法

 [UMSocialData defaultData].extConfig.qqData.url = @"http://baidu.com";

Qzone设置点击分享内容跳转链接替换平台参数名即可

 [UMSocialData defaultData].extConfig.qzoneData.url = @"http://baidu.com";

4.4.2  设置title

QQ设置title方法为

 [UMSocialData defaultData].extConfig.qqData.title = @"QQ分享title";

Qzone设置title方法将平台参数名替换即可

 [UMSocialData defaultData].extConfig.qzoneData.title = @"Qzone分享title";

4.4.3  设置分享消息类型

QQ分享消息类型分为图文、纯图片,QQ空间分享只支持图文分享(图片文字缺一不可)

QQ分享消息默认为图文类型,设置纯图片类型方法为

[UMSocialData defaultData].extConfig.qqData.qqMessageType = UMSocialQQMessageTypeImage;

在调用分享代码前调用即可

5.  添加其他国内分享平台

5.1  国内分享平台简介

友盟社会化组件支持的国内分享平台包括:新浪、微信及朋友圈、QQ及Qzone、腾讯微博、人人网、豆瓣、短信、邮件、支付宝、易信和来往,这里针对 常用的平台做出使用方法说明

5.2  添加分享平台至分享面板选择页

5.2.1  使用默认分享界面

使用友盟默认提供的分享面板,调用下面的代码,在平台数组shareToSnsNames里传递自己需要的平台参数即可,这里的示例里 会展示腾讯微博、人人网、豆瓣、邮件和短信

[UMSocialSnsService presentSnsIconSheetView:self                                      appKey:你的友盟应用Appkey                                   shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"                                  shareImage:[UIImage imageNamed:@"icon.png"]                          shareToSnsNames:@[UMShareToTencent,UMShareToRenren,UMShareToDouban,UMShareToEmail,UMShareToSms]                                    delegate:self];//实现回调方法:-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response{        //根据`responseCode`得到发送结果,如果分享成功        if(response.responseCode == UMSResponseCodeSuccess)        {            //得到分享到的微博平台名            NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);        }      }

5.2.2  使用自定义分享界面

自定义分享样式,可以在自己定义的分享按钮中实现下面的方法

[[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToTencent] content:@"分享内嵌文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *shareResponse){   if (shareResponse.responseCode == UMSResponseCodeSuccess) {       NSLog(@"分享成功!");   }}];

5.3  添加支付宝

支付宝钱包从9.0版本开始支持分享,友盟分享SDK中已经判断当前设备能否支持分享到支付宝钱包

5.3.1  注册应用

在支付宝开放平台注册应用,完整填写相关应用信息,并且审核通过获取AppID,未审核应用无法拿到AppID

  • 注意工程bundle ID配置必须和支付宝开放平台配置一致

5.3.2  添加相关文件

添加UMSocial_Sdk_Extra_Frameworks目录下的AlipayShare文件夹到工程

5.3.3  添加支付宝

5.3.3.1  添加支付宝钱包到分享列表

在AppDelegate应用入口方法打开集成支付宝

#import "UMSocialAlipayShareHandler.h"     // 设置支付宝分享的appId     [UMSocialAlipayShareHandler setAlipayShareAppId:@"2015111700822536”];

5.3.3.2  添加相关配置

  • 为Other Linker Flags 添加 -all_load
  • 添加支付宝回调Scheme
  1. identifier必须为 alipayShare
  2. URL Schemes 命名规则:ap+AppID
  3. iOS 9以后的系统需要添加支付宝分享的scheme,scheme名为alipayshare,参考iOS9

5.3.3.3  添加系统回调

在APPdelegate中实现下面的方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{    BOOL result = [UMSocialSnsService handleOpenURL:url];    if (result == FALSE) {        //调用其他SDK    }    return result;}

5.3.4  设置分享内容

当前支付宝sdk支持分享到朋友,分享类型为文本、图片及连接

5.3.4.1  设置文本分享

[UMSocialData defaultData].extConfig.alipaySessionData.alipayMessageType = UMSocialAlipayMessageTypeText;[UMSocialData defaultData].extConfig.alipaySessionData.shareText = @"友盟社会化组件可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。 http://www.umeng.com/social"

5.3.4.2  设置图片分享(分为本地图片和网络图片)

// 图片分享,设置分享类型为图片并传入参数,图片对象在下面分享接口中传入    [UMSocialData defaultData].extConfig.alipaySessionData.alipayMessageType = UMSocialAlipayMessageTypeImage;    // 如果是网络图片,需要设置    [[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"http://www.umeng.com/images/pic/home/social/banner.png];

5.3.4.3  设置链接分享

[UMSocialData defaultData].extConfig.alipaySessionData.alipayMessageType = UMSocialAlipayMessageTypeWeb;[UMSocialData defaultData].extConfig.alipaySessionData.title = @"shareTitle";[UMSocialData defaultData].extConfig.alipaySessionData.url = @"http://umeng.com/social”; 

调用分享面板

    NSString *shareText = @"友盟社会化组件可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。 http://www.umeng.com/social";             //分享内嵌文字    UIImage *shareImage = [UIImage imageNamed:@"UMS_social_demo"];          //分享内嵌图片     //调用快速分享接口    [UMSocialSnsService presentSnsIconSheetView:self                                         appKey:UmengAppkey                                      shareText:shareText                                     shareImage:shareImage                                shareToSnsNames:nil                                       delegate:self];

使用自定义分享界面,在对应的支付宝分享按钮中实现下面的方法

    [[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToAlipaySession] content:shareText image:image location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){        if (response.responseCode == UMSResponseCodeSuccess) {            NSLog(@"分享成功!");        }    }];

5.4  添加易信

5.4.1  添加相关文件

解压下载文件夹,在UMSocial_Sdk_Extra_Frameworks目录下,把YiXin文件夹添加到工程

5.4.2  配置URL schemes 及系统回调

在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式为易信Appkey,例如“yx35664bdff4db42c2b7be1e29390c1a06”

在APPdelegate中实现下面的回调方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{    BOOL result = [UMSocialSnsService handleOpenURL:url];    if (result == FALSE) {        //调用其他SDK,例如支付宝SDK等    }    return result;}

5.4.3  添加易信及朋友圈到分享列表

在APPdelegate中添加下面的方法

//设置易信Appkey和分享url地址,注意需要引用头文件 #import UMSocialYixinHandler.h[UMSocialYixinHandler setYixinAppKey:@"yx35664bdff4db42c2b7be1e29390c1a06" url:@"http://www.umeng.com/social"];

5.4.4  设置分享内容

使用默认分享界面调用下面的方法,其中UMShareToYXSession代表易信好友,UMShareToYXTimeline代表易信朋友圈

[UMSocialSnsService presentSnsIconSheetView:self                                      appKey:你的友盟应用Appkey                                   shareText:@"友盟社会化分享让您快速实现分享等社会化功能,www.umeng.com/social"                                  shareImage:[UIImage imageNamed:@"icon.png"]                          shareToSnsNames:@[UMShareToYXSession,UMShareToYXTimeline]                                delegate:self];//实现回调方法:-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response{        //根据`responseCode`得到发送结果,如果分享成功        if(response.responseCode == UMSResponseCodeSuccess)        {            //得到分享到的微博平台名            NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);        }      }

使用自定义分享界面,则在对应的按钮中实现下面的方法

[[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToYXSession] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){    if (response.responseCode == UMSResponseCodeSuccess) {        NSLog(@"分享成功!");    }}];

上述代码为分享到易信好友,易信朋友圈将平台参数UMShareToYXSession替换为UMShareToYXTimeline即可 

5.5  添加来往

5.5.1  添加相关文件

解压下载文件夹,在UMSocial_Sdk_Extra_Frameworks目录下,把LaiWang文件夹添加到工程

5.5.2  配置URL schemes 及系统回调

在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,Identifier填“Laiwang”,URL Schemes填来往AppId.注意使用来往SDK后,Xcode工程other linker flags需要添加-ObjC参数

在APPdelegate中实现下面的回调方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{    BOOL result = [UMSocialSnsService handleOpenURL:url];    if (result == FALSE) {        //调用其他SDK,例如支付宝SDK等    }    return result;}

5.5.3  添加来往及来往动态到分享列表

在APPdelegate中添加下面的方法

//设置来往AppId,appscret,显示来源名称和url地址,注意需要引用头文件 #import "UMSocialLaiwangHandler.h"[UMSocialLaiwangHandler setLaiwangAppId:@"8112117817424282305" appSecret:@"9996ed5039e641658de7b83345fee6c9" appDescription:@"友盟社会化组件" urlStirng:@"http://www.umeng.com/social"];

5.5.4  设置分享内容

使用默认分享界面调用下面的方法,其中UMShareToLWSession代表来往好友,UMShareToLWTimeline代表来往动态

[UMSocialSnsService presentSnsIconSheetView:self                                      appKey:你的友盟应用Appkey                                   shareText:@"友盟社会化分享让您快速实现分享等社会化功能,www.umeng.com/social"                                  shareImage:[UIImage imageNamed:@"icon.png"]                          shareToSnsNames:@[UMShareToLWSession,UMShareToLWTimeline]                                delegate:self];//实现回调方法:-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response{        //根据`responseCode`得到发送结果,如果分享成功        if(response.responseCode == UMSResponseCodeSuccess)        {            //得到分享到的微博平台名            NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);        }      }

使用自定义分享界面,则在对应的按钮中实现下面的方法

[[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToLWSession] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){    if (response.responseCode == UMSResponseCodeSuccess) {        NSLog(@"分享成功!");    }}];

上述代码为分享到来往好友,来往动态将平台参数UMShareToLWSession替换为UMShareToLWTimeline即可 

6.  添加国外分享平台

6.1  国外分享平台简介

友盟社会化组件支持多个国外分享平台,包括Facebook、Twitter、Instagram、Line、Whatsapp、Tumblr,其中Facebook和Twitter分享支持应用内网页分享,其余平台仅支持跳转客户端分享。

6.2  添加Facebook

6.2.1  集成Facebook SDK分享

Facebook SDK需在iOS7.0以上系统集成

使用默认分享界面调用下面的代码

    [UMSocialSnsService presentSnsIconSheetView:self                                          appKey:你的友盟应用Appkey                                       shareText:@"友盟社会化分享让您快速实现分享等社会化功能,www.umeng.com/social"                                      shareImage:[UIImage imageNamed:@"icon.png"]                                 shareToSnsNames:@[UMShareToFacebook]                                        delegate:self];    //实现回调方法:    -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response    {            //根据`responseCode`得到发送结果,如果分享成功            if(response.responseCode == UMSResponseCodeSuccess)            {                //得到分享到的微博平台名                NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);            }          }

使用自定义分享界面在对应的Facebook分享按钮中实现下面的方法

    [[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToFacebook] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){        if (response.responseCode == UMSResponseCodeSuccess) {            NSLog(@"分享成功!");        }    }];

6.2.2  使用应用内网页分享

6.2.2.1  注册应用

在Facebook开放平台(点击链接) 注册你的facebook应用,注意在你的应用Native iOS App填写Bundle ID

6.2.2.2  添加相关库文件

解压下载文件夹,在UMSocial_Sdk_Extra_Frameworks目录下,把Facebook文件夹添加到工程,添加系统Framework:Accounts.framework 和Social.framework

6.2.2.3  添加配置、URL schemes 及系统回调

在你的工程设置项,targets 一栏下,选中自己的 target,在Info中加入一条key为FacebookAppID,value的格式为fb”+facebook AppID,如“fb1440390216179601”,以及key为FacebookDisplayName,value为在Facebook后台设置的Display Name,如UmengShare。在 Info->URL Types 中添加 URL Schemes,设置Xcode的url scheme格式为“fb”+facebook AppID,例如“fb1440390216179601”
注:适配iOS9的配置详见适配iOS9系统

在APPdelegate中实现下面的回调

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{    BOOL result = [UMSocialSnsService handleOpenURL:url];    if (result == FALSE) {        //调用其他SDK,例如支付宝SDK等    }    return result;}

6.2.2.4  添加Facebook

在AppDelegate的入口方法增加下面代码

    //设置Facebook,AppID和分享url,需要#import "UMSocialFacebookHandler.h"    [UMSocialFacebookHandler setFacebookAppID:@"1440390216179601" shareFacebookWithURL:@"http://www.umeng.com/social"];

设置分享内容方法和调用系统Facebook分享相同

6.3  添加Twitter

6.3.1  使用Twitter SDK分享

使用默认分享界面分享调用下面的代码

    [UMSocialSnsService presentSnsIconSheetView:self                                          appKey:你的友盟应用Appkey                                       shareText:@"友盟社会化分享让您快速实现分享等社会化功能,www.umeng.com/social"                                      shareImage:[UIImage imageNamed:@"icon.png"]                                 shareToSnsNames:@[UMShareToTwitter]                                       delegate:self];    //实现回调方法:    -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response    {            //根据`responseCode`得到发送结果,如果分享成功            if(response.responseCode == UMSResponseCodeSuccess)            {                //得到分享到的微博平台名                NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);            }          }

使用自定义分享界面,在对于的Twitter分享按钮中实现下面的方法

    [[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToTwitter] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){        if (response.responseCode == UMSResponseCodeSuccess) {            NSLog(@"分享成功!");        }    }];

6.3.2  使用应用内网页分享

6.3.2.1  添加相关库文件

解压下载文件夹,在UMSocial_Sdk_Extra_Frameworks目录下,把Twitter文件夹添加到工程,如果支持iOS6系统,需要添加系统Framework:Accounts.framework 、CoreData.framework 和Social.framework

6.3.2.2  添加Twitter

在AppDelegate的入口方法设置:

#import "UMSocialTwitterHandler.h"- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    //默认使用iOS自带的Twitter分享framework,在iOS 6以上有效。若要使用我们提供的twitter分享需要使用此开关:    [UMSocialTwitterHandler openTwitter];    // 集成的TwitterSDK仅在iOS7.0以上有效,在iOS 6.x上自动调用系统内置Twitter授权    if (UMSYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {        [UMSocialTwitterHandler setTwitterAppKey:@"fB5tvRpna1CKK97xZUslbxiet" withSecret:@"YcbSvseLIwZ4hZg9YmgJPP5uWzd4zr6BpBKGZhf07zzh3oj62K"];    }}

设置分享内容方法与使用Twitter SDK分享相同

6.4  添加Instagram

6.4.1  添加相关库文件

解压下载文件夹,在UMSocial_Sdk_Extra_Frameworks目录下,把Instagram文件夹添加到工程

6.4.2  添加Instagram开关

在AppDelegate的入口方法设置:

#import "UMSocialInstagramHandler.h"- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    [UMSocialInstagramHandler openInstagramWithScale:NO paddingColor:[UIColor blackColor]];}

6.4.3  设置分享内容

使用默认分享界面调用下面的方法

    [UMSocialSnsService presentSnsIconSheetView:self                                          appKey:你的友盟应用Appkey                                       shareText:@"友盟社会化分享让您快速实现分享等社会化功能,www.umeng.com/social"                                      shareImage:[UIImage imageNamed:@"icon.png"]                                shareToSnsNames:@[UMShareToInstagram]                                       delegate:self];    //实现回调方法:    -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response    {            //根据`responseCode`得到发送结果,如果分享成功            if(response.responseCode == UMSResponseCodeSuccess)            {                //得到分享到的微博平台名                NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);            }          }

使用自定义界面,在对应的Instagram分享按钮中实现下面的方法

    [[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToInstagram] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){        if (response.responseCode == UMSResponseCodeSuccess) {            NSLog(@"分享成功!");        }    }];

6.5  添加Line

6.5.1  添加相关库文件

解压下载文件夹,在UMSocial_Sdk_Extra_Frameworks目录下,把Line文件夹添加到工程

6.5.2  添加Line开关

在AppDelegate的入口方法设置:

#import "UMSocialLineHandler.h"- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{//分享到line,只能分享纯文本消息或者纯图片消息    [UMSocialLineHandler openLineShare:UMSocialLineMessageTypeImage];}

6.5.3  设置分享内容

使用默认分享界面,添加下面的代码

    [UMSocialSnsService presentSnsIconSheetView:self                                          appKey:你的友盟应用Appkey                                       shareText:@"友盟社会化分享让您快速实现分享等社会化功能,www.umeng.com/social"                                      shareImage:[UIImage imageNamed:@"icon.png"]                                shareToSnsNames:@[UMShareToLine]                                       delegate:self];    //实现回调方法:    -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response    {            //根据`responseCode`得到发送结果,如果分享成功            if(response.responseCode == UMSResponseCodeSuccess)            {                //得到分享到的微博平台名                NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);            }          }

使用自定义分享界面,在对应的Line分享按钮中实现下面的方法

    [[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToLine] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){        if (response.responseCode == UMSResponseCodeSuccess) {            NSLog(@"分享成功!");        }    }];

6.6  添加Whatsapp

6.6.1  添加相关库文件

解压下载文件夹,在UMSocial_Sdk_Extra_Frameworks目录下,把Whatsapp文件夹添加到工程

6.6.2  添加Whatsapp开关

在AppDelegate的入口方法设置:

#import "UMSocialLineHandler.h"- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{//分享到whatsapp,只能分享纯文本消息或者纯图片消息    [UMSocialWhatsappHandler openWhatsapp:UMSocialWhatsappMessageTypeImage];}

6.6.3  设置分享内容

使用默认分享界面,添加下面的代码

    [UMSocialSnsService presentSnsIconSheetView:self                                          appKey:你的友盟应用Appkey                                       shareText:@"友盟社会化分享让您快速实现分享等社会化功能,www.umeng.com/social"                                      shareImage:[UIImage imageNamed:@"icon.png"]                                shareToSnsNames:@[UMShareToWhatsapp]                                       delegate:self];    //实现回调方法:    -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response    {            //根据`responseCode`得到发送结果,如果分享成功            if(response.responseCode == UMSResponseCodeSuccess)            {                //得到分享到的微博平台名                NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);            }          }

使用自定义分享界面,在对应的Whapsapp分享按钮中实现下面的方法

    [[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToWhatsapp] content:@"分享文字" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){        if (response.responseCode == UMSResponseCodeSuccess) {            NSLog(@"分享成功!");        }    }];

6.7  添加Tumblr

注意:我们采用打开Tumblr客户端方式分享到Tumblr,由于Tumblr客户端没有兼容iOS8,因此在iOS8上分享失败

6.7.1  添加相关库文件

解压下载文件夹,在UMSocial_Sdk_Extra_Frameworks目录下,把Tumblr文件夹添加到工程

6.7.2  添加Tumblr开关

在AppDelegate的入口方法设置

#import "UMSocialTumblrHandler.h"- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    [UMSocialTumblrHandler openTumblr];}

6.7.3  设置分享内容

目前分享到Tumblr支持三种类型:图文(图片+文字)、博文(标题+文字)和链接(标题+url链接+url描述)

  • 设置图文分享
NSString *shareText = @"友盟社会化组件可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。 http://www.umeng.com/social";             //分享内嵌文字// 不能使用imageNamed:方法读取图片UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"UMS_social_demo" ofType:@"png"]];

使用默认分享界面,添加下面的代码

    [UMSocialSnsService presentSnsIconSheetView:self                                          appKey:你的友盟应用Appkey                                       shareText:shareText                                      shareImage:image                                shareToSnsNames:@[UMShareToTumblr]                                       delegate:self];    //实现回调方法:    -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response    {            //根据`responseCode`得到发送结果,如果分享成功            if(response.responseCode == UMSResponseCodeSuccess)            {                //得到分享到的微博平台名                NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);            }          }

使用自定义分享界面,在对应的Tumblr分享按钮中实现下面的方法

    [[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToTumblr] content:@"shareText" image:image location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){        if (response.responseCode == UMSResponseCodeSuccess) {            NSLog(@"分享成功!");        }    }];
  • 设置博文分享
[UMSocialData defaultData].extConfig.tumblrData.title = @"share tumblr title";NSString *shareText = @"友盟社会化组件可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。 http://www.umeng.com/social";
  • 设置链接分享
[UMSocialData defaultData].extConfig.tumblrData.link = @"http://www.umeng.com/social";[UMSocialData defaultData].extConfig.tumblrData.linkDescription = @"友盟社会化组件可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。";    所有Tumblr分享类型都可在分享中添加tag    [UMSocialData defaultData].extConfig.tumblrData.tags = @[@"Umeng", @"Share"];

随后使用默认分享界面,添加下面的代码

                    [UMSocialSnsService presentSnsIconSheetView:self                                         appKey:你的友盟应用Appkey                                      shareText:shareText                                     shareImage:image                                shareToSnsNames:@[UMShareToTumblr]                                       delegate:self];    //实现回调方法:    -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response    {        //根据`responseCode`得到发送结果,如果分享成功        if(response.responseCode == UMSResponseCodeSuccess)        {            //得到分享到的微博平台名            NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);        }    }

使用自定义分享界面,在对应的Tumblr分享按钮中实现下面的方法

    [[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToTumblr] content:shareText image:image location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){        if (response.responseCode == UMSResponseCodeSuccess) {            NSLog(@"分享成功!");        }    }];

7.  设置分享内容

7.1  使用默认分享界面

在分享按钮中实现下面的方法

[UMSocialSnsService presentSnsIconSheetView:self                                      appKey:你的友盟应用Appkey                                   shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"                                  shareImage:[UIImage imageNamed:@"icon.png"]                            shareToSnsNames:@[UMShareToSina,UMShareToTencent,UMShareToRenren,UMShareToDouban,UMShareToEmail]                                delegate:self]; //实现回调方法:-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response{        //根据`responseCode`得到发送结果,如果分享成功        if(response.responseCode == UMSResponseCodeSuccess)        {            //得到分享到的微博平台名            NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);        }      }
  • shareToSnsNames中传递的参数顺序即为分享面板中各个分享平台的排列顺序
  • 如果需要支持横屏,则在弹出分享列表页前调用[UMSocialConfig setSupportedInterfaceOrientations:UIInterfaceOrientationMaskLandscape];

7.2  使用自定义分享界面

需要使用自定义分享界面,可以在对应的分享按钮中调用下面的方法,如新浪微博

[[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToSina] content:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social" image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){    if (response.responseCode == UMSResponseCodeSuccess) {        NSLog(@"分享成功!");    }}];

其他平台替换UMShareToSina如腾讯微博则替换为UMShareToTencent 各平台参数列表为

平台名参数新浪微博UMShareToSina腾讯微博UMShareToTencentQQUMShareToQQQQ空间UMShareToQzone微信UMShareToWechatSession微信朋友圈UMShareToWechatTimeline微信收藏UMShareToFavorite邮件UMShareToEmail短信UMShareToSms豆瓣UMShareToSms短信UMShareToDouban人人网UMShareToRenrenFacebookUMShareToFacebookTwitterUMShareToTwitter易信UMShareToYXSession易信朋友圈UMShareToYXTimeline来往UMShareToLWSession来往动态UMShareToLWTimelineInstagramUMShareToInstagramLineUMShareToLineWhatsappUMShareToWhatsappTumblrUMShareToTumblr

7.3  分享多媒体资源

7.3.1  分享URL图片

使用默认分享界面,使用下面的代码

[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"http://www.baidu.com/img/bdlogo.gif"];//调用快速分享接口[UMSocialSnsService presentSnsIconSheetView:self                                      appKey:你的友盟应用Appkey                                   shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"                                  shareImage:nil                          shareToSnsNames:@[UMShareToSina]                                delegate:self];//实现回调方法:-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response{        //根据`responseCode`得到发送结果,如果分享成功        if(response.responseCode == UMSResponseCodeSuccess)        {            //得到分享到的微博平台名            NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);        }      }

使用自定义分享界面,在对应平台分享按钮中实现下面的方法

UMSocialUrlResource *urlResource = [[UMSocialUrlResource alloc] initWithSnsResourceType:UMSocialUrlResourceTypeImage url:                                        @"http://www.baidu.com/img/bdlogo.gif"];[[UMSocialDataService defaultDataService]  postSNSWithTypes:@[UMShareToSina] content:@"分享内嵌文字" image:nil location:nil urlResource:urlResource presentedController:self completion:^(UMSocialResponseEntity *shareResponse){       if (shareResponse.responseCode == UMSResponseCodeSuccess) {           NSLog(@"分享成功!");       }    }];

分享其他平台替换UMShareToSina为其他平台参数即可

7.3.2  分享本地gif图片

分享本地gif图片到各个开放平台,需要生成把本地gif图片生成NSData对象,作为各个分享方法的shareImage参数,例如快速分享接口如下写法。
分享png、jpg图片则只需要生成UIImage,传入到shareImage参数,不能使用这种写法。

    //分享gif图片    NSString *path = [[NSBundle mainBundle] pathForResource:@"picName"                                                     ofType:@"gif"];    NSData *gifData = [NSData dataWithContentsOfFile:path];    [UMSocialSnsService presentSnsIconSheetView:self appKey:UmengAppkey shareText:shareText shareImage:gifData shareToSnsNames:nil delegate:self];    //分享png、jpg图片    [UMSocialSnsService presentSnsIconSheetView:self appKey:UmengAppkey shareText:shareText shareImage:[UIImage imageNamed:@"picName"] shareToSnsNames:nil delegate:self];

7.3.3  分享URL音乐

分享音乐资源只需要将UMSocialUrlResourceType设置为Music类型即可

[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeMusic url:@"http://mr4.douban.com/201401091529/6e0b23f37fa584f2a6e58ac70d03b31e/view/song/small/p759182.mp3"];//调用快速分享接口[UMSocialSnsService presentSnsIconSheetView:self                                      appKey:你的友盟应用Appkey                                   shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"                                  shareImage:nil                          shareToSnsNames:@[UMShareToSina]                                delegate:self];//实现回调方法:-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response{        //根据`responseCode`得到发送结果,如果分享成功        if(response.responseCode == UMSResponseCodeSuccess)        {            //得到分享到的微博平台名            NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);        }      }

微信设置分享音乐方法

微信分享音乐方法直接调用原生SDK方法

WXMusicObject *musicObject = [WXMusicObject object];                musicObject.musicUrl = @"要跳转的连接";                musicObject.musicDataUrl = @"我分享的是mp3,这里是mp3的连接";                [UMSocialData defaultData].extConfig.wxMediaObject = musicObject;                [UMSocialData defaultData].extConfig.wxMessageType = UMSocialWXMessageTypeOther;

7.3.4  分享URL视频

分享视频资源需要将UMSocialUrlResourceType设置为Video类型即可

[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeVideo url:@"http://v.youku.com/v_show/id_XNjQ1NjczNzEy.html?f=21207816&ev=2"];//调用快速分享接口[UMSocialSnsService presentSnsIconSheetView:self                                      appKey:你的友盟应用Appkey                                   shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"                                  shareImage:nil                          shareToSnsNames:@[UMShareToSina]                                delegate:self];//实现回调方法:-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response{        //根据`responseCode`得到发送结果,如果分享成功        if(response.responseCode == UMSResponseCodeSuccess)        {            //得到分享到的微博平台名            NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);        }      }

7.4  分平台设置分享内容

[UMSocialData defaultData].extConfig下设置各个分享平台的分享文字、分享图片、分享视频、音乐等。各个平台的对象名,请参看头文件定义,此设置方法不支持直接发送分享内容的底层分享方法,只支持使用有界面的分享方法,示例代码如下:

[UMSocialData defaultData].extConfig.sinaData.shareText = @"分享到新浪微博内容";[UMSocialData defaultData].extConfig.tencentData.shareImage = [UIImage imageNamed:@"icon"]; //分享到腾讯微博图片 [[UMSocialData defaultData].extConfig.wechatSessionData.urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"http://www.baidu.com/img/bdlogo.gif"];  //设置微信好友分享url图片[[UMSocialData defaultData].extConfig.wechatTimelineData.urlResource setResourceType:UMSocialUrlResourceTypeVideo url:@"http://v.youku.com/v_show/id_XNjQ1NjczNzEy.html?f=21207816&ev=2"]; //设置微信朋友圈分享视频

7.5  添加自定义平台

如果需要修改已有面板中的按钮,可以参考下面的方法修改平台相应的图片、文字和点击事件等,例如下面修改新浪微博的图片、文字和点击事件

    UMSocialSnsPlatform *sinaPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina];    sinaPlatform.bigImageName = @"icon";    sinaPlatform.displayName = @"微博";    sinaPlatform.snsClickHandler = ^(UIViewController *presentingController, UMSocialControllerService * socialControllerService, BOOL isPresentInController){        NSLog(@"点击新浪微博的响应");    };

如果需要添加自定义按钮,如复制链接等按钮,在appdelegate方法内添加下面的代码:

UMSocialSnsPlatform *snsPlatform = [[UMSocialSnsPlatform alloc] initWithPlatformName:@"CustomPlatform"];snsPlatform.displayName = @"自定义平台";snsPlatform.snsClickHandler = ^(UIViewController *presentingController, UMSocialControllerService * socialControllerService, BOOL isPresentInController){NSLog(@"点击自定义平台的响应");};[UMSocialConfig addSocialSnsPlatform:@[snsPlatform]];//设置你要在分享面板中出现的平台[UMSocialConfig setSnsPlatformNames:@[UMShareToSina,@"CustomPlatform"]];

8.  常见错误

8.1  错误码列表

5001错误的友盟appkey,或者此appkey没有绑定任何平台.如果开发者绑定了,依然出现这个问题,让开发者再试一下,可能是刚绑定马上就测试的原因,最好等2分钟。5002这个友盟appkey已经被禁止5003请求的参数中没有uid5004未知的错误,具体的错误信息会在log的输出中5005访问频率超限,可一会儿再试5006请求参数中没有content字段5007请求参数中content字段的内容为空5008没有上传图片5009此友盟的appkey没有绑定对应平台的appkey和appsecret5010userid无效,这个用户并没有进行授权5013请求的参数中没有appkey这个字段5014没有对此用户进行授权5016分享信息重复5017分享图片大小有问题5024获取access token失败,具体看log输出5025获取access token失败,具体看log输出5027授权已经过期5028授权已经过期5015请求中没有state参数5016发送了重复内容的微博5017图像文件大小不正确5018appurl不正确5019图像url不正确5020没有使用Qzone add_share接口的权限5029该用户已经关注过了5030没有使用此api的权限5031openid错误5032用户不存在或者用户无法在平台发言5033请求参数非法5034用户不在平台的应用测试列表当中5035发布内容频率太高5036IMEI参数错误5037此App尚未授权过500给定uid的用户并不存在501绑定账户失败502连接服务器失败503评论失败504获取评论失败505用户被加入黑名单506获取好友失败507获取授权url失败508解除授权失败510分享失败511获取bar失败512从平台获取用户信息失败513url跳转失败514从social获取用户信息失败515请求的参数错误516请求喜欢失败517版本号错误-101没有Oauth授权-102未知错误-103服务器没响应-104初始化失败-105参数错误

8.2  技术支持

点击访问:友盟开发者社区

请发邮件至social-support@umeng.com。为了能够尽快响应您的反馈,请提供您的appkey及log中的详细出错日志,您所提供的内容越详细越有助于我们帮您解决问题。

查看log日志方法:在友盟代码入口处添加代码:[UMSocialData openLog:YES]; 在控制台中查看相应日志


0 0
原创粉丝点击