iOS之OC使用原生控件实现分享到QQ、微信、短信、微博等的两种方法

现在任何一款APP都离不开“分享”,产品设计可能是觉得有分享能更好的推广自己的产品吧。。。

一种是使用UIActivityViewController, 另外一种是使用Social框架中的SLComposeViewController

一、UIActivityViewController

优缺点:

/**

 优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包

 缺点:UI可定制性差,只能使用系统提供的固定样式,长相如下。分享的类型受限,只能分享text、url、image。

 */

这种实现相当简单,设备会检测已安装的设备,比如说手机需要安装 QQ 才能分享到QQ。否则在选择分享渠道的时候是没有未安装的APP渠道的。

直接代码:

- (void)shareBtClick
{
    NSString *textToShare = @"哈罗大家好,这是分享测试的内容哦,如已看请忽略!如有任何疑问可联系1008611查你话费吧!";
    UIImage *imageToShare = [UIImage imageNamed:@"动态(1)@2x.png"];
    NSURL *urlToShare = [NSURL URLWithString:@"http://blog.csdn.net/Boyqicheng"];
    // 分享的图片不能为空
    NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
    UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
    // 排除(UIActivityTypeAirDrop)AirDrop 共享、(UIActivityTypePostToFacebook)Facebook
     activityVC.excludedActivityTypes = @[UIActivityTypePostToFacebook, UIActivityTypeAirDrop];
    [self presentViewController:activityVC animated:YES completion:nil];
    // 通过block接收结果处理
    UIActivityViewControllerCompletionWithItemsHandler completionHandler = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){
        if (completed) {
            [self showAlertViewWithMsg:@"恭喜你,分享成功!"];
        }else{
            [self showAlertViewWithMsg:@"很遗憾,分享失败!"];
        }
    };
    activityVC.completionWithItemsHandler = completionHandler;
}

效果:


二、SLComposeViewController

优缺点:

/**

 优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包。UI可以自己绘制,满足了很多个性化的需求。

 缺点:分享界面的UI需要开发者自己绘制,增加了工作量。分享的类型受限,只能分享text、url、image。

 */

代码:

// 分享按钮的实现方法
- (void)shareBtClick
{
    // Share Extension 分享入口,需要分享到哪个平台就用哪个平台的id
    NSString *socialType = @"com.tencent.mqq.ShareExtension";
    /* 1、 系统只提供了下面几种分享平台:
     SLServiceTypeTwitter;
     SLServiceTypeFacebook;
     SLServiceTypeSinaWeibo;
     SLServiceTypeTencentWeibo;
     SLServiceTypeLinkedIn;
     2、iOS8之后系统推出的Share Extension,可以通过App的Share Extension提供了分享入口进行分享如微信的:com.tencent.xin.sharetimeline
     实际可以根据id来分享到更多平台,如微信:
     NSString *socialType = @"com.tencent.xin.sharetimeline";
     SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:socialType];
     //
     3、 下面是小编整理的部分平台id 2017-9-15
      com.taobao.taobao4iphone.ShareExtension  //  淘宝
      com.apple.share.Flickr.post}",   //  Flickr
      com.apple.share.SinaWeibo.post  //   新浪微博
     com.laiwang.DingTalk.ShareExtension  //   钉钉
     com.apple.mobileslideshow.StreamShareService  //  iCloud
     com.alipay.iphoneclient.ExtensionSchemeShare  //   支付宝
     com.apple.share.Facebook.post  //   Facebook
     com.apple.share.Twitter.post  //   Twitter
     com.apple.Health.HealthShareExtension}",    // 应该是健康管理
     com.tencent.xin.sharetimeline  //   微信(好友、朋友圈、收藏)
     com.apple.share.TencentWeibo.post  //   腾讯微博
     com.tencent.mqq.ShareExtension  //   QQ
     */
    
    // 创建 分享的控制器
    SLComposeViewController *composeVC  = [SLComposeViewController composeViewControllerForServiceType:socialType];
    if (!composeVC) {
        [self showAlertViewWithMsg:@"您尚未安装软件"];
        return;
    }
    if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
         [self showAlertViewWithMsg:@"软件未配置登录信息"];
        return;
    }
    //添加分享的文字、图片、链接
    [composeVC setInitialText:@"哈罗大家好,这是分享测试的内容哦,如已看请忽略!如有任何疑问可联系1008611查你话费吧!"];
    [composeVC addImage:[UIImage imageNamed:@"动态(1)@2x.png"]];
    [composeVC addURL:[NSURL URLWithString:@"http://blog.csdn.net/Boyqicheng"]];
    
    //弹出分享控制器
    [self presentViewController:composeVC animated:YES completion:nil];
    
    //监听用户点击了取消还是发送
    composeVC.completionHandler = ^(SLComposeViewControllerResult result){
        if (result == SLComposeViewControllerResultCancelled) {
            NSLog(@"点击了取消");
        } else {
            NSLog(@"点击了发送");
        }
    };
}

小结:

本文是参考“iOS社会化分享方案总结”这篇文章编写的,文章写得相当

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

启程Boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值