天天看點

MGTwitterEngine中Twitter API 1.1的使用

在ios5中使用twitter framework或者在ios6中使用social framework來完成twitter的內建是非常簡單和輕松的,但是如果應用要針對ios5之前的系統版本,那麼就不能使用ios提供的架構了。一個比較常見也是使用最廣泛的選擇是mgtwitterengine,比如pomodorodo選擇使用的就是該架構。

但是今天在對pomodorodo作更新的時候,發現twitter的分享無法使用了,在查閱twitter文檔說明之後,發現這是twitter采用了新版api的原因。預設狀況下mgtwitterengine采用的是v1版的api,并且使用xml的版本進行請求,而在1.1中,将隻有json方式的api可以使用。v1.0版本的api已經于2013年3月5日被完全廢棄,是以想要繼續使用mgtwitterengine來适配ios5之前的twitter內建需求,就需要将mgtwitterengine的請求改為json方式。mgtwitterengine也考慮到了這一點,但是因為時間比較古老了,mgtwitterengine使用了yajl來作為json的wrapper,是以還需要将yajl內建進來。下午的時候嘗試了一會兒,成功地讓mgtwitterengine用上了1.1的twitter api,為了以防之後别人或是自己可能遇到同樣的問題,将更新的方法在此留底備忘。

導入yajl framework

yajl的oc實作,從該位址下載下傳該架構。(2013年3月24日的最新版本為yajl 0.3.1 for ios)

解壓下載下傳得到的zip,将解壓後的yajlios.framework加入項目工程

在xcode的build setting裡在other linker flags中添加-objc和-all_load标記

加入mgtwitterengine的json相關代碼

從mgtwitterengine的頁面down下該項目。當然如果有新版或者有别的branch可以用的話更省事兒,但是鑒于mgtwitterengine現在的活躍度來說估計可能性不大,是以還是乖乖自己更新吧。

解開下載下傳的zip,用xcode打開mgtwitterengine.xcodeproj工程檔案,将其中twitter yajl parsers組下的所有檔案copy到自己的項目中。

yajl頭檔案內建

接下來是c和oc接口頭檔案的導入,從下面下載下傳yajl庫:https://github.com/thinglabs/yajl-objc

在下載下傳得到的檔案夾中,尋找并将以下h檔案拷貝到自己的工程中:

yajl_common.h

yajl_gen.h

yajl_parse.h

nsobject+yajl.h

yajl.h

yajldocument.h

yajlgen.h

yajlparser.h

最後是在mgtwitterengine設定為使用v1.1 api以及json方式請求

在mgtwitterengine.m中,将對應代碼修改為以下:

在mgbtwitader.h,啟用yajl

本文參考:

mgtwitterengine issues 107

http://damienh.org/2009/06/20/setting-up-mgtwitterengine-with-yajl-106-for-iphone-development/

轉載自:https://onevcat.com/