1 友盟分享SDK使用
1.1 各渠道集成
1.1.1 新浪微博集成
1.1.1.1 在新浪公共平台注册应用
http://open.weibo.com/apps/2791886632/info/basic
登录新浪微博开放平台(点击链接),填写相关应用信息并上传icon图片。注意修改安全域名为sns.whalecloud.com 同时设置授权回调页为http://sns.whalecloud.com/sina2/callback 安全域名设置在应用信息-->基本信息,具体位置参考下图:
授权回调页、取消授权回调页设置在应用信息-->高级信息,具体位置参考下图:
安全域名的修改需要二次审核通过才生效,授权回调页修改即时生效。
1.1.1.2 初始化SSO
//新浪微博配置
//打开新浪微博的SSO开关,设置新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。若在新浪后台设置我们的回调地址,“http://sns.whalecloud.com/sina2/callback”,这里可以传nil
[UMSocialSinaHandler openSSOWithRedirectURL: @"http://sns.whalecloud.com/sina2/callback"];
1.1.1.3 后台注册APPID与key
http://www.umeng.com/apps/d6000046d85c89df9d2e5b45/sns_integration?reports=true
1.1.1.4 平台集成代码
// 注意:分享到微信好友、微信朋友圈、微信收藏、QQ空间、QQ好友、来往好友、来往朋友圈、易信好友、易信朋友圈、Facebook、Twitter、Instagram等平台需要参考各自的集成方法
[UMSocialSnsService presentSnsIconSheetView: self appKey: nil shareText: nil shareImage: nil shareToSnsNames: [NSArray arrayWithObjects: UMShareToSina, UMShareToWechatSession, UMShareToWechatTimeline, UMShareToQzone, UMShareToQQ, nil] delegate: self];
1.1.1.5 分享数据填充
- (void) fillShareSinaDataWithContentDic: (NSDictionary*)contentDic
{
UMSocialData *socialData = [UMSocialData defaultData];
socialData.extConfig.sinaData.shareText = [NSString stringWithFormat: @"%@ %@", self.title,[contentDic valueForKey: @"url"]];
}
1.1.2 QQ分享
1.1.2.1 在qq开放平台注册应用
1.1.2.2 配置Url Schemes
包括tencentOpenAPI与QQAPI
1.1.2.3 API初始化
//qq配置
NSString * qqAppId = [HJUtlity getConfigParameterFromPlistFileWithKey: @"TecentAPPID"];// UM测试@"100424468"
NSString * qqAppKey = [HJUtlity getConfigParameterFromPlistFileWithKey: @"TecentAPPKEY"];// UM测试:@"c739470479dfas58208a74ab60104f0ba"
//设置分享到QQ空间的应用Id,和分享url链接
[UMSocialQQHandler setQQWithAppId: qqAppId appKey: qqAppKey url: @"http://www.umeng.com/social"];
//设置支持没有客户端情况下使用SSO授权
[UMSocialQQHandler setSupportWebView: YES];
1.1.2.4 QQ好友分享数据填充
- (void) fillShareQQDataWithContentDic: (NSDictionary*)contentDic
{
UMSocialData * socialData = [UMSocialData defaultData];
socialData.extConfig.qqData.title = [contentDic valueForKey: @"title"];
socialData.extConfig.qqData.url = [contentDic valueForKey: @"url"];
socialData.extConfig.qqData.shareText = [contentDic valueForKey: @"text"];
socialData.extConfig.qqData.shareImage = [UIImage imageNamed: [contentDic valueForKey: @"image"]];
UMSocialSnsPlatform *platform = [UMSocialSnsPlatformManager getSocialPlatformWithName: UMShareToQQ];
platform.bigImageName = @"QQIcon";
}
1.1.2.5 QQ空间分享数据填充
- (void) fillShareQZoneDataWithContentDic: (NSDictionary*)contentDic
{
UMSocialData * socialData = [UMSocialData defaultData];
socialData.extConfig.qzoneData.title = [contentDic valueForKey: @"title"];
socialData.extConfig.qzoneData.url = [contentDic valueForKey: @"url"];
socialData.extConfig.qzoneData.shareText = [contentDic valueForKey: @"text"];
socialData.extConfig.qzoneData.shareImage = [UIImage imageNamed: [contentDic valueForKey: @"image"]];
UMSocialSnsPlatform *platform = [UMSocialSnsPlatformManager getSocialPlatformWithName: UMShareToQzone];
platform.bigImageName = @"QzoneIcon";
}
1.1.3 微信分享
1.1.3.1 在微信开放平台注册应用
1.1.3.2 配置URL Scheme
1.1.3.3 API引入与初始化
//微信配置
NSString *weixinAppID = [HJUtility getConfigParameterFromPlistFileWithKey: @"WeiXinAPPID"];
NSString *weixinAPPSec = [HJUtility getConfigParameterFromPlistFileWithKey: @"WeiXinAppSecret"];
[UMSocialWechatHandler setWXAppId: weixinAppID appSecret: weixinAPPSec url: @"http://www.umeng.com/social"];
1.1.3.4 微信好友分享数据填充
- (void) fillShareWeixinSessionDataWithContentDic: (NSDictionary*)contentDic
{
UMSocialData * socialData = [UMSocialData defaultData];
socialData.extConfig.wxMessageType = UMSocialWXMessageTypeApp;
socialData.extConfig.wechatSessionData.url = [contentDic valueForKey: @"url"];
socialData.extConfig.wechatSessionData.title = [contentDic valueForKey: @"title"];
socialData.extConfig.wechatSessionData.shareText = [contentDic valueForKey: @"text"];
socialData.extConfig.wechatSessionData.shareImage = [UIImage imageNamed: [contentDic valueForKey: @"image"]];
UMSocialSnsPlatform *platform = [UMSocialSnsPlatformManager getSocialPlatformWithName: UMShareToWechatSession];
platform.bigImageName = @"WXSession";
}
1.1.3.5 微信朋友圈分享数据填充
- (void) fillShareWeixinTimelineDataWithContentDic: (NSDictionary*)contentDic
{
UMSocialData * socialData = [UMSocialData defaultData];
socialData.extConfig.wxMessageType = UMSocialWXMessageTypeApp;
//朋友圈只有文本内容,没有标题
socialData.extConfig.wechatTimelineData.title = [contentDic valueForKey: @"text"];
socialData.extConfig.wechatTimelineData.url = [contentDic valueForKey: @"url"];
// socialData.extConfig.wechatTimelineData.shareText = [contentDicvalueForKey: @"text"];
socialData.extConfig.wechatTimelineData.shareImage = [UIImage imageNamed: [contentDic valueForKey: @"image"]];
UMSocialSnsPlatform *platform = [UMSocialSnsPlatformManager getSocialPlatformWithName: UMShareToWechatTimeline];
platform.bigImageName = @"WXTimeline";
}
1.1.3.6 微信收藏分享数据填充
-(void) fillShareWeixinFavoriteDataWithContentDic: (NSDictionary*)contentDic
{
UMSocialData * socialData = [UMSocialData defaultData];
socialData.extConfig.wxMessageType = UMSocialWXMessageTypeApp;
socialData.extConfig.wechatFavoriteData.title = [contentDic valueForKey: @"title"];
socialData.extConfig.wechatFavoriteData.url = [contentDic valueForKey: @"url"];
socialData.extConfig.wechatFavoriteData.shareText = [contentDic valueForKey: @"text"];
socialData.extConfig.wechatFavoriteData.shareImage = [UIImage imageNamed: [contentDic valueForKey: @"image"]];
UMSocialSnsPlatform *platform = [UMSocialSnsPlatformManager getSocialPlatformWithName: UMShareToWechatFavorite];
platform.bigImageName = @"WXSession";
}
1.1.4 分享数据发送
-(void) fillAndSendShareCommonDataWithContentDic: (NSDictionary *)contentDic WithSnsType:(NSString*) snsType
{
//填充通用数据
UMSocialData * socialData = [UMSocialData defaultData];
socialData.title = [contentDic valueForKey: @"title"];
socialData.shareText = [NSString stringWithFormat: @"%@ %@", [contentDic valueForKey: @"text"], [contentDic valueForKey: @"url"]];
[_indicatorView startAnimating];
dispatch_async(dispatch_get_global_queue(0, 0), ^{
socialData.shareImage = [UIImage imageNamed: [contentDic valueForKey: @"image"]];
dispatch_async(dispatch_get_main_queue(), ^{
[[UMSocialDataService defaultDataService] postSNSWithTypes: [NSArray arrayWithObjects: snsType, nil] content: socialData.shareText image:socialData.shareImage location: nil urlResource: nil presentedController: self completion: ^(UMSocialResponseEntity* response)
{
NSLog(@"分享完成");
[_indicatorView stopAnimating];
[self showToastViewWithText: @"分享完成"];
}];
});
});
}
1.2 开发技巧
1.2.1 自定义分享列表样式
[UMSocialConfig setShareGridViewTheme: ^(CGContextRef ref, UIImageView *backgroundView, UILabel *label){
//改变线颜色和线宽
// CGContextSetRGBStrokeColor(ref, 0, 0, 0, 1.0);
// CGContextSetLineWidth(ref, 1.0);
// //改变背景颜色
// backgroundView.backgroundColor = [UIColor blackColor];
//添加背景图片
// UIImageView *imageView = [[UIImageView alloc] initWithFrame: backgroundView.frame];
// imageView.image = [UIImage imageNamed: @"share_bg.png"];
// [backgroundView addSubview: imageView];
// backgroundView.backgroundColor = [UIColor clearColor];
//改变文字标题的文字颜色
// label.textColor = [UIColor blueColor];
//隐藏文字
label.hidden = YES;
}];
1.2.2 自定义图标
UMSocialSnsPlatform *platform = [UMSocialSnsPlatformManager getSocialPlatformWithName: UMShareToQQ];
platform.bigImageName = @"QQIcon";
1.2.3 如何更改分享来源和授权页面的友盟社会化组件字段
1.2.4 分享内容Url字符串前缀不能有空格,否则qq分享会失败
如Release字段的URL值就不行
1.2.5 点击qq分享、登陆等,分享成功后返回APP无回调问题
使用友盟分享后,对于qq的urlscheme,必须要用8位十六进制数字表示,用十进制的就会导致分享成功后无回调问题。
2 ShareSDK
2.1 开发技巧
2.1.1 分享到小程序
绕过审核只对微信好友、微信朋友圈有效 微信分享如果是绕过审核(配置信息BypassApproval属性设置为true为绕过审核),微信朋友圈可以分享单张图片或者图片与文字一起分享,微信好友可以进行文字或者单张图片或者文件进行分享,分享回调不会正确回调。 不绕过审核,微信三个平台中,好友的功能最完整,朋友圈不能分享表情、文件和应用,收藏不能分享表情和应用,表格下以好友为例子:参数说明 title:512Bytes以内 text:1KB以内 imageData:10M以内 imagePath:10M以内(传递的imagePath路径不能超过10KB) imageUrl:10KB以内 musicUrl:10KB以内 url:10KB以内 注意:微信分享分绕过审核和不绕过审核,不绕过审核必须保证微信后台配置的签名与您的app的签名一致,否则无法分享;
微信并无实际的分享网络图片和分享bitmap的功能,如果设置了网络图片,此图片会先下载会本地,之后再当作本地图片分享,因此延迟较大。bitmap则好一些,但是由于bitmap并不知道图片的格式,因此都会被当作png编码,再提交微信客户端。此外,SHARE_EMOJI支持gif文件,但是如果使用imageData,则默认只是提交一个png图片,因为bitmap是静态图片。
注意:分享小程序目前只支持分享微信好友,分享小程序必须在sharesdk.xml文件中配置上特殊参数,如下所示:userName是小程序的原始ID,path是小程序内的页面路径;而且必须保证微信开放平台与微信公众/小程序绑定才可以分享;
3 应用间跳转
如何从微信浏览器中跳转到APP指定页面?
http://www.jianshu.com/p/738ac2b8865d
iOS 9学习系列:打通iOS 9的通用链接(Universal Links)
http://www.cocoachina.com/ios/20150902/13321.html
Android中通过scheme实现网页打开App(deep-link)
http://blog.csdn.net/u010940300/article/details/51426874
Android应用程序之间的跳转