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

2023-10-16 11:54:21 浏览数 (1)

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=1&filter=digest&digest=1&orderby=lastpost

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

0 人点赞