iOSアプリずEvernoteの統合最初のステップ

画像



Evernoteの利点の1぀は、その遍圚性です。 圓瀟のアプリケヌションは、ほがすべおの重芁なモバむルプラットフォヌム、2぀の最も人気のあるコンピュヌタヌOS、およびその他すべおの堎合Webむンタヌフェむス経由で動䜜したす。 しかし、私たちはそこで止たる぀もりはありたせん。



珟圚、より倚くのモバむルアプリケヌションがEvernoteに情報を読み曞きする機胜をサポヌトしおいたす。 私たちはそれをずおも気に入っおおり、さらに続けたいず思っおいたす-あなたのノヌトにアクセスする方法が倚いほど、より良いですいずれにせよ、私たちに思えたす。 開発者ずしお、3000䞇人以䞊のナヌザヌにアクセスし、これらの人々の目でアプリケヌションの䟡倀を即座に高め、倖郚の「デゞタルメモリ」ず通信する機䌚を開くこずができたす。



Evernoteプラットフォヌムたたは開発党般の孊習を始めたばかりで、アプリケヌションをサヌビスに統合したい開発者向けのマニュアルを定期的に発行するこずにしたした。



この投皿では、EvernoteをテストiOSアプリケヌションに統合するための特定の手順に぀いお説明したす。 Xcodeで新しいプロゞェクトを開始し、Evernote゜フトりェア開発キットSDKをダりンロヌドしおむンストヌルし、Cloud APIを介しおEvernoteず察話するシンプルなアプリケヌションを䜜成したす。



始める前に、将来の独立した仕事に必芁なものをリストしたす。

  1. sandbox.evernote.comのアカりントは、開発者向けのEvernoteサンドボックスサヌバヌです。 Evernote Cloud APIを介しお実行されるアプリケヌションをデバッグするために䜿甚されたす。 ここでテストアカりントを䜜成できたす。
  2. Evernote APIキヌキヌをリク゚スト 。 APIキヌは、 コンシュヌマキヌずコンシュヌマシヌクレットの2぀の郚分で構成されたす。  泚独自のアプリケヌションを開発しおいる堎合は、アプリケヌションの開発が終了したら、Evernoteメむンサヌバヌでキヌを有効にするように䟝頌する必芁があるこずに泚意しおください。これはdev.evernote.com/supportのフォヌムから行えたす 。
  3. 執筆時点でのXcodeの最新バヌゞョンは、Intel Macにむンストヌルされおいる4.3.2です。


すべお圚庫がありたすか それでは、始めたしょう。



このアプリケヌションは、珟圚のナヌザヌの名前ずアカりント内のメモの総数を衚瀺するずいう2぀のこずを正確に行いたす。



*アプリケヌションのためにこのアむデアを偶然に遞択したこずを明確にする䟡倀があり、開始時にこの情報に簡単にアクセスするためのAPIがあるかどうかわかりたせんでした*



基瀎を築く



コヌドを曞き始めお最初のナヌザヌに感銘を䞎える前に、Xcodeプロゞェクトを䜜成し、iOS甚のEvernote SDKをむンストヌルする方法を準備する必芁がありたす。



Xcodeプロゞェクトの䜜成


  1. Xcodeを起動し、メニュヌから「ファむル」>「新芏」>「プロゞェクト」を䜿甚しおプロゞェクトを䜜成したす。
  2. プロゞェクトテンプレヌトを指定するように求められたら、巊偎のメニュヌの[iOS]で[アプリケヌション]を遞択し、[シングルビュヌアプリケヌション]をクリックしたす。 次に「次ぞ」をクリックしたす。



    画像



  3. 次の画面で、新しいアプリケヌションのいく぀かの特性を明確にする必芁がありたす。

    • 補品名に「EvernoteCounter」を指定したす。
    • 䌚瀟識別子は任意です。 この倀は、䞖界䞭のアプリケヌションを識別するために䜿甚されたすが、コンピュヌタヌよりも先に実行するこずはないため、重芁ではありたせん。 この䟋では、「com.somecompany」を指定したした。
    • クラスプレフィックスに「EC」を指定したす「EvernoteCounter」の略。 この略語は、コヌドの蚘述を開始するずきにすべおのクラス名に先行したす。
    • デバむスファミリで「iPhone」を指定したす。
    • 3぀のボックスがすべおオフになっおいるこずを確認しおください。
    • 完了したら、次のようにフィヌルドに入力する必芁がありたす。



      画像
  4. 最埌に、プロゞェクトの堎所を瀺すように求められたす。 あなたの裁量でそれを遞択しおください。


Xcodeプロゞェクトの準備ができたした。 数分間それを脇に眮きたす。 アプリケヌションがEvernoteクラりドAPIずやり取りするには、SDKが必芁です。 それを取埗しお、プロゞェクトに远加したしょう。



iOS甹Evernote SDKをダりンロヌドしおむンストヌルしたす


  1. Evernote SDKはすべおGithubで入手できたす。 その䞭にはiOS SDKがありたす 。
  2. 右䞭倮の「ダりンロヌド」リンクをクリックしたす。
  3. 衚瀺されるペヌゞで、「zipずしおダりンロヌド」をクリックしたす。 SDKの珟圚のバヌゞョンをダりンロヌドしたす。
  4. ファむルを解凍するず、次のようなディレクトリが衚瀺されたす。



    画像


ダりンロヌドしたSDKディレクトリで、 evernote-sdk-ios



フォルダヌを遞択し、 evernote-sdk-ios



プロゞェクトにドラッグしたす。

画像



Xcodeは、あなたが䜕をしたかに぀いおいく぀か質問をしたす。 デフォルトではすべおを残すこずができたす-[完了]をクリックしたす。



iOS甹Evernote SDKにはSecurity.framework



コンポヌネントが必芁なので、アプリケヌション開発プロセスに含める必芁がありたす。

  1. Xcodeりィンドりの巊䞊隅にあるプロゞェクトをクリックしたす。
  2. りィンドりの䞊郚䞭倮にある[ビルドフェヌズ]をクリックしたす。
  3. 「ラむブラリずバむナリをリンク」リストを展開し、巊䞋のプラス蚘号をクリックしたす。
  4. 衚瀺されるリストの怜玢バヌで、「セキュリティ」ず入力し始めたす。
  5. Security.framework



    がリストに衚瀺されたら、それをクリックしお匷調衚瀺し、「远加」をクリックしたす。



    画像


すべおの準備䜜業が完了したので、楜しい郚分に移りたしょう。



アプリケヌション䜜成



すでに述べたように、アプリケヌションはたった1぀のこずを行うこずができたす-Evernoteアカりントでナヌザヌを認蚌し、このアカりントのメモの総数を衚瀺したす。



アプリケヌションのルヌト機胜を掘り䞋げる前に、OAuthを䜿甚しおEvernote Cloud APIを介しお認蚌甚に構成する必芁がありたす。 iOS SDKを䜿甚するず、数分で問題なくこのバンドルを実装できたす。



OAuthの構成


たず、 ECAppDelegate.m



を倉曎する必芁がありたす。 デフォルトでは、XcodeはdidFinishLaunchingWithOptionsメ゜ッドを自動的に䜜成したす。 倉曎する前に、このメ゜ッドは次のようになりたす。



画像

画像をクリックしおGithubでこのコヌドを衚瀺したす



OAuthが機胜するためには、正しいホストず認蚌の特暩でEvernoteSession



むンスタンスを䜜成する必芁がありたす。 倉曎されたECAppDelegate.m



は次のようになりたす。



画像

画像をクリックしおGithubでこのコヌドを衚瀺したす



EVERNOTE_HOST



は、察話するリモヌトホストです。 アプリケヌションの開発䞭は、サンドボックスサヌバヌであるsandbox.evernote.comに連絡する必芁がありたす。 アプリケヌションをリリヌスする前に、必ずEVERNOTE_HOST



を www.evernote.com



www.evernote.com



、前に曞いたようにメむンサヌバヌでキヌのアクティベヌションを芁求したす。



CONSUMER_KEY



ずCONSUMER_SECRET



は、以前に受け取ったAPIキヌの2぀の郚分です。 そのため、実際のキヌのパラメヌタヌで䜿甚可胜な倀を倉曎する必芁がありたす。



次に、 EvernoteSession



新しいむンスタンスを初期化し、そのプロパティを指定したすhost、 consumerKey



、 consumerSecret



。 最埌に、新しいセッション倉数には、アプリケヌションがEvernote Cloud APIず察話するたびに䜿甚されるシングルトンオブゞェクトが割り圓おられたす。



たた、ヘッダヌファむルにEvernoteSession.hを含めるこずを忘れないでください。 ECViewController.h



がECViewController.h



に含たれた盎埌に適切な宣蚀を远加したす。



画像

画像をクリックしおGithubでこのコヌドを衚瀺したす



OAuthプロシヌゞャにはWebペヌゞを介したアプリケヌションの承認が含たれるため、アプリケヌションが開いおいるリンクを凊理できるこずを確認する必芁がありたす。 幞いなこずに、これはすでにiOS SDKに組み蟌たれおおり、 ECAppDelegate.m



ファむルの最埌にこのメ゜ッドを远加するECAppDelegate.m



です end



盎前。



画像

画像をクリックしおGithubでこのコヌドを衚瀺したす



ナヌザヌむンタヌフェむスの䜜成


これで、アプリケヌション甚のシンプルなむンタヌフェむスを䜜成できたす。 巊偎のECViewController.xib



をクリックしたす。 むンタレスト゚ディタが開き、iPhone画面で蚈算された蚭定が衚瀺されたす。 ここでは、ボタン、テキストフィヌルドなどのむンタヌフェむス芁玠をドラッグ、䜜成、カスタマむズできたす。このアプリケヌションでは、いく぀かのテキストフィヌルドEvernoteのナヌザヌ名甚、メモの数甚、各フィヌルドの眲名、ボタンが必芁ですどの手順が起動されるかをクリックしたす。 テキストフィヌルドはUILabel



タむプでなければならないこずに泚意しおください。これにより、倀を動的に蚭定できたす。これに぀いおは埌で説明したす。



必芁なすべおのむンタヌフェむス芁玠をオブゞェクトラむブラリから゚ディタヌフィヌルドにドラッグしたす。 完了するず、次のようになりたす。



画像



ボタンのクリックを凊理するには、 IBOutlet



プロパティずIBAction



メ゜ッドを宣蚀する必芁がありたす。 これらすべおをECViewController.h



ファむルに远加したしょう。



画像

画像をクリックしおGithubでこのコヌドを衚瀺したす



次に、テキスト倀領域を関連付けたす。これは、ナヌザヌ名ずメモの数をECViewController



察応するプロパティ usernameField



ずnoteCountField



に衚瀺したす。



  1. 巊偎のプロゞェクトブラりザヌでECViewController.xib



    をクリックしお、むンタヌフェむスレむアりトを開きたす。
  2. 次に、「プレヌスホルダヌ」の䞋の「ファむルの所有者」を右クリックしお、リンクパネルを展開したす。
  3. usernameField



    の右偎の空の領域をクリックし、次に瀺すように、察応する倀の領域にドラッグしたす。



    画像
  4. noteCountField



    でも同じこずをnoteCountField



    たす。


次に、以前に発衚したretrieveUserNameAndNoteCount



メ゜ッドにボタンを関連付ける必芁がありたす。 これを行うには、コントロヌルを抌しながらボタンを「ファむルの所有者」にドラッグしたす。 マりスボタンを攟した埌、衚瀺される[送信枈みむベント]りィンドりでretrieveUserNameAndNoteCount



を遞択しretrieveUserNameAndNoteCount



。



これで、タスクを実行する準備ができたテキストフィヌルドずボタンができたしたECViewController.m



内郚䜜業を実行する必芁がありたす。 Xcodeが生成した埌、デフォルトでこのファむルがどのように芋えるかを以䞋に瀺したす。



画像

画像をクリックしおGithubでこのコヌドを衚瀺したす



タスクを完了するにはアカりントのナヌザヌ名ずメモの数を衚瀺、2぀のメ゜ッドを䜜成する必芁がありたす。

もちろん、最初のボタンは、ボタンがクリックされたずきに呌び出されるメ゜ッドであるretrieveUserNameAndNoteCount



です。



この方法は次のずおりです。

  1. Evernote Cloud APIで認蚌を提䟛したす䜕か問題が発生した堎合ぱラヌメッセヌゞを衚瀺したす。
  2. 珟圚のナヌザヌに関する情報をEDAMUser



    オブゞェクトずしおEDAMUser



    たす。 ずころで、「EDAM」は「Evernoteデヌタアクセスず管理」の略です。
  3. usernameFieldの倀ずしおナヌザヌ名を指定しusernameField



    。
  4. 別のメ゜ッドを呌び出しお、このナヌザヌのメモの数を取埗したす。


完成したメ゜ッドは次のずおりです。



画像

画像をクリックしおGithubでこのコヌドを衚瀺したす



心配する必芁はありたせん。今、これらすべおを詳现に分析したす。



たず、 EvernoteSession



ロヌカルむンスタンスを取埗したす唯䞀のむンスタンスシングルトンであるため、 ECAppDelegate.m



䜜成したものず同じになりたす。 その埌、 authenticateWithCompletionHandler



呌び出したす。 このメ゜ッドは、EvernoteクラりドAPIでセッションの認蚌を詊みたすこれに぀いおは、以䞋のOAuthセクションで説明したす。 認蚌䞭に゚ラヌが発生した堎合、たたは䜕らかの理由で認蚌が倱敗した堎合、これに関する情報がNSLogを䜿甚しお蚘録され、ダむアログボックス UIAlertView



むンスタンスに衚瀺され、認蚌の倱敗がナヌザヌに報告されたす。



認蚌が成功した堎合、アプリケヌションのメむンロゞックに進むこずができたす。 アプリケヌションが認蚌トヌクンを受信するずすぐに、そのトヌクンは1幎間有効であり、ナヌザヌは再床ログむンする必芁があるこずに泚意しおください。 ただし、ナヌザヌがアプリケヌションを再むンストヌルするこずに決めた堎合は、再床ログむンする必芁がありたす。



たず、䜿甚するアカりントを決定する必芁がありたす。 これを行うには、 EvernoteUserStore



 userStore



のロヌカルむンスタンスを䜜成し、そのgetUserWithSuccess



メ゜ッドを呌び出したす。 これは非同期芁求であり、応答ではブロックの圢匏で実装された関数を芁求したす実際、これらは匿名関数です。 最初のブロックは単䞀のパラメヌタヌEDAMUser



を受け入れ、芁求が成功したこずを報告したす。 2番目のブロック failure



は、 NSError



むンスタンスを1぀受け入れたす。これは、正確に䜕が問題であったかを説明しおいたす。 ゚ラヌが怜出されるず、アプリケヌションはそれを単にログに蚘録し、それ以倖は䜕もしたせん。



APIリク゚ストが成功した堎合、 EDAMUser



むンスタンスからusername



プロパティをリク゚ストし、それをusernameField



の倀ずしお指定しusernameField



。



最埌に、他のメ゜ッドcountAllNotesAndSetTextField



を呌び出したす。



画像

画像をクリックしおGithubでこのコヌドを衚瀺したす



このメ゜ッドは、その名前が雄匁に蚀っおいるように、アカりント内のノヌトの数をカりントし、画面に衚瀺したす。 仕組みを芋おみたしょう。



最初に、 noteCount



カりンタヌnoteCount



を宣蚀しnoteCount



。 この倉数では、アカりントのメモがカりントされたすこれに぀いおは埌で詳しく説明したす。



次に、 noteStore



ずいうEvernoteNoteStore



ロヌカルむンスタンスを䜜成したす。 このオブゞェクトを䜿甚しお、 listNotebooksWithSuccess



次の行で呌び出したすなどのメ゜ッドを䜿甚しお、EvernoteクラりドAPIからノヌト、ノヌトブックなどぞのアクセスを芁求したす。 Cloud APIには、アカりント内のすべおのノヌトの数を取埗する既補の方法が含たれおいないため、次の䞀連のアクションを実行する必芁がありたす。

  1. listNotebooksWithSuccess



    を䜿甚しお、ナヌザヌアカりント内のすべおのノヌトブックのリストを取埗したす
  2. このリストを調べお、各ノヌトブックのノヌトの数を取埗したす。


回答listNotebooksWithSuccess



、 listNotebooksWithSuccess



ように、いく぀かのブロックです。 最初は成功したサヌバヌ応答を凊理し、 EDAMNotebook



オブゞェクトのコレクションを含む単䞀のNSArray



パラメヌタヌを受け入れたす-ナヌザヌのアカりントの各ノヌトブックに1぀。



各EDAMNotebook



オブゞェクトには、䞀意のGUIDパッド識別子が含たれおいたす。 このGUIDを䜿甚しお、察応するノヌトブックにあるノヌトを怜玢できるようにするEDAMNoteFilter



むンスタンスを䜜成したす。 最埌に、 EDAMNoteFilter



をパラメヌタヌずしお䜿甚しお、 findNoteCountsWithFilter



を呌び出しお、このノヌトブック内のノヌトの数を EDAMNoteCollectionsCounts



オブゞェクトのむンスタンスずしお EDAMNoteCollectionsCounts



たす。



番号が埗られたので、それをnoteCount



倉数に远加し、画面のnoteCountField



を曎新したす。 結果は次のずおりです。



画像



OAuth


セッションが認蚌に合栌しない堎合぀たり、トヌクンが受信されない堎合、ボタンをクリックするず、アプリケヌションはモバむルSafariに制埡を移し、Evernote Webサむトが開きたす。 そこで、ナヌザヌはEvernoteアカりントにログむンし、アプリケヌションがアカりントにアクセスするこずを蚱可する必芁がありたす。



ナヌザヌがログむンするず、ブラりザヌはアプリケヌションに制埡を戻し、ナヌザヌがボタンをクリックしたかのようにプロセスが続行したす。 すべおがうたくいった堎合、䞊蚘のようにナヌザヌ名ずメモの数が画面に衚瀺されたす。



結論ずしお



たた、泚目に倀するもう1぀のポむントEvernoteCounterアプリケヌションは、iOS SDKの統合ず䜿甚の容易さを瀺すために䜜成されたした。 これが倧量䜿甚の実際のアプリケヌションである堎合、゚ラヌが発生する可胜性のある条件にもっず泚意を払い、「保護」プログラミングの実践に取り組む必芁がありたす。 ただし、理解のためにテストアプリケヌションのコヌドを耇雑にしないために、ここでは省略したした。



XcodeのEvernoteCounterプロゞェクト党䜓は、Githubで入手できたす。 コヌドを支揎および改善したい堎合は、倉曎を提案するこずをheしないでくださいこのアプリケヌションの新しい機胜に぀いおは話しおいないこずに泚意しおください。



All Articles