Tag: Evernote EvernoteAPI iPhoneSDK

目次

iPhone SDKから使う

evernote-sdk-iosを使用する

APIキーを取得する

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

SDKのダウンロード

サンプルの作成

  • ログイン、ログアウト、ノートの保存を実行するサンプルを作成する。
  • 新規プロジェクトで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を変更する。
    #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
Last-modified: 2016-04-13 (水) 16:47:53