Evernote SDK for iOS の通信は同期通信
Evernote SDK for iOS はGitHub で公開されており、これを組み込めば比較的簡単にiOS向けEvernoteアプリの作成が可能です。
ただし、このSDKの通信は同期通信になっており、1件のノートをアップロードすると、その処理が終わるまで次の通信ができません。
つまり、連続してノートをアップロードしたい場合などに困るのです。
そこで、非同期通信。
投げた処理の返りを待つ間に別の処理を走らせることが可能な通信が必要になります。
THTTPAsyncClient を使えば簡単
で、その非同期通信ですが、自前で実装しようとすると、かなり大変です。
そこで、すんごい簡単なのが@fifnel さんがGitHub で公開してくれているTHTTPAsyncClient を使うこと。
仕組みや考え方は以下のページで。
THTTPClientに手を加えてiOSからEvernoteへ非同期でアクセスする | ふぃふメモ
実際のコードは以下のGitHub で公開されています。
RollToEver/RollToEver/Classes at master · fifnel/RollToEver · GitHub
実装はTHTTPClient をTHTTPAsyncClient に差し替えるだけ
THTTPAsyncClient はTHTTPClient のラッパークラスです。
なので、THTTPAsyncClient.h とTHTTPAsyncClient.m ファイルをプロジェクトに組み込んだ後、
evernote-sdk-ios 内の以下の部分を書き換えるだけで実装可能です。
Thrift.h の#import “THTTPClient.h” を#import “THTTPAsyncClient.h” に書き換え。
EvernoteSession.m 各所のTHTTPClient をTHTTPAsyncClient に書き換え。
これだけです。
でも、まだ万全じゃない
これで複数ノートの連続投稿も問題ないぜ!
とか、小躍りして喜んでいたのですが、どうもこれだけでは足りない様です。
調子が良いときは5分間に30件ぐらいノートを送信しても問題なく順次処理してくれるのですが、同じ条件でもダメな時は1件目のノートでアップロードに失敗してしまいます。
どうやら、まだ他に見落としているポイントが有るようです。
ですから、今回の記事はあくまで「Evernote SDK for iOS に非同期通信をさせる方法」です。
「ノートの連続投稿をスムーズに行う方法」は、また別途。
Anki/Janki メソッドでは、うまく行ったことだけカード化するのがルールですからな。