天天看点

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/