2011年11月13日日曜日

PhoneGap 1.2.0 + Salesforce SDK(hyblid)


■Salesforce mobile SDK 2011-11版■

ちょっと試してみたいことがあって久しぶりにSalesforce mobile SDK for iOS / hyblidを使ってみようと思ったら、11月の頭にSalesforce mobile SDKのアップデータが出ていました(リビジョン番号とかないのかしら)

そのまま放置していたらPhoneGapからは1.2.0が出てました。ついでなので、先にこっちをアップデートします。


■PhoneGap 1.2.0■

それにしてもOpenSourceはバージョン進むの速いな。おっさんは着いていくだけで精一杯だわ。というわけで、1.2.0を落とします。Xcodeは終了しておくこと。

iOSフォルダの中を見ると例によってdmgパッケージになっているのでダブルクリックしてマウント、Uninstall PhoneGap.appで古いヤツを消してから、インストーラを起動します。

#uninstallするのは必須ではないですが、まぁ古いMacOSユーザの習性です#

インストールはサクサク進む、はず。あとは例によって
  • Xcodeを起動
  • PhoneGap-Based Applicationをテンプレートとして新プロジェクトを作る
  • できたプロジェクトをFinderで開いて中のwwwフォルダをXcodeの新プロジェクト上にDrag & Dropして"create folder reference"で追加
  • PhoneGap.plistのExternal hostsに*を追加
  • ビルド
ってことで、無事デモアプリが起動します。「あれkitchen sinkはどこだっけ…?」と思ってしまった自分が悔しい。それはTitanium mobileやがな。PhoneGapでもああいうの欲しいなぁ。


■あらためてSalesforce mobile SDK、の前に■

SDKはgithubに公開されていますので、メンテナンス情報などを取得する意味でもgithubアカウントがあると便利です。というか無いと不便すぎてストレス溜まります。無料なので、取ってしまいましょう。かくいう私もつい先日作ったのですが、便利すぎて今までの苦労があほらしくなりました。githubアカウントを使うには公開鍵が必要ですので、もしまだ作っていなければ、作ります。
で、ここから無料のアカウントを作ります。特に難しいこともないので、省略しますが、さっき作った公開鍵はgithubにログインしてAccount Settings>SSH Public Keysに登録します。あなたのマシンとgithubはsshで通信するので、そのための暗号キーを設定するわけですね。なお、ものすごく蛇足ですが、秘密キーは絶対公開したりヒトに見せたりしてはいけません。

さて、次。Macからgithubを扱うのであれば、GitHub for Macがあると圧倒的に便利ですので、これも入れます。インストールしてセットアップを終えると、あら不思議、githubのsalesforce SDKのページにさっきまで無かった「Clone in Mac」のアイコンが出てきます。クリックするとGitHub for Macがダウンロードを開始します。便利すぎて笑えます。

次に、もしまだgit入れてない人は、入れましょう。サブモジュールなどをgitから取ってくる形式になったので、gitないとうまく使えません。そしてgitを入れるにはMacPortってのがあると簡単です。MacPortをインストールして、それからgitをインストールし、そこからSalesforce mobile SDK 2011年11月版を入れましょう。




■今度こそSDK…のビルド■

…いやー、準備が長かったw というわけで、GitHub for Macのおかげで安全かつ迅速に、SalesforceMobileSDK-iOSが用意できました。ターミナル.appを起動して、SDKをインストールします。とりあえず私は安易にDesktopに置きましたが、そうでない方は水色の部分を変えてください。
cd
cd Desktop/SalesforceMobileSDK-iOS
./install.sh
だーっと滝のように文字が流れます。マシンの性能によって違いますが、数分間続きます。最後に:
all:

BUILD SUCCESSFUL
Total time: 10 seconds
と表示されればOKです(secondsは変わると思いますが)。お疲れ様でした。


■ようやくサンプル(今度こそ)■

SalesforceMobileSDK-iOS/hyblid/SampleApps/ContactExplorerの中にあるContactExplorer.xcodeprojをダブルクリックするとXcodeが起動します。

さくっとビルドすると警告が出てしまいます。そうです、Consumer Keyなどが未登録ですね。というわけで、AppDelegate.hを開き、RemoteAccessConsumerKey, OAuthRedirectURI, OAuthLoginDomainを登録します。
  • RemoteAccessConsumerKey
ここに説明が書いてありますが詳細すぎてわかりにくいですね。Salesforceにログインして 設定>アプリケーションの設定>リモートアクセス>新規 で適当なアプリケーション名、コールバックURL(後述)、連絡先メールアドレスを登録してください。コンシューマ鍵として長い記号のような文字列が表示されますので、それを設定します。
  • OAuthRedirectURI
上記コールバックURLと同じものです。OAuthの認証には暗唱方式とコールバックURL方式があって…と説明すると長いですが、mobileアプリの場合には https://login.salesforce.com/services/oauth2/success を設定します。これでないと、認証を中断した時などに二度とログイン画面が出てこなくなります(経験者は語る)。
  • OAuthLoginDomain
これはSalesforceにログインする時にお馴染みの login.salesforce.com をセットします。デフォルトではサンドボックスに接続するために test.salesforce.com になっていますが、サンドボックスを使う場合と本環境とではここで切り替わるようになっているようです。ただし、本番とサンドボックスを切り替える場合には、上記コンシューマ鍵もそれぞれの環境で作った別のものが必要ですのでご注意ください。
これでようやくcmd+Rできます。長かった…orz

ビルドが終わるとエミュレータが起動し、スプラッシュ画面の後、Salesforceのログイン画面になります。ここであなたのSalesforce idとpasswordを入力します。ログインに成功すると、このアプリからSalesforceへのアクセスを許可するかどうか確認する画面になります。認証すれば、このページの冒頭に貼ったような画面に切り替わるはずです。

お疲れ様でした。

いやー、読むのも大変だったと思いますが、いろいろググって正しい記述かどうかを確認しながらこれを書いたので、休憩を除いて4時間ぐらいかかりっきりでした。

…冒頭、「調べたいことがあったので」と書きましたが…今日はもういいや。忘れないようにモニタにポストイットを貼って(アナログだな)、また後日。

お疲れ様でした(大事なことなので(ry

0 件のコメント:

コメントを投稿