美文网首页
iOS开发 实现原生分享 可以跳过选择面板,分享多个文件

iOS开发 实现原生分享 可以跳过选择面板,分享多个文件

作者: Dylan大魔王 | 来源:发表于2017-07-27 11:33 被阅读0次

github demo 下载地址,有问题请评论或者在git上提交问题-> (别忘了给老弟个star)

1.TSShareHelper 功能

iOS的原生分享功能是项目中的常用需求,但是之前一直是使用分享面板分享,这次找到了不走选择面板直接跳转到相关App的方法,这些方法封装成一个分享Helper.有待完善,放在GitHub上大家一起学习研究

2. 需求原因

  1. 首先,在项目中我们遇到了一些这样的需求:点击分享按钮,直接进入微信.qq登的分享页面,要在app内打开一个列表.
  2. 并且要求多图分享

这样做的好处就是不用集成太多的SDK和什么AppKey.只要调用系统的分享就可以了.

但是问题来了,调用系统的分享是要跳出分享面板的

有分享面板的分享有分享面板的分享

这显然不符合我们的需求

使用面板是这样分享的

    UIActivityViewController * activityCtl = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil];
    [controller presentViewController:activityCtl animated:YES completion:nil];

3. 怎么跳过分享面板

  1. 这个时候,我们通过遍历属性发现了一个私有类SLComposeViewController

    通过这个类,结合跳转对应的ServiceType 可以跳过分享面板,直接分享

    SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:serviceType];
    [composeVC addImage:(UIImage *)obj];
    [controller presentViewController:composeVC animated:YES completion:nil];
有分享面板的分享有分享面板的分享

但是还是有问题,就是没有安装app会崩溃掉.
所以加了个@try,如果崩了就捕捉到,表示没有安装

4. 主要解决了两个问题

  1. 使用原生进行分享,可以不选择类型
  2. 分享多图的问题
  3. 这里使用了两个类
UIActivityViewController.h   来弹出分享面板
SLComposeViewController.h 来跳过分享面板直接分享

github demo 下载地址,有问题请评论或者在git上提交问题->

注意: 具体实现请读readme
注意: 分享的内容如果是其他内容,可以使用url来初始化

相关文章

网友评论

      本文标题:iOS开发 实现原生分享 可以跳过选择面板,分享多个文件

      本文链接:https://www.haomeiwen.com/subject/gxkzkxtx.html