前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS 系统分享 -------- Share Extension

iOS 系统分享 -------- Share Extension

作者头像
编程那点事
发布2023-02-25 15:01:19
1.7K0
发布2023-02-25 15:01:19
举报
文章被收录于专栏:java编程那点事

前段时间,项目要求把系统相册的照片分享到应用中,后来看了下iOS8的新特性Extension的分享功能,虽然网上有很多说明的文章,但在实际开发过层中仍然遇到很多坑,金总结下,一来方便他人,二来留着备忘。

先看实现效果图

第一步点击系统相册分享按钮

第二步选择自己的应用

第三步弹出输入框

第四步输入内容

第五步点击发送

第六步发送完成、再给用户一个提示

接下来看如何实现

1.在自己的项目工程中添加Extension的分享扩展

添加扩展的过程

选择分享扩展

接下来一步一步点next即可。创建好扩展之后,项目中会多出一个子项目的,这就是分享的扩展。

2.分享扩展创建好之后,在该分享扩展中会有系统给我们自动生成的一个controller类ShareViewController,我们在viewDidLoad中做相应的数据处理,这里需要把上传服务器的数据处理好,还有些逻辑判断,比如用户是否登录,用户登录的令牌是否失效,用户是否有发布图片的功能等待。如何处理用户选择的照片数据,系统已经给我们提供来处理图片数据的方法

获取用户选择的照片信息

3.数据准备好来,接下来就向服务器发送图片数据。系统也为我们提供好来发送方法

点击发送按钮触发的方法

由此整个流层就走完了,但是还有个比较蛋疼的问题就是这个分享扩展不能直接获取主工程项目的数据 泪奔。

4.扩展项目获取主工程的数据。

App Groups。我们在主工程和分享扩展中要配置App Groups,通过该配置获取主工程的数据。App Groups怎么配置的就不在这里描述了。通过App Groups获取数据的方式也很简单,和平时用到的NSUserDefaults不同的地方就是创建的时候, NSUserDefaults*extension = [[NSUserDefaultsalloc]initWithSuiteName:@"group.xxx"]; 获取和设置数据都和平时的NSUserDefaults一样的。扩展程序是寄生在主工程中的,但又不能用主工程中的类库,自己用到什么类库就只能单独导入了。

5.扩展项目的配置

我们需要在扩展项目的info.list中配置我的分享扩展支持的分享类型,比如支持图片、视频、网友等等,也可以配置分享类型支持的分享数量。下图只是支持图片的分享数量

最后补充一点,分享扩展的版本号要和主工程的版本号保持一致。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档