因为写了一个把文字转为图片的长微博工具app,准备添加新功能,使其可以方便分享到新浪和twitter等社交网站,于是就看了下那些第三方库。
首先就是ShareKit. ShareKit刚开始感觉不错,但是因为是很久前写的,用了很多deprecated的methods,而且不是ARC的。追求大而全,所以感觉很臃肿,而且原作者不再开发了,其他人写的使用这个库的demo我下载下来不知怎么都有错,就算改了也是一堆warnings。
然后就是使用原厂的SDK,新浪要申请,手续繁琐,而且要单独去下载各家的SDK,很麻烦。
用apple自带的social.framework方便简单,但是必须要iOS6, 所以得放弃一部分未升级的用户,估计很多开发者不愿意。
不过不管怎样,这里简单介绍下如何通过其来分享内容。
( 通过这个demo可以直观的理解social.framework的使用流程:https://github.com/russj/ios6ShareDemo.git )
首先到target,Build Phases->link binary with libraries,添加social.framework,然后在要使用这个framework的文件头添加 #import <Social/Social.h>
- 记得要到iphone或者simulator里的setting->相关app账号(用户名,密码)设置好,不然找不到account,不能post。如果找不到新浪微博,把语言调到中文试试。如果没有预先设置好账号,social.framework在真机和simulator上表现会不同。比如没有预先设置好facebook账号,在真机上下面方法1中不会有facebook图标显示,但是在模拟器上会有图标,如果点击facebook的图标,会跳出提示需要设置facebook账号。其实就是在模拟器上,对于SLComposeViewControllerisAvailableForServiceType 所有service都是available的,但是在真机上必须的预先设置好才available
- 注意facebook和twitter,weibo取消行为不同。要把twitter,weibo的 setCompletionHandler 放到 presentViewController:slComposerSheet 的前面。不然需要点击两次才能推出twitter和weibo的发送sheet。
Social.Framework里有两种方法
1. 第一种 UIActivityViewController。这个是最简单的。
- (IBAction)shareByActivity:(id)sender {
NSArray *activityItems;
if (self.sharingImage != nil) {
activityItems = @[self.sharingText, self.sharingImage];
} else {
activityItems = @[self.sharingText];
}
UIActivityViewController *activityController =
[[UIActivityViewControlleralloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityController animated:YES completion:nil];
}
Yes, that's all. self.sharingText 和sharingImage就是要post的文字和图片了。效果见下面截图。短短几行代码你就得到8种分享途径。够简单了把。
2. 使用SLComposeViewController来分享到新浪微博。这个就相当于上面1里介绍的单个分享service。目前只有三种。新浪微博,facebook,twitter。微博力量大啊,估计以后还得加微信。
代码还是下载看吧,这里贴代码不好排版,好像也不能像其他论坛那样插入code。
总结:
这个估计是最简单的实现社交分享功能的方法了。不足之处就是覆盖不够广泛,还有必须使用iOS6. 但是估计随着时间的推移,apple会丰富完善这个social.framework, 毕竟SNS是当下还有未来最火的热点之一。