首先来说一下这个需求
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的使用。
网友评论