因為寫了一個把文字轉為圖片的長微博工具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是當下還有未來最火的熱點之一。