2015/05/10
Evernote Cloud SDK 2.0にアップデート
iOS, Evernote, Xcode動作環境:Xcode6
iOSアプリの64bit対応に伴い、古いEvernoteSDK(1.x SDK for iOS)のアップデート(マイグレーション)を実施することになりました。
- 旧SDK: Evernote SDK for iOS 1.x
- 新SDK: Evernote Cloud SDK 2.0
マイグレーション作業の大まかなガイダンスは、下記サイトにあります。
Migrating from Evernote SDK for iOS 1.x
まず最初に、新しいSDKの導入を行います。
CocoaPodsを使用する場合、手順はシンプルです。
プロジェクトのPodfileに以下を追記します。
pod 'evernote-cloud-sdk-ios'
続けて、コンソールから以下を実行します。
$ pod install
次に、コードの修正です。
EvernoteSDKを使用している各ソースファイルのヘッダー定義を、以下のように変更します。
//#import "EvernoteSDK.h"
#import <ENSDK/Advanced/ENSDKAdvanced.h>
AppDelegate内の記述を、以下のように変更します。
NSString *CONSUMER_KEY = @"xxxxxxxx";
NSString *CONSUMER_SECRET = @"xxxxxxxxx";
//[EvernoteSession setSharedSessionHost:EVERNOTE_HOST
// consumerKey:CONSUMER_KEY
// consumerSecret:CONSUMER_SECRET];
[ENSession setSharedSessionConsumerKey:CONSUMER_KEY
consumerSecret:CONSUMER_SECRET
optionalHost:nil];
Evernoteのホスト名の記載が不要となりました。SANDBOXに接続する場合はoptionalHostにEVERNOTE_SANDBOX_HOSTを指定します。
また、マイグレーションガイドにもありますが、以下の変更が必要です。
- EvernoteSession -> ENSession
- EvernoteNoteStore -> ENNoteStoreClient
但し、単純な名称変更だけでは正しく動作しませんので、マイグレーションガイドと同じページにあるGitHubのサンプルコードを参考にして変更を行いました。
以下、ケース別に対応後のコードを列挙します。
ex.) Evernoteログイン処理[[ENSession sharedSession] authenticateWithViewController:self preferRegistration:NO completion:^(NSError *authenticateError) {
if (!authenticateError) {
/* 認証OK */
} else if (authenticateError.code != ENErrorCodeCancelled) {
/* エラー処理(Cancelによる) */
} else {
/* エラー処理 */
}
}];
[[ENSession sharedSession] unauthenticate];
[[ENSession sharedSession].primaryNoteStore listNotebooksWithSuccess:^(NSArray *lnotebooks) { for (EDAMNotebook *lnotebook in lnotebooks) {
/* Notebook名(lnotebook.name)を取得 */
}
} failure:^(NSError *error) {
/* エラー処理 */
}];
[[ENSession sharedSession].primaryNoteStore listTagsWithSuccess:^(NSArray *tags) {
for (EDAMTag *tag in tags) {
/* Tag名(tag.name)を取得 */
}
} failure:^(NSError *error) {
/* エラー処理 */
}];
[[ENSession sharedSession].primaryNoteStore createNote:newNote success:^(EDAMNote *note) {
/* ノート作成OK */
} failure:^(NSError *error) {
/* エラー処理 */
}];
他の変更点として、NoteStoreの指定がprimaryNoteStoreになっています。(EvernoteBusinessの場合はbusinessNoteStore)