前段時(shí)間艾杏,項(xiàng)目要求把系統(tǒng)相冊(cè)的照片分享到應(yīng)用中凉唐,后來看了下iOS8的新特性Extension的分享功能碌冶,雖然網(wǎng)上有很多說明的文章湿痢,但在實(shí)際開發(fā)過層中仍然遇到很多坑,金總結(jié)下扑庞,一來方便他人蒙袍,二來留著備忘俊卤。
先看實(shí)現(xiàn)效果圖
接下來看如何實(shí)現(xiàn)
1.在自己的項(xiàng)目工程中添加Extension的分享擴(kuò)展
接下來一步一步點(diǎn)next即可害幅。創(chuàng)建好擴(kuò)展之后消恍,項(xiàng)目中會(huì)多出一個(gè)子項(xiàng)目的,這就是分享的擴(kuò)展以现。
2.分享擴(kuò)展創(chuàng)建好之后狠怨,在該分享擴(kuò)展中會(huì)有系統(tǒng)給我們自動(dòng)生成的一個(gè)controller類ShareViewController,我們?cè)趘iewDidLoad中做相應(yīng)的數(shù)據(jù)處理邑遏,這里需要把上傳服務(wù)器的數(shù)據(jù)處理好佣赖,還有些邏輯判斷,比如用戶是否登錄记盒,用戶登錄的令牌是否失效,用戶是否有發(fā)布圖片的功能等待纪吮。如何處理用戶選擇的照片數(shù)據(jù)俩檬,系統(tǒng)已經(jīng)給我們提供來處理圖片數(shù)據(jù)的方法
3.數(shù)據(jù)準(zhǔn)備好來,接下來就向服務(wù)器發(fā)送圖片數(shù)據(jù)碾盟。系統(tǒng)也為我們提供好來發(fā)送方法
由此整個(gè)流層就走完了,但是還有個(gè)比較蛋疼的問題就是這個(gè)分享擴(kuò)展不能直接獲取主工程項(xiàng)目的數(shù)據(jù) 淚奔联逻。
4.擴(kuò)展項(xiàng)目獲取主工程的數(shù)據(jù)遣妥。
App Groups攀细。我們?cè)谥鞴こ毯头窒頂U(kuò)展中要配置App Groups谭贪,通過該配置獲取主工程的數(shù)據(jù)俭识。App Groups怎么配置的就不在這里描述了缚态。通過App Groups獲取數(shù)據(jù)的方式也很簡單浆熔,和平時(shí)用到的NSUserDefaults不同的地方就是創(chuàng)建的時(shí)候, NSUserDefaults*extension = [[NSUserDefaultsalloc]initWithSuiteName:@"group.xxx"]; 獲取和設(shè)置數(shù)據(jù)都和平時(shí)的NSUserDefaults一樣的叶骨。擴(kuò)展程序是寄生在主工程中的祈匙,但又不能用主工程中的類庫跪帝,自己用到什么類庫就只能單獨(dú)導(dǎo)入了万细。
5.擴(kuò)展項(xiàng)目的配置
我們需要在擴(kuò)展項(xiàng)目的info.list中配置我的分享擴(kuò)展支持的分享類型腰素,比如支持圖片、視頻洋访、網(wǎng)友等等姻政,也可以配置分享類型支持的分享數(shù)量汁展。下圖只是支持圖片的分享數(shù)量
最后補(bǔ)充一點(diǎn),分享擴(kuò)展的版本號(hào)要和主工程的版本號(hào)保持一致。