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

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

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

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

下面先来说一说UIActivityViewController

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

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


iOS 苹果原生框架 分享 微信 QQ 微博_第1张图片
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
使用这个,必须要引入文件,这个是系统内部框架,调用的代码如下

iOS 11之后 框架已移除

 //判断设备是否有分享的相应的软件,可选的有微博、微信、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分享多个图片的时候 要注意要进行循环添加

贴一下图片,看一下分享效果
iOS 苹果原生框架 分享 微信 QQ 微博_第2张图片
5BF93A6D59A518C9E0FAD7CAEC8D38C8.png
iOS 苹果原生框架 分享 微信 QQ 微博_第3张图片
1E44A02A237654864FFB1181BA544DEB.png
iOS 苹果原生框架 分享 微信 QQ 微博_第4张图片
3497434954D39285F96A6074A2CD2608.png

这样就已经是分享完成了

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

SLComposeViewController *composeVc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];

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

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

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

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

你可能感兴趣的:(iOS 苹果原生框架 分享 微信 QQ 微博)