admin 管理员组文章数量: 1184232
>
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压缩包,将形如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 |
| 微信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:@""];
//设置手机QQ 的AppId,Appkey,和分享URL,需要#import "UMSocialQQHandler.h"
[UMSocialQQHandler setQQWithAppId:@"100424468" appKey:@"c7394704798a158208a74ab60104f0ba" url:@""];
//打开新浪微博的SSO开关,设置新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。需要 #import "UMSocialSinaSSOHandler.h"
[UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"3921700954"
secret:@"04b48b094faeb16683c32669824ebdad"
RedirectURL:@""];
}
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详细集成步骤参考 |
| 集成最新Facebook SDK在iOS7.0以上有效,若要使用我们提供的facebook分享需要设置“fb”+facebook AppID,例如“fb1440390216179601”,详细集成方法见 |
1.5 设置分享文本、图片
1.5.1 使用默认UI风格
- 适用人群:希望10分钟集成从无到有实现分享的开发者
打开需要集成分享功能的视图源码
UIViewController.m
,把如下代码复制并粘贴到你将弹出一个分享列表的位置,例如到响应分享按钮的方法中。并且修改下面的友盟appkey,你要分享的文字、图片,你要分享到的微博平台,例如下面写的是新浪微博、QQ、微信。
//如果需要分享回调,请将delegate对象设置self,并实现下面的回调方法
[UMSocialData defaultData].extConfig.title = @"分享的title";
[UMSocialData defaultData].extConfig.qqData.url = @"";
[UMSocialSnsService presentSnsIconSheetView:self
appKey:@"507fcab25270157b37000010"
shareText:@"友盟社会化分享让您快速实现分享等社会化功能,"
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:@""];
[UMSocialData defaultData].extConfig.title = @"分享的title";
[UMSocialData defaultData].extConfig.qqData.url = @"";
[UMSocialSnsService presentSnsIconSheetView:self
appKey:@"507fcab25270157b37000010"
shareText:@"友盟社会化分享让您快速实现分享等社会化功能,"
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 = @"";
UMSocialUrlResource *urlResource = [[UMSocialUrlResource alloc] initWithSnsResourceType:UMSocialUrlResourceTypeImage url:
@""];
[[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:@""];
- 如果不添加上面的代码,则分享列表中不会出现微信及朋友圈图标
- 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 = @"";
如果是朋友圈,则替换平台参数名即可
[UMSocialData defaultData].extConfig.wechatTimelineData.url = @"";
注意设置的链接必须为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:@""];
回调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:@""];
//调用快速分享接口3.3.3 分享url视频
分享URL视频资源将
UrlResourceType
设置为Video即可
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeVideo url:@""];
//调用快速分享接口3.4 关注官方微博
在授权页面中显示关注官方微博的复选页面,只在第一次授权时出现,需要在微博开放平台设置官方运营微博
4. 添加QQ及Qzone
4.1 注册应用
使用QQ及Qzone分享首先在腾讯开放平台注册应用,地址: 按照要求填写,审核通过前需要添加测试账号,否则会报错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:@""];
- 如果不添加上面的代码,则分享列表中不会出现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 配置错误,则分享完成后无法返回应用
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 = @"";
Qzone设置点击分享内容跳转链接替换平台参数名即可
[UMSocialData defaultData].extConfig.qzoneData.url = @"";
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:@"友盟社会化分享让您快速实现分享等社会化功能,"
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
- identifier必须为 alipayShare
- URL Schemes 命名规则:ap+AppID
- iOS 9以后的系统需要添加支付宝分享的scheme,scheme名为alipayshare,参考
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 = @"友盟社会化组件可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。 "5.3.4.2 设置图片分享(分为本地图片和网络图片)
// 图片分享,设置分享类型为图片并传入参数,图片对象在下面分享接口中传入
[UMSocialData defaultData].extConfig.alipaySessionData.alipayMessageType = UMSocialAlipayMessageTypeImage;
// 如果是网络图片,需要设置
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"
5.3.4.3 设置链接分享
[UMSocialData defaultData].extConfig.alipaySessionData.alipayMessageType = UMSocialAlipayMessageTypeWeb;
[UMSocialData defaultData].extConfig.alipaySessionData.title = @"shareTitle";
[UMSocialData defaultData].extConfig.alipaySessionData.url = @" 调用分享面板
NSString *shareText = @"友盟社会化组件可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。 "; //分享内嵌文字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:@""];
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:@""];
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的配置详见
在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:@""];
设置分享内容方法和调用系统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 = @"友盟社会化组件可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。 "; //分享内嵌文字// 不能使用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 = @"友盟社会化组件可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。 ";
- 设置链接分享
[UMSocialData defaultData].extConfig.tumblrData.link = @"";
[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:@"友盟社会化分享让您快速实现分享等社会化功能,"
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:@"友盟社会化分享让您快速实现分享等社会化功能," image:nil location:nil urlResource:nil presentedController:self completion:^(UMSocialResponseEntity *response){
if (response.responseCode == UMSResponseCodeSuccess) {
NSLog(@"分享成功!");
}
}];
其他平台替换
UMShareToSina
如腾讯微博则替换为
UMShareToTencent
各平台参数列表为
| 平台名 | 参数 |
| 新浪微博 | UMShareToSina |
| 腾讯微博 | UMShareToTencent |
| UMShareToQQ | |
| QQ空间 | UMShareToQzone |
| 微信 | UMShareToWechatSession |
| 微信朋友圈 | UMShareToWechatTimeline |
| 微信收藏 | UMShareToFavorite |
| 邮件 | UMShareToEmail |
| 短信 | UMShareToSms |
| 豆瓣 | UMShareToSms |
| 短信 | UMShareToDouban |
| 人人网 | UMShareToRenren |
| UMShareToFacebook | |
| UMShareToTwitter | |
| 易信 | UMShareToYXSession |
| 易信朋友圈 | UMShareToYXTimeline |
| 来往 | UMShareToLWSession |
| 来往动态 | UMShareToLWTimeline |
| UMShareToInstagram | |
| Line | UMShareToLine |
| UMShareToWhatsapp | |
| Tumblr | UMShareToTumblr |
7.3 分享多媒体资源
7.3.1 分享URL图片
使用默认分享界面,使用下面的代码
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:@""];
//调用快速分享接口
[UMSocialSnsService presentSnsIconSheetView:self
appKey:你的友盟应用Appkey
shareText:@"友盟社会化分享让您快速实现分享等社会化功能,"
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:
@""];
[[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:@""];
//调用快速分享接口
[UMSocialSnsService presentSnsIconSheetView:self
appKey:你的友盟应用Appkey
shareText:@"友盟社会化分享让您快速实现分享等社会化功能,"
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:@""];
//调用快速分享接口
[UMSocialSnsService presentSnsIconSheetView:self
appKey:你的友盟应用Appkey
shareText:@"友盟社会化分享让您快速实现分享等社会化功能,"
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:@""]; //设置微信好友分享url图片
[[UMSocialData defaultData].extConfig.wechatTimelineData.urlResource setResourceType:UMSocialUrlResourceTypeVideo url:@""]; //设置微信朋友圈分享视频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 技术支持
点击访问:
请发邮件至 。为了能够尽快响应您的反馈,请提供您的appkey及log中的详细出错日志,您所提供的内容越详细越有助于我们帮您解决问题。
查看log日志方法:在友盟代码入口处添加代码:
[UMSocialData openLog:YES];
在控制台中查看相应日志
版权声明:本文标题:深入探究《分享集成_libumsociallog.a》:让iOS友盟分享功能更加顺畅 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1772579967a3556961.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论