【IOS开发进阶系列】社会化分享SDK专题

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开放平台注册应用

http://open.qq.com/user/info


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 在微信开放平台注册应用

https://open.weixin.qq.com/cgi-bin/applist?t=manage/list&lang=zh_CN&token=144ae53b87b86421a69f7296ed1daeed5a5d9806


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 如何更改分享来源和授权页面的友盟社会化组件字段

http://bbs.umeng.com/forum.php?mod=viewthread&tid=5226&extra=page%3D1%26filter%3Ddigest%26digest%3D1%26orderby%3Dlastpost


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应用程序之间的跳转

http://blog.csdn.net/dajian790626/article/details/10463603

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容