下面分享一些关于友盟分享的一些流程和经验。
首先为了给我们的应用添加分享功能,我们要在友盟开发者平台上面进行注册登录,之后,创建应用。创建过程如下:
1.友盟-我的产品-管理-添加新应用
填好了以上内容,你便可提交获取你应用的AppKey了,记下你的AppKey。
2.下载友盟SDK添加到工程中,文档中心-社会化组件-IOS,下载该组件,添加到工程文件夹中。
3.到你要集成的平台的公共平台注册账号,流程如下图:
例如,我要集成QQ好友的分享功能,我要到腾讯开放平台登录,登录地址:http://open.qq.com 创建对应的应用,完善信息。创建之后你会获得一个App ID和App Key,记下这两个id.下面,简要介绍一下应用平台信息中需要晚上的一些内容。
这里需要你输入Iphone平台信息和Ipad平台信息,信息内容一致,这里只介绍Iphone平台信息。
URL scheme:友盟的官方文档给的解释是“URL schemes 和跳出应用后返回应用的逻辑相关,因此如果使用了SSO授权功能或QQ、微信、webview方式的Facebook,就必须配置URL schemes,否则跳出应用后将无法返回”,没看懂什么叫webview方式的Facebook,反正他就是告诉你,这个配置好了,你分享完之后,才能成功返回你自己的应用。详细的配置过程,请看友盟分享官方文档中“配置URL schemes”这个章节。就是在你的工程TARGETS-info-URL Types中添加URL schemes。注意,QQ好友分享和QQ空间分享在工程中对应了不同的URL schemes,虽然你在腾讯开放平台中只创建一个应用,获取了一个App id,但是通过不同的生成方式,你可以分别获得QQ好友和QQ空间的URL schemes,并分别添加在工程中。这里要填写的,就是这个URL schemes。
Bundle ID:就是你的Bundle identifier,这个一定不要填错。
AppStore ID:注意,这里不是你在友盟创建的应用ID,也不是你在第三方平台注册获得的App id,而是你的应用上线时,在AppStore中创建的应用对应的App ID。因此,如果你在应用商店曾经创建过该应用,直接填写即可,如果没有,还要先在应用商店创建应用获取App ID,再在此处填写,因为这个是必填项。由此可以看出来,分享功能的集成还是需要你做一些准备工作的,不是几分钟就能搞定的。
其他几个就根据自己的实际情况填写。
填写完成之后,点击保存。
当你将所有的信息完善之后,将此应用提交审核,审核的时间大约需要3天左右,如果公司项目上线很急,可以找客服商议尽快审核。审核之前要保证各项信息正确无误,不然提交审核以后再修改,还要重新审核,会影响上线时间。
4.第三方平台注册完成之后,还需要在友盟开发者平台上添加设置,及友盟后台绑定第三方账号。绑定方法如下:
选定你的应用-社会化分享-设置
填写对应的信息进行绑定。
5.绑定完成之后,你就可以按照友盟文档在你的工程里面添加代码了。
如果你的应用被允许使用友盟自定义的分享列表和编辑页,直接添加如下代码即可:
[UMSocialSnsService presentSnsIconSheetView:self
appKey:你的友盟应用Appkey
shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"
shareImage:[UIImage imageNamed:@"icon.png"]
shareToSnsNames:@[UMShareToSina]
delegate:self];
//实现回调方法(可选):
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
//根据`responseCode`得到发送结果,如果分享成功
if(response.responseCode == UMSResponseCodeSuccess)
{
//得到分享到的微博平台名
NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);
}
}
如果你需要自定义分享列表,那么对应如下代码:
(友盟集成文档中得代码)
#import "UMSocial.h"
[[UMSocialControllerService defaultControllerService] setShareText:@"分享内嵌文字" shareImage:[UIImage imageNamed:@"icon"] socialUIDelegate:self]; //设置分享内容和回调对象
[UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina].snsClickHandler(self,[UMSocialControllerService defaultControllerService],YES);
自己的工程中实际代码:
- (void)didClickIconButtonAction:(UIButton *)shareButton
{
//招拍挂
[UMSocialData defaultData].extConfig.wechatSessionData.url = _shareUrl;
[UMSocialData defaultData].extConfig.wechatTimelineData.url = _shareUrl;
[UMSocialData defaultData].extConfig.qqData.url = _shareUrl;
[UMSocialData defaultData].extConfig.wechatSessionData.title = _shareTitle;
[UMSocialData defaultData].extConfig.wechatTimelineData.title = [NSString stringWithFormat:@"%@ %@",self.shareTitle,self.shareText];
//微信朋友圈分享的样式如果是图文样式显示的内容是分享标题,内容少
[UMSocialData defaultData].extConfig.qqData.title = self.shareTitle;
NSString * snsName = [[UMSocialSnsPlatformManager sharedInstance].allSnsValuesArray objectAtIndex:shareButton.tag];
//新浪微博没有分享链接设置,直接分享在内容里面。
if([snsName isEqualToString:@"sina"])
{
_shareText = [NSString stringWithFormat:@"%@ %@",_shareTitle,_shareText];
}
else
{
_shareText = [NSString stringWithFormat:@"%@",_shareText];
}
[[UMSocialControllerService defaultControllerService] setShareText:_shareText shareImage:self.image socialUIDelegate:self];
NSLog(@"self.image = %@",self.image);
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:snsName];
SLAppDelegate * appDelegate = (SLAppDelegate *)[UIApplication sharedApplication].delegate;
snsPlatform.snsClickHandler(appDelegate.window.rootViewController,[UMSocialControllerService defaultControllerService],YES);
self.cancelBlock();
}
有时我们需要对分享的内容,标题,图片,链接进行详细的这是。其中文字和图片的设置可以直接通过上述代码实现,而标题,以及分享后的内容对应的链接设置如下:
[UMSocialData defaultData].extConfig.wechatSessionData.url = _shareUrl;
[UMSocialData defaultData].extConfig.wechatTimelineData.url = _shareUrl;
[UMSocialData defaultData].extConfig.qqData.url = _shareUrl;
[UMSocialData defaultData].extConfig.wechatSessionData.title = _shareTitle;
[UMSocialData defaultData].extConfig.wechatTimelineData.title = [NSString stringWithFormat:@"%@ %@",self.shareTitle,self.shareText];
//微信朋友圈分享的样式如果是图文样式显示的内容是分享标题,内容少
[UMSocialData defaultData].extConfig.qqData.title = self.shareTitle;
其中新浪微博没有分享链接的设置,可以直接将链接添加在分享的内容里面。
以上分享还没有论及自定义编辑页以及SSO功能,因为我在这次的分享集成中还没有使用到,待后期学习之后继续完善此篇文章。以上所写如有错误之处,还望大家给予更正,谢谢!