关闭

iOS 两种系统分享(配Demo下载)UIActivityViewController 和 SLComposeViewController

3129人阅读 评论(0) 收藏 举报
分类:

使用 UIActivityViewController 分享


分享内容

分享内容一般是在初始化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、 有图片时,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];


分享到哪儿

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

注意事项
1. 从iOS6 - iOS8 各版本分别新增了不同的平台;
2. 如果本机没有某个平台,则不会显示可分享。

 //不显示哪些分享平台
    activeViewController.excludedActivityTypes = UIActivityTypeAddToReadingList;


SL 分享

导入框架

导入Social.framework


分享到哪儿(可自定义)

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、实际可以根据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];

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}"

4、 判断服务是否可用

[SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo];


弹出分享内容输入界面

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

分享内容设置

只能分享文字、图片、url

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

0
0
查看评论

IOS 系统自带的分享功能之 UIActivityViewController

关于系统自带的分享功能 主要是在与这个类 UIActivityViewController 先上效果图 然后呢 直接上代码 大家都懂的 ^&^//分享的标题 NSString *textToShare = @"请大家登录《iOS云端与网络通讯》服务网站。"...
  • Goods_boy
  • Goods_boy
  • 2017-05-04 22:47
  • 5062

UIActivityViewController及其自定义

UIActivityViewController 是iOS很早就推出的一个分享控制器。集成了一些和系统服务进行交互的接口。 先通过它的构造方法来慢慢了解它的内部结构: - (instancetype)initWithActivityItems:(NSArray *)activityItems a...
  • u013749108
  • u013749108
  • 2016-11-11 22:13
  • 560

iOS-微信分享多张图片(UIActivityViewController多图分享和多图分享失败)

前言 微信分享到朋友圈,可分享的类型有:文字类型、图片类型、音乐类型、视频类型和网页类型,但是我们在做图片分享的时候发现微信给的API只能分享一张图片,达不到一些APP的需求,而产品汪或者Boss想要分享多张图片,比如前段时间我做的一个APP,是电商类APP,想把商品的图片都分享到朋友圈,查看微信的...
  • u014220518
  • u014220518
  • 2016-12-05 15:28
  • 7607

UIActivityViewController简单使用

UIActivityViewController是iOS 6后,苹果用来替换actionsheet的新的kon
  • Mamong
  • Mamong
  • 2014-05-03 20:07
  • 19559

iOS 6分享列表——UIActivityViewController详解

在iOS 6之后提供了一个分享列表视图,它通过UIActivityViewController管理。苹果设计它主要的目的是替换分享动作选单(ActionSheet),分享动作选单是出于分享目的的动作选单。通过动作选单上的选择按钮,可以把图片分享给别人。但是随着iOS功能的不断增加,需要分享...
  • tonny_guan
  • tonny_guan
  • 2013-05-08 11:14
  • 13206

使用UIActivityViewController展现自定义分享选项

问题 如何让自己开发的App出现在UIActivityViewController的分享选项中?比如,有一个文字编辑App,当你点击分享按钮的时候,ActivityViewController中能够呈现一个文本归档Archive的分享选项。当用户点击Archive按钮的时候,编辑区域的文字就能够存储...
  • u011417590
  • u011417590
  • 2015-11-09 10:23
  • 1741

研究 UIActivityViewController

本文由@nixzhu翻译至nshipster的《UIActivityViewController》 数据与代码的关系一直都让人好奇。   特定的编程语言,如 Lisp、lo 和 Mathematica 都是同像性的(homoicon...
  • chengkaizone
  • chengkaizone
  • 2015-11-18 11:52
  • 540

iOS --- 使用UIActivityViewController实现分享功能

UIActivityViewController是iOS自带的分享功能的控制器,包含AirDrop,Copy,Message,Email等功能。开发者可以通过该视图控制器自定义分享功能。当然,部分分享功能直接采用友盟或shareSDK也可以。UIActivity一个UIActivity代表一个分享的...
  • icetime17
  • icetime17
  • 2015-11-09 20:37
  • 2622

UIActivityViewController使用

苹果从iOS6开始,提供了一个活动列表视图,为分享和操作数据提供了一个统一的服务接口,通过UIActivityViewController来控制它的呈现和关闭,凡是继承UIActivity抽象类的子类对象都可以放在列表中呈现出来。如下图所示: 活动列表 通过下面代码,就可以调出视...
  • qq_34047841
  • qq_34047841
  • 2017-04-25 10:02
  • 222

iOS6新特征:UIActivityViewController使用示例

DEMO 1、运行示例程序,会看到如下画面 2、点击测试按钮,会看到如下画面,以模态的方式,展现出指定的服务。可以看到,mail图标没有,这是模拟器的一个bug。其中我们可以看到有Twitter,Facebook,新浪微博等服务。这里显示的内容会根据你指定的对象来进行限定...
  • eqera
  • eqera
  • 2012-11-01 08:44
  • 12350
    博客专栏
    个人资料
    • 访问:212028次
    • 积分:3470
    • 等级:
    • 排名:第11426名
    • 原创:127篇
    • 转载:6篇
    • 译文:1篇
    • 评论:96条
    最新评论