前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【IOS开发进阶系列】社会化分享SDK专题

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

作者头像
江中散人_Jun
发布2023-10-16 11:54:21
2140
发布2023-10-16 11:54:21
举报
文章被收录于专栏:云原生布道专栏

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 友盟分享SDK使用
    • 1.1 各渠道集成
      • 1.1.1 新浪微博集成
      • 1.1.2 QQ分享
      • 1.1.3 微信分享
      • 1.1.4 分享数据发送
    • 1.2 开发技巧
      • 1.2.1 自定义分享列表样式
      • 1.2.2 自定义图标
      • 1.2.3 如何更改分享来源和授权页面的友盟社会化组件字段
      • 1.2.4 分享内容Url字符串前缀不能有空格,否则qq分享会失败
      • 1.2.5 点击qq分享、登陆等,分享成功后返回APP无回调问题
  • 2 ShareSDK
    • 2.1 开发技巧
      • 2.1.1 分享到小程序
  • 3 应用间跳转
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档