• 在iOS6.0之后,系统也提供了API实现分享功能,目前支持的分享途径参照UIActivityType
  • 部分分享途径,需要登录对应的账号。例如,通过腾讯微博实现分享,需要登录腾讯微博账号。
  • 如果需要保存到系统相册,需要设置对应的隐私权限。
<key>NSPhotoLibraryUsageDescription</key><string>打开相册</string>
  • 由于系统默认的是英文显示,如果需要显示中文,则需要修改对应的布尔值。
<key>CFBundleAllowMixedLocalizations</key><true/>

UIActivityViewController

  • 1、导入框架Social.framework
  • 2、 设置分享的内容,并将内容添加到数组中
NSString *shareText = @"我的个人博客";UIImage *shareImage = [UIImage imageNamed:@"shareImage.png"];NSURL *shareUrl = [NSURL URLWithString:@"http://blog.csdn.net/flyingkuikui"];NSArray *activityItemsArray = @[shareText,shareImage,shareUrl];// 自定义的CustomActivity,继承自UIActivity
CustomActivity *customActivity = [[CustomActivity alloc]initWithTitle:@"wangsk" ActivityImage:[UIImage imageNamed:@"custom.png"] URL:[NSURL URLWithString:@"http://blog.csdn.net/flyingkuikui"] ActivityType:@"Custom" ShareContext:activityItemsArray];
NSArray *activityArray = @[customActivity];
  • 3、初始化控制器,添加分享内容至控制器
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItemsArray applicationActivities:activityArray];
activityVC.modalInPopover = YES;
  • 4、设置回调
if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {// ios8.0 之后用此方法回调UIActivityViewControllerCompletionWithItemsHandler itemsBlock = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){NSLog(@"activityType == %@",activityType);if (completed == YES) {NSLog(@"completed");}else{NSLog(@"cancel");}};activityVC.completionWithItemsHandler = itemsBlock;}else{// ios8.0 之前用此方法回调UIActivityViewControllerCompletionHandler handlerBlock = ^(UIActivityType __nullable activityType, BOOL completed){NSLog(@"activityType == %@",activityType);if (completed == YES) {NSLog(@"completed");}else{NSLog(@"cancel");}};activityVC.completionHandler = handlerBlock;}
  • 5、调用控制器
[self presentViewController:activityVC animated:YES completion:nil];
  • 6、运行结果,如图,其中红色圆圈部分就是自定义的CustomActivity

支持的分享类型和途径

  • 截止iOS10.3.3,系统分享功能支持的分享途径。
// UIActivityType// 发布到Facebook
UIActivityTypePostToFacebook     NS_AVAILABLE_IOS(6_0);
// 发布到Twitter
UIActivityTypePostToTwitter      NS_AVAILABLE_IOS(6_0);
// 发布到新浪微博
UIActivityTypePostToWeibo        NS_AVAILABLE_IOS(6_0);
// 信息
UIActivityTypeMessage            NS_AVAILABLE_IOS(6_0);
// 邮件
UIActivityTypeMail               NS_AVAILABLE_IOS(6_0);
// 打印
UIActivityTypePrint              NS_AVAILABLE_IOS(6_0);
// 复制到剪切板
UIActivityTypeCopyToPasteboard   NS_AVAILABLE_IOS(6_0);
// 指定给联系人
UIActivityTypeAssignToContact    NS_AVAILABLE_IOS(6_0);
// 保存至本地相册(记得修改info.plist的隐私权限)
UIActivityTypeSaveToCameraRoll   NS_AVAILABLE_IOS(6_0);
// 添加到阅读列表(Safari)
UIActivityTypeAddToReadingList   NS_AVAILABLE_IOS(7_0);
// 发布到Flickr(图片分享网站)
UIActivityTypePostToFlickr       NS_AVAILABLE_IOS(7_0);
// 发布到Vimeo(视频分享网站)
UIActivityTypePostToVimeo        NS_AVAILABLE_IOS(7_0);
// 发布到腾讯微博
UIActivityTypePostToTencentWeibo NS_AVAILABLE_IOS(7_0);
// AirDrop
UIActivityTypeAirDrop            NS_AVAILABLE_IOS(7_0);
// 在iBooks内打开
UIActivityTypeOpenInIBooks       NS_AVAILABLE_IOS(9_0);

代码地址:
https://github.com/FlyingKuiKui/ShareTest.git

iOS_系统原生分享相关推荐

  1. UIActivityViewController实现系统原生分享

    代码地址如下: http://www.demodashi.com/demo/11042.html 一.效果预览 二.接下来介绍UIActivityViewController,跟我动手做 1.创建要分 ...

  2. Android调用系统原生分享组件

    想必做Android开发都会遇到的需求--分享. 实现需求和方式也都各自不一,有接入某个app的SDK进行分享,也有集成第三方平台例如友盟等等... 接下来所要说到的是Android系统提供的分享组件 ...

  3. 利用 Android 系统原生 API 实现分享功能

    对于 App 的分享功能,基本上是一个刚需,本文主要介绍运用系统原生分享功能时候需要注意的一些问题.对于某些特定平台的一些高级分享特性,比如微信或者微博之类的分享来源标注,需要在其开放平台注册应用再接 ...

  4. 【安卓开发】调用系统原生的文件分享功能将文件分享给QQ或微信好友

    调用系统原生的文件分享功能将文件分享给QQ或微信好友 核心代码: //传入的fileName是文件名的全路径@SuppressLint("QueryPermissionsNeeded&quo ...

  5. android原生分享功能,Android原生分享到微博、微信等平台的实现方式

    在这个版本功能涉及到Android分享方式的变更,需求要求: 分享只支持新浪微博.微信,其他方式均去掉. 为了更好的测试还是要看下Android分享实现分享的方式,然后才能更好地评估测试时间和设计测试 ...

  6. Android原生分享图片和视频

    前言 由于之前的分享的平台都是固定的:微信,微信朋友圈,QQ,微博- 分享的做法就是,用列表分别显示各个平台,然后点击某个选项跳转到对应平台 代码如下: private void share(File ...

  7. Android 调用系统的分享[完美实现同一时候分享图片和文字]

    android 系统的分享功能 private void share(String content, Uri uri){Intent shareIntent = new Intent(Intent.A ...

  8. Unity实现IOS原生分享

    一开始我以为接入ShareSDK去实现分享功能,没想到要实现IOS的原生分享去实现这个功能.本人对OC一点都不熟悉,一脸蒙蔽.然后我开始在网上去找资料,发现一篇Unity实现IOS的截屏分享功能,然后 ...

  9. 荣耀笔记本开机黑屏错误怎么U盘重装系统教学分享

    荣耀笔记本开机黑屏错误怎么U盘重装系统教学分享.不少用户都有在使用电脑的时候遇到系统的故障,而遇到开机黑屏问题的时候,更多用户会请人来维修.其实没有这么麻烦,我们只需要准备一个U盘来进行系统的重新安装 ...

最新文章

  1. Vue.js 学习路线
  2. linux 脚本案例,30个关于Shell脚本的经典案例(上)
  3. 完美搞定《DOCKER IN ACTION》第二章示例
  4. 「禾连健康」轻松实现弹性降本20%以上,竟然是因为使用了它!
  5. 2017-9-15-Linux移植:WinSCP软件 SSH Server开启
  6. win10安装ipython_windows10下安装IPython notebook 用来查看.ipynb文档
  7. Java web之web.xml配置详解
  8. LeetCode 题 -7. 整数反转
  9. 使用 Swiftype 给 Hexo 搭建的博客添加站内搜索功能
  10. Hadoop3.3.1详细教程(四)Linux集群搭建+免密登录
  11. Struts2 通配符使用
  12. Python爬取疫情中高风险地区名单
  13. pyecharts本地文件_pyecharts 模块的简单使用(可视化神器)
  14. 在 Vue 中使用lodash对事件进行防抖和节流
  15. 订单可视化2实战-生产交付流程(流程再造核心区)
  16. LIKE视频网站无法登录服务器,解析视频地址失败,更换服务器也不行
  17. Win10系统“此电脑”误删了,或者无缘无故消失了,怎么找回?
  18. php如何看出是什么框架,拿到一个php源码怎么分析它用的是什么框架?
  19. 痞子衡嵌入式:ARM Cortex-M内核那些事(5)- 一表搜罗指令集
  20. Cadence LDO capless 电路,包括版图,已通过lvs ,drc检查,个人流片过,包括偏置全电路

热门文章

  1. Dapper入门教程
  2. linux安装rtl8812au驱动
  3. 无人机服务器通信协议软件设计,无人机飞行管控系统及其数据处理软件设计
  4. Threes.js入门篇之7 - 场景光照
  5. netty零拷贝之CompositeByteBuf
  6. 计算机CMOS设置详解
  7. 串口服务器单芯片 物联网网关芯片
  8. 《数文明》阅读笔记-无匿名的追踪:天网的隐喻
  9. NUMBER长度的误解
  10. 【基于腾讯云的远程机械臂小车】