« PreviousNext »

Entry

MGTwitterEngine Twitter API 1.1への対応方法

iOS準拠の「Twitter.framework」がある今となっては、ほとんど不要と思われますが、古いアプリの場合「MGTwitterEngine」でツイートを実装しているというケースもまだまだあるはず。とりあえずTwitter API 1.1に対応させたいというニーズもあるかと思い備忘録を兼ねて記録することにしました。

※たびたびの延期があったようですが、現時点の情報では2013年6月11日をもってTwitter API 1が廃止されることがアナウンスされています。
https://dev.twitter.com/blog/api-v1-retirement-date-extended-to-june-11

なお、このエントリーの情報は下記を参考にさせていただきました。私自身もとても参考になりました。この場をお借りしてお礼申し上げます。
http://iphone-app-developer.seesaa.net/article/306753070.html


1. YAJLiOS.frameworkをインポートする。

1-1. githubから、iOS向けのYAJLライブラリをダウンロードする。※2013年6月7日現在「YAJLiOS-0.3.1.zip - YAJL 0.3.1 for iOS 」
https://github.com/gabriel/yajl-objc/downloads


1-2. (1-1)を展開すると「YAJLiOS.framework」が現れるので、そのままターゲットプロジェクトの「Frameworks」にコピーする。
※古い「YAJL.framework」は不要なので参照元ごと削除

1-3. XcodeでBuild Settingsを開き、「Other Linker Flags」に「 -ObjC 」と「 -all_load 」を追加する。


2. MGTwitterEngineのJSON連携のライブラリをインポートする。

MGTwitterEngineをXMLでTwitterと連携させている場合、JSON関係のライブラリを削除して運用していることがあるので、改めてインポートする。

2-1. githubからMGTwitterEngineをダウンロードする。
https://github.com/mattgemmell/MGTwitterEngine

2-2. (2-1)の「MGTwitterEngine-master」を開く。下記は不要となるので除外した上で、以前使っていたファイルに上書きする。
AppController.h
AppController.m
English.lproj/
Info.plist
main.m
MGTwitterEngine.xcodeproj
README.txt
Source Code License.rtf
TODO


3. YAJLライブラリをインポートする。

3-1. githubからYAJLライブラリをダウンロードする。
https://github.com/thinglabs/yajl-objc

3-2. (3-1)のファイルから下記のヘッダファイルを探して「yajl」というフォルダに格納し、MGTwitterEngineを格納しているフォルダ内に追加。
yajl/NSObject+YAJL.h
yajl/yajl_common.h
yajl/yajl_gen.h
yajl/yajl_parse.h
yajl/YAJL.h
yajl/YAJLDocument.h
yajl/YAJLGen.h
yajl/YAJLParser.h

MGTwitterEngineを格納しているフォルダごと、ターゲットプロジェクトの「Frameworks」にコピーし直す。


4. MGTwitterEngineで、Twitter API 1.1を使用してJSON連携するための幾らかの修正

4-1. 「MGTwitterEngine.m」を以下のように修正
#define USE_LIBXML 0
#define TWITTER_DOMAIN @"api.twitter.com/1.1"

4-2. 「MGTwitterEngineGlobalHeader.h」を以下のように修正
#define YAJL_AVAILABLE 1

4-3. 「MGTwitterYAJLParser.h」でエラーが発生するが、以下のように修正したところ、問題なく動作した。
#include <yajl/yajl_parse.h>

#import "yajl/yajl_parse.h"

4-4. 「MGTwitterYAJLParser.m」で警告(semantic issue)が発生するので下記のように直してみたところ問題なく動作した。
- (id)initWithJSON:(NSData *)theJSON delegate:(NSObject *)theDelegate

- (id)initWithJSON:(NSData *)theJSON delegate:(__weak NSObject *)theDelegate

Page Top

« PreviousNext »