&tag(Evernote, EvernoteAPI, iPhoneSDK);
*目次 [#z25a40bd]
#contents

*iPhone SDKから使う [#d1340d2b]
-[[Evernote API and iPhone SDK Setup « Digital ¶ericope:http://digitalpericope.net/?p=1]]
-[[開発者のための Evernote 入門 - Evernote Developers:http://dev.evernote.com/intl/jp/documentation/]]

*evernote-sdk-iosを使用する [#ydc05f34]
**APIキーを取得する [#a5845c3c]
-[[クラウド API - Evernote Developers:http://dev.evernote.com/intl/jp/documentation/cloud/]]からAPIキーを取得する。
--自動処理らしい。ConsumerKeyとSecretが即時に表示されているのでメモ。
--この段階ではsandbox.evernote.comにしか書き込めない。通常サイトに書き込むにはAPIキーのアクティベーション(後述)が必要。
--OAuth以前にAPIキーを申請していた場合でも新たに申請しないとだめ。以前のキーはOAuthでは使用できない。
--APIの権限としてベーシックアクセスとフルアクセアスがあり、必要もないのにフルアクセスにすると蹴られるらしい。

**SDKのダウンロード [#l97f32c3]
-[[evernote/evernote-sdk-ios:https://github.com/evernote/evernote-sdk-ios]]からzipでダウンロードする。

**サンプルの作成 [#k62cfb7d]
-ログイン、ログアウト、ノートの保存を実行するサンプルを作成する。
-新規プロジェクトでMaster-DetailアプリケーションEvernoteDemoを作成。ARCはオフにしておくのが簡単(理由。SDKがARCに対応してないから)。
-プロジェクトを作成したら、zip内のevernote-sdk-iosフォルダをプロジェクトの下にコピーし、Add File Toでevernote-sdk-iosフォルダを指定し丸ごとプロジェクト内に取り込む。
-Security.frameworkを追加する。TARGETSでEvernoteDemoを選択、Build Phasesを選択、Link Binary With Librariesで+アイコンを押してSecurity.frameworkを追加。
-ソースファイルの変更。EvernoteDemoMasterViewController.mを変更する。
#pre{{
#define EVERNOTE_HOST   @"sandbox.evernote.com"
#define CONSUMER_KEY    @"XXXXX"   // Consumer key
#define CONSUMER_SECRET @"YYYYY"  // Consumer secret

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        }
    }
    NSString *text = nil;
    if (indexPath.row == 0) {
        text = @"OAuth認証でログイン";
    } else if (indexPath.row == 1) {
        text = @"ログアウト";
    } else if (indexPath.row == 2) {
        text = @"ノート書き込み";
    }
    cell.textLabel.text = text;
    return cell;
}

- (void)login
{
    [EvernoteSession setSharedSessionHost:EVERNOTE_HOST consumerKey:CONSUMER_KEY consumerSecret:CONSUMER_SECRET];
    EvernoteSession *session = [EvernoteSession sharedSession];
    [session authenticateWithViewController:self completionHandler:^(NSError *error) {
        if (error || !session.isAuthenticated) {
            NSLog(@"Error: Could not authenticate");
        } else {
            NSLog(@"Authenticated!");
        }
    }];
}

-(void)logout
{
    [[EvernoteSession sharedSession] logout];
}

-(void)createNote
{
    EDAMNote *note = [[[EDAMNote alloc] init] autorelease];;
    note.title = @"note.title";
    note.content = @"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">\n<en-note>note.content</en-note>";
    
    EvernoteNoteStore *noteStore = [EvernoteNoteStore noteStore];
    
    @try {
        [noteStore createNote:note success:^(EDAMNote *note) {} failure:^(NSError *error) {
            NSLog(@"Error: %@", error);
        }];
    }
    @catch (EDAMUserException *e) {
        return;
    }
    
    NSLog(@"Note was saved.");
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 0) {
        [self login];
    } else if (indexPath.row == 1) {
        [self logout];
    } else if (indexPath.row == 2) {
        [self createNote];
    }
}

}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS