美文网首页swift
iOS编程中的原生分享

iOS编程中的原生分享

作者: 单线程Jack | 来源:发表于2019-07-17 18:09 被阅读0次

    1.使用 UIActivityViewController

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

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

    //分享的标题 NSString *textToShare = @"分享的标题。";//分享的图片 UIImage *imageToShare = [UIImage imageNamed:@"312.jpg"];

    //分享的url NSURL *urlToShare = [NSURL URLWithString:@"http://www.baidu.com"];

    //在这里呢 如果想分享图片 就把图片添加进去 文字什么的通上 NSArray *activityItems = @[textToShare,imageToShare, urlToShare];

    UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];

    //不出现在活动项目activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll];

    [self presentViewController:activityVC animated:YES completion:nil];

    // 分享之后的回调 activityVC.completionWithItemsHandler = ^(UIActivityType _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {

        if (completed) {
    
            NSLog(@"completed");
    
            //分享 成功        } else  {
    
            NSLog(@"cancled");
    
            //分享 取消        }
    
    };
    

    2.使用 UIActivityViewController

    优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的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编程中的原生分享

        本文链接:https://www.haomeiwen.com/subject/zvpclctx.html