OneV's Den

上善若水,人淡如菊

嗨,我是王巍 (@onevcat),一名来自中国的 iOS / Unity 开发者。现居日本,就职于 LINE。正在修行,探求创意之源。


ObjC 中国与 objc.io 合作最新作品《函数式 Swift》,《Core Data》及《Swift 进阶》已经发布泊学网正在开展订阅赠书活动,也欢迎前往了解

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,为了以防之后别人或是自己可能遇到同样的问题,将更新的方法在此留底备忘。

  1. 导入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标记
  2. 加入MGTwitterEngine的JSON相关代码

    • MGTwitterEngine的页面down下该项目。当然如果有新版或者有别的branch可以用的话更省事儿,但是鉴于MGTwitterEngine现在的活跃度来说估计可能性不大,所以还是乖乖自己更新吧。
    • 解开下载的zip,用Xcode打开MGTwitterEngine.xcodeproj工程文件,将其中Twitter YAJL Parsers组下的所有文件copy到自己的项目中。
  3. 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
  4. 最后是在MGTwitterEngine设定为使用v1.1 API以及JSON方式请求

在MGTwitterEngine.m中,将对应代码修改为以下:

#define USE_LIBXML 0
#define TWITTER_DOMAIN @"api.twitter.com/1.1"

在MGbTwitader.h,启用YAJL

#define define YAJL_AVAILABLE 1

本文参考:

MGTwitterEngine issues 107

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

最近的文章

赴日半年的一些杂感

来日本已经足足有半年了,在这半年里见识了许多,也经历了许多。学生生涯的结束和职场生涯的开始,在这样的转变中积极投入到新的生活中去,大概也算是自己努力的一种方式。今天到公司很早,有机会整理一下这半年的一些体会和感想吧。关于日本其实日本对于中国和中国人来说,一直是个又爱又恨的国家。爱大抵是因为日本既有着无数的中国文化元素输入,同时又有着一大堆类似ACG的输出。前者拉近了中国与日本的距离,后者让世界有了解日本的窗口。而恨,基本都来源于七十多年前的那场战争。中国人的这种仇恨其实也并非与生俱来,而日...…

胡言乱语集继续阅读
更早的文章

Xcode 4 插件制作入门

本文欢迎转载,但烦请保留此行出处信息:http://www.onevcat.com/2013/02/xcode-plugin/2014.5.4更新对于 Xcode 5,本文有些地方显得过时了。Xcode 5 现在已经全面转向了 ARC,因此在插件初始化设置方面其实有所改变。另外由于一大批优秀插件的带动(可以参看文章底部链接),很多大神们逐渐加入了插件开发的行列,因此,一个简单的 Template 就显得很必要了。在 Github 上的这个 repo 里,包含了一个 Xcode 5 的插件的...…

能工巧匠集继续阅读