iOS 两种系统分享 UIActivityViewController 和 SLComposeViewController


一、使用 UIActivityViewController 分享


1、分享内容

分享内容一般是在初始化UIActivityViewController时传入,内容是一个数组,没有特定类型。可以分享文字、图片、URL等。

UIImage *shareImg = [UIImage imageNamed:@"9.jpg"];
UIImage *shareImg1 = [UIImage imageNamed:@"14.jpg"];
NSString *shareTitle = @"分享1";
NSURL *shareURL = [NSURL URLWithString:@"http://www.baidu.com"];

NSArray *activityItems = @[shareImg,shareURL,shareTitle];
UIActivityViewController *activeViewController = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];

1.1 细节注意

1、 有图片时,url 和 title无效不显示 .
NSArray *activityItems = @[shareImg,shareURL,shareTitle];

2、可以添加多张图片,默认显示第一张,可以滑动查看图片,如:
NSArray *activityItems = @[shareImg,shareImg1,shareURL,shareTitle];

3、有url 和 title 时,优先显示url,不显示title,如:

NSArray *activityItems = @[shareTitle,shareURL];

4、只有文字时,才显示文字,如:
NSArray *activityItems = @[shareTitle];


2、分享到哪儿

苹果提供了很多分享平台UIActivityType,如新浪微博、微信、Twitter等等。excludedActivityTypes 代表你不希望显示的分享平台。


注意事项

  1. 从iOS6 - iOS8 各版本分别新增了不同的平台;
  2. 如果本机没有某个平台,则不会显示可分享。
 //不显示哪些分享平台
 activeViewController.excludedActivityTypes = UIActivityTypeAddToReadingList;


二、SL 分享

1、导入框架

导入Social.framework


2、分享到哪儿(可自定义)

2.1 系统只提供了下面几种方式

 SLServiceTypeTwitter NS_AVAILABLE(10_8, 6_0);
 SLServiceTypeFacebook NS_AVAILABLE(10_8, 6_0);
 SLServiceTypeSinaWeibo NS_AVAILABLE(10_8, 6_0);
 SLServiceTypeTencentWeibo NS_AVAILABLE(10_9, 7_0);
 SLServiceTypeLinkedIn NS_AVAILABLE(10_9, NA);

2.2 实际可以根据id来分享到更多平台,如微信。

NSString *const SystemSocialType_WeiXin=@"com.tencent.xin.sharetimeline";
NSString *socialType = SystemSocialType_WeiXin;
if (![SLComposeViewController isAvailableForServiceType:socialType]) {
        NSLog(@"不可用");
        return;
    }
    
// 创建控制器,并设置ServiceType
SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:socialType];


2.3 至于如何获取这些ID,我还没有找到特定的方法。这里贴上网上介绍的常用的id

   "<NSExtension: 0x170167b00> {id = com.apple.share.SinaWeibo.post}",
    "<NSExtension: 0x170166240> {id = com.apple.share.TencentWeibo.post}",
    "<NSExtension: 0x1701663c0> {id = com.taobao.taobao4iphone.ShareExtension}",
    "<NSExtension: 0x170166540> {id = com.tencent.qqmail.shareextension}",
    "<NSExtension: 0x1701666c0> {id = com.apple.mobilenotes.SharingExtension}",
    "<NSExtension: 0x170166b40> {id = com.apple.share.Vimeo.post}",
    "<NSExtension: 0x1701669c0> {id = com.apple.mobileslideshow.StreamShareService}",
    "<NSExtension: 0x170166840> {id = com.tencent.mqq.ShareExtension}",
    "<NSExtension: 0x170166cc0> {id = com.tencent.xin.sharetimeline}",
    "<NSExtension: 0x170166e40> {id = com.apple.share.Twitter.post}",
    "<NSExtension: 0x170166fc0> {id = com.apple.share.Flickr.post}",
    "<NSExtension: 0x170167140> {id = com.alipay.iphoneclient.ExtensionSchemeShare}",
    "<NSExtension: 0x170167380> {id = com.apple.Music.MediaSocialShareService}",
    "<NSExtension: 0x170167500> {id = com.apple.share.Facebook.post}",
    "<NSExtension: 0x170167680> {id = com.apple.reminders.RemindersEditorExtension}",
    "<NSExtension: 0x170167800> {id = com.up.2.ShareExtension}",
    "<NSExtension: 0x170167980> {id = com.jianshu.Hugo.Share-Extension}",
    "<NSExtension: 0x1701660c0> {id = com.apple.Health.HealthShareExtension}"


2.4 判断服务是否可用

 [SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]; 

3、弹出分享内容输入界面

  SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
  [self presentViewController:composeVC animated:YES completion:nil]; 

4、分享内容设置

只能分享文字、图片、url

  // 添加要分享的图片
    [composeVC addImage:[UIImage imageNamed:@"9.jpg"]];
    // 添加要分享的文字
    [composeVC setInitialText:@"SL分享"];
    // 添加要分享的url
    [composeVC addURL:[NSURL URLWithString:@"http://www.baidu.com"]];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI工程仔

请我喝杯伯爵奶茶~!

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

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

打赏作者

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

抵扣说明:

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

余额充值