swift

iOS编程中的原生分享

2019-07-17  本文已影响0人  单线程Jack

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(@"点击了发送");

        }

    };

}
上一篇下一篇

猜你喜欢

热点阅读