美文网首页iOS点点滴滴iOS学习专题
iOS 苹果原生框架 分享 微信 QQ 微博

iOS 苹果原生框架 分享 微信 QQ 微博

作者: Booooooooom | 来源:发表于2017-11-24 17:34 被阅读181次

    首先来说一下这个需求
    1、可以分享图片、文字、链接
    2、要有分享界面
    3、分享出去后,在微信、qq聊天中不显示小尾巴

    且不说前面两点,光是最后一点就很纠结,一开始用的是shareSDK 分享,但是咨询之后,发现小尾巴无法去除,几经波折才找到了苹果原生的框架分享social.framework 仅仅需要框架Social,引入文件<Socail/Socail.h>就可以使用。而且最方便的是应用体积变小了,不用去申请相关平台的key,直接分享,十分方便。

    最主要的是 分享界面也已经写好的,如果没有什么特殊要求,直接用系统的就可以了,系统的分享一共可以使用两种:UIActivityViewController 和 SLComposeViewController

    下面先来说一说UIActivityViewController

    UIActivityViewController 的使用不需要引入socail.framework

    但是用这个会先有一个底部的弹框


    AE5C7D5F074C03CCBDAA1222177A861F.jpg

    后面的分享效果就和SLComposeViewController分享一样,大家可以往下翻
    类似于这种,必须选择之后才可以进行分享。这个底部弹框也可以自定义,这个我有空可以封装一下
    调用这个用的代码很简单
    activityItems 是图片数组,可以直接分享一组图片

    NSMutableArray* activityItems = [NSMutableArray array];
        UIActivityViewController
        *activityVC = [[UIActivityViewController
                        alloc]initWithActivityItems:activityItems applicationActivities:nil];
        // 下面是添加是否显示的类别
    //    activityVC.excludedActivityTypes = @[UIActivityTypePostToFacebook,UIActivityTypePostToTwitter,UIActivityTypeMessage,UIActivityTypeMail,UIActivityTypePrint,UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypeAddToReadingList,UIActivityTypePostToFlickr,UIActivityTypePostToVimeo,UIActivityTypePostToTencentWeibo, UIActivityTypeAirDrop,UIActivityTypeOpenInIBooks];
        [self presentViewController:activityVC animated:YES completion:nil];
    

    试一试就知道了,其实很简单的

    下面再说说SLComposeViewController
    使用这个,必须要引入文件<Socail/Socail.h>,这个是系统内部框架,调用的代码如下

    iOS 11之后 <Socail/Socail.h> 框架已移除

     //判断设备是否有分享的相应的软件,可选的有微博、微信、Twitter、Facebook
        if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
            NSLog(@"或者没有配置相关的帐号");
        }else {
            NSLog(@"已安装");
            
            SLComposeViewController *slComposerSheet=  [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
            
    //        [slComposerSheet setInitialText:@"分享到微信"];
            // 不能直接添加数组,需要多次添加
            [slComposerSheet addImage:[UIImage imageNamed:@"图片"]];
    //        [slComposerSheet addURL:[NSURL URLWithString:@"http://www.weibo.com/"]];
            
            [self presentViewController:slComposerSheet animated:YES completion:nil];
        }
    
    

    使用SLComposeViewController分享多个图片的时候 要注意要进行循环添加

    贴一下图片,看一下分享效果 5BF93A6D59A518C9E0FAD7CAEC8D38C8.png 1E44A02A237654864FFB1181BA544DEB.png 3497434954D39285F96A6074A2CD2608.png

    这样就已经是分享完成了

    注意:
    微信、qq分享时,因为原生框架没有加入这些,这里我们可以通过下面代码,通过打印出来的信息查看是否安装相关的软件

    SLComposeViewController *composeVc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
    

    直接看控制台的信息
    通用的字段判断,只需要把SLServiceTypeSinaWeibo 改成 下面这个字符串,就可以对应判断是否安装了相关软件

    qq com.tencent.mqq.ShareExtension
    微信 com.tencent.xin.sharetimeline

    这里是通过 iOS 的 ShareExtension机制,大家可以了解一下

    有什么不懂得,可以留言哦。代码较少,我就不贴具体的代码了
    其实代码一点都不难,但这个由于国内主流的分享一般是shareSDK或者是友盟,所以这些东西还是比较少有人知道的,尤其是SLComposeViewController的使用。

    相关文章

      网友评论

        本文标题:iOS 苹果原生框架 分享 微信 QQ 微博

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