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

由于苹果审核政策需求,建议大家对未安装客户端平台进行隐藏,在设置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:工程名称 do
platform :ios,‘5.0‘
pod ‘UMengSocialCOM‘, ‘~> 5.2.1‘
end

1.1.2  手动集成SDK

下载 最新版SDK

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

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

现在应该是这样的效果:

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

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

UMSocial_Sdk_Extra_Frameworks 文件夹的目录结构

文件或文件夹 含义
TencentOpenAPI QQ互联SDK
WeChat 微信SDK
SinaSSO 微博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

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图片生效

现在会出现效果:

注意: 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
腾讯微博 UMShareToTencent
QQ UMShareToQQ
QQ空间 UMShareToQzone
微信 UMShareToWechatSession
微信朋友圈 UMShareToWechatTimeline
微信收藏 UMShareToFavorite
邮件 UMShareToEmail
短信 UMShareToSms
豆瓣 UMShareToSms
短信 UMShareToDouban
人人网 UMShareToRenren
Facebook UMShareToFacebook
Twitter UMShareToTwitter
易信 UMShareToYXSession
易信朋友圈 UMShareToYXTimeline
来往 UMShareToLWSession
来往动态 UMShareToLWTimeline
Instagram UMShareToInstagram
Line UMShareToLine
Whatsapp UMShareToWhatsapp
Tumblr UMShareToTumblr

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

8.2  技术支持

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

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

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

时间: 2024-10-06 23:08:29

IOS友盟 社会化分享 > 社会化iOS组件 > 分享集成的相关文章

IOS 友盟使用详解

IOS 友盟使用详解 这篇博客将会详细介绍友盟的使用,希望对博友们有所帮助. 首先我们在浏览器上搜索友盟. 在这里我们选择官网这个,进去友盟官网后我们按照下图进行选择. 接下来选择如下图 Next 这样我们便进入到了帮助文档 如果还没有友盟账号那么我们就需要注册一下了(点击图片中的注册即可) 注册成功并且登陆后我们需要按照操作获取Appkey 操作如图 NEXT 成功获取Appkey(复制下来,接下来会用到) 返回帮助文档 接下来是下载(安装)SDK,我么可以按照图片中的两种方法操作. 我选择了

Android学习之友盟5.0推送,分享踩坑总结

这几天都没有写博客,今天集成友盟5.0推送,分享,得闲,总结一下友盟5.0推送分享踩得哪些坑! 之前写的友盟踩坑心得是基于友盟4.3版本的,现在友盟5.0相较于4.3,有了较大的改动,呜呼哀哉!学而时习之吧. 友盟5.0的好处:集成推送,分享可以通过导入module的形式,代码简化,维护性高,(一些资源文件就不用自己慢慢去拷贝了). 至于缺点,就是刚刚改版,会有很多跟4.3不一样的使用方法,所以需要前人去踩坑了! 友盟推送: 1:添加Module Android studio导入Module自不

iOS友盟社会化分享完全攻略

1 简介 现如今几乎所有人都有社交账号和社交App,而分享功能也几乎随处可见.本文的目的在于介绍分享功能的基本实现.使用的是友盟的社会化分享组件,这样就不用一个一个对接各个平台的接口,可以使用一套接口来实现多个平台的分享功能.本文以分享到微信.QQ.微博为例. 2 开发者账号 这里说的不是创建苹果的开发者账号,而是创建友盟和各个要分享到的平台的开发者账号.和苹果开发者账号一样,要使用友盟的服务,要分享到各个平台,都需要对应的开发者账号去获取key. 2.1 友盟开发者账号及key 打开友盟的首页

iOS友盟社会化分享U-Share分享面板不显示的问题(基本配置没有错误)

//要先是window可视化 [self.window makeKeyAndVisible]; //添加友盟分享[[UMSocialManager defaultManager] openLog:YES]; //[UMSocialGlobal shareInstance].isUsingWaterMark = YES;[UMSocialGlobal shareInstance].isClearCacheWhenGetUserInfo = NO; /* 设置友盟appkey */[[UMSocia

iOS 友盟分享

博文一 1.集成友盟分享,需要先注册一个友盟账号,注册地址 友盟开发者平台官网  友盟集成文档 友盟sdk下载地址友盟sdk下载地址 2,成功下载sdk集成后,微信分享需要配置一下 新浪微博 之类到同样配置就行 3.整合完之后就开始上代码了 ShareManage.h [objc] view plaincopy // //  ShareManage.h //  KONKA_MARKET // //  Created by wxxu on 14/12/18. //  Copyright (c) 2

iOS 友盟第三方登录分享(转载)

原文地址:http://www.360doc.com/content/15/0121/14/20919452_442560039.shtml // 需要引入框架 // 1. SystemConfiguration.framework // 2. CoreGraphics.framework // 3. libsqlite3.dylib // 4. CoreTelephony.framework // 5. libstdc++.dylib, // 6. libz.dylib // 下载最新的SDK

IOS 友盟分享功能相关问题

1.分享功能弹出控制面板 [UMSocialSnsService presentSnsIconSheetView:self appKey:@"507fcab25270157b37xxxxxx" shareText:@"你要分享的文字" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:[NSArray arrayWithObjects:UMShareToSina,UMShare

iOS友盟分享--集成Facebook官方SDK

一直用的友盟分享,最近客户提了个新需求要求可以分享到Facebook  想到友盟就有FB分享 万分激动啊.. 但是测试后发现 友盟的Facebook 两种都存在一定问题.. 第一种   使用系统自带Facebook需要先在手机上设置Facebook账号 优点:这种分享简单 不需要配置Facebook AppID 缺点:继承了系统Facebook 不能预填写分享内容的特点(一般的app分享内容是要预填写的  怎么着也得王婆卖瓜对不对..所以这个缺点很致命); 第二种:使用应用内网页分享 (这种分享

iOS:友盟SDK分享

友盟SDK分享 基本步骤: 1.注册友盟开发者账号 2.登陆账号,添加新应用,获取AppKey 3.下载并安装SDK 4.解压SDK压缩包,将形如UMSocial_sdk_x.x.x文件拖入工程中 例如:UMSocial_Sdk_4.4 5.项目面板中手动添加系统库SystemConfiguration.framework 注意:       1)添加SDK后需要手动添加系统库SystemConfiguration.framework 2) 若你的工程设置了all_load,需要添加手机QQ S