SwiftからSalesforceへ接続。

みなさんSalesforce.comはご存知でしょうか?

エンタープライズ向けのクラウドアプリケーションを提供している会社です。

で、今回はSwiftからSalesforceアプリケーションへの接続を行ってみたいと思います。
やったことは、下記サイトに書かれているのと同じものを作っただけなのですが、
「サンプルプログラムと異なる設定」iPhoneアプリ開発として勉強になった」部分を中心に書きたいと思います。

以下サマリ。

■サンプルプログラムと異なる設定

・isInitialViewを初期表示後のViewに設定する。

・appDelegate内のメソッド内の、view初期化あたり。

   プログラムがサンプル通りでは動かなかったので書き換えました。
・2個のViewControllerにはちゃんと、board.instantiateViewControllerWithIdentifierで指定したIDをStoryBoardIDに設定する。

iPhoneアプリ開発として勉強になった部分

swiftからObjectiveCを呼ぶ方法

・cocoaPodsの使用方法。

 

以下詳細。

■サンプルプログラムと異なる設定

・isInitialViewを初期表示後のViewに設定する。

サンプルプログラムではisInitiaViewの設定がされていませんでしたが、
設定をしないとなぜか動いてくれなかったため。設定。(ログイン後の画面として使用するViewに設定してください。)
・appDelegate内のメソッド内の、view初期化あたり。
プログラムがサンプル通りでは動かなかったので書き換えました。

「setupRootViewController」クラスの
        self.window?.rootViewController = board.instantiateInitialViewController() as? UIViewController

↓↓↓↓↓↓
        self.window?.rootViewController = board.instantiateViewControllerWithIdentifier("user_detail") as? UIViewController
・2個のViewControllerにはちゃんと、board.instantiateViewControllerWithIdentifierで指定したIDをStoryBoardIDに設定する。


iPhoneアプリ開発として勉強になった部分

swiftからObjectiveCを呼ぶ方法

まず概念として、
swiftとObjectiveCを1ファイルで扱うことは出来ません。
◯ 一緒に使う方法としては、ObjectiveCを呼ぶためのヘッダーファイルを作成し、それを窓口(I/F)としてSwiftを使って呼びます。

手順1:swiftから呼ぶために、ヘッダーファイル(.h)を作成する。
    ファイル名は、「Objective-C Bridging Header」。中身はブログにて確認お願いします。(要は、必要なクラス名を記述するということ)
手順2:PJ設定の箇所で、Build Settings -> Swift Compiler – Code Generation→“Install Objective-C Compatibility Header“が”Yes“、”Objective-C Bridging Header“が指定のファイルに設定する。
※SwiftCompilerが見えない場合は、左上の「Basic」→「All」に変更する。
 
ちなみに、、、
Swiftのみの環境にObjectiveCソースを組み込もうとすると、「Bridging-Header」の生成を聞かれます。

・cocoaPodsの使用方法。
iPhoneアプリ開発を楽にするライブラリ管理ツールです。(色々便利なものがあるそうなので試してみる価値あり!!)
詳細はググってください。笑
私はこのサイト通りにサンプルとしてやってみて、その後Salesforce用のライブラリ取り込みを実施しました。
<http://www.iosjp.com/dev/archives/451>
(ちなみに)cocoaPodsがなかなか落とせませんでした。WiMAXが低速だったからかな??

(番外編??)
・OAuthとは?
Basic認証等の場合、常にID・パスをやりとりしなければならず、
外部サービスに対してID・パスが知られるので悪用される危険性があります。
しかし、OAuthだと一定期間のみ外部サービスに対して、「アクセス権」をあたえるだけなので漏洩の心配がない。
例で言うと、Evernoteサードパーティアプリを初期表示してログインした時に、1年間アクセス権あたえます。みたいな表示がでると思うがその仕組みのことを言っている。






<補足説明>
■CocoaPodsとは??
以下サイトから抜粋
http://www.terrasky.co.jp/blog/?p=9335

普段アプリを開発する時に、「github」、「Google Code」などからいろんなライブラリを一々ダウンロードして、ソースファイルをプロジェクトに追加する作業は多いですね。こんなややこしい作業を全部CocoaPodsに任せて、簡単なコマンドで全部綺麗に完成できます。

cocoaPodsを使う利点
今までのSFM SDKiOSアプリケーション開発では、forceiosコマンドを使用してnpmでテンプレートアプリを作成し、iOSアプリの開発を行っていたと思います。
ただ、これだとバージョンアップの度に手動でライブラリを入れ替えたり、入れ替えたは良いけどコンパイルが通らなかったり、「forceios update」コマンドを使用しているのにちゃんとアップデートされなかったり・・・と、割りと面倒な思いをされた方も多いと思います。

SFM SDK3.0でCocoaPodsというライブラリ管理システムでSFM SDKを組み込めるようになった事で、そんな面倒な思いをせず、「pod install」というコマンド1つで全てが解決する素晴らしい仕組みを導入することが出来ます。