美文网首页
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