既存のプロジェクトへの Mobile SDK の追加

学習の目的

この単元を完了すると、次のことができるようになります。

  • CocoaPods を使用して Mobile SDK を既存の iOS ネイティブアプリケーションに追加する。
  • CocoaPods を使用して iOS ネイティブアプリケーション用の既存の Mobile SDK アプリケーションを更新する。
  • Mobile SDK pod が相互に連動するしくみを理解する。

CocoaPods と Mobile SDK の使用

Mobile SDK を使用して既存の iOS アプリケーションをアップグレードする場合、この単元は、CocoaPods を使用して既存のモジュールと Mobile SDK モジュールをマージするために役立ちます。CocoaPods の使用を開始するには、「Set Up Your Mobile SDK Developer Tools (Mobile SDK 開発者ツールの設定)」プロジェクトの「Set Up Your iOS Development Environment (iOS 開発環境の設定)」を参照してください。
メモ

CocoaPods はサードパーティのオープンソースの連動関係マネージャです。Mobile SDK でサポートされ、forceios では必須ですが、iOS での Mobile SDK 開発には必須ではありません。手動のプロジェクト手順へのリンクは、このページの最後にある「リソース」を参照してください。

Mobile SDK 4.0 以降、forceios ではプロジェクトの作成に CocoaPods が使用されます。開発者が CocoaPods を手動で使用して Mobile SDK を既存の iOS アプリケーションに追加することもできます。

Mobile SDK には、Mobile SDK モジュールごとに CocoaPods pod の仕様 (podspecs) が用意されています。

  • SalesforceSDKCore — OAuth、パスコード、ネットワーク、REST API を実装します。
  • SmartStore — セキュアなオフラインストレージを実装します。SalesforceSDKCore と連動します。
  • MobileSync — オフライン同期を実装します。SmartStore と連動します。
  • SalesforceAnalytics — Mobile SDK 機能の利用状況と人気度に関する Salesforce 匿名統計情報を送信するレポートメカニズムを実装します。
  • SalesforceSDKCommon — SDK 全体で共有されるユーティリティです。
次の図は、仕様間の連動関係を示しています。この図では、連動する側の仕様から連動される側に向かって矢印が伸びています。
pod を宣言すると、その pod の連動関係チェーンのすべてを自動的に取得します。たとえば、MobileSync の pod を宣言すると、SmartStore pod と SalesforceSDKCore pod を自動的に取得します。このショートカットは、本番 pod にのみ適用されます。

CocoaPods を通じて現在の Mobile SDK リリースを使用する手順は、次のとおりです。

  1. 「Set Up Your Mobile SDK Developer Tools (Mobile SDK 開発者ツールの設定)」プロジェクトの「Set Up Your iOS Development Environment (iOS 開発環境の設定)」の説明に従って cocoapods Ruby gem がインストールされていることを確認します。
  2. プロジェクトの Podfile で、SalesforceMobileSDK-iOS-Specs リポジトリをソースとして追加します。必ず最初にこのエントリを CocoaPods ソースパスより前に配置します。
    target 'YourAppName' do
      source 'https://github.com/forcedotcom/SalesforceMobileSDK-iOS-Specs.git' # needs to be first 
      source 'https://github.com/CocoaPods/Specs.git'
      ...
  3. use_frameworks! を追加して動的フレームワークをサポートします。 
    target 'YourAppName' do
      source 'https://github.com/forcedotcom/SalesforceMobileSDK-iOS-Specs.git' # needs to be first 
      source 'https://github.com/CocoaPods/Specs.git'
      use_frameworks!
      ...
  4. アプリケーションにマージする Mobile SDK podspec を参照します。たとえば、OAuth モジュールとパスコードモジュールをアプリケーションに追加する場合は、Podfile で SalesforceSDKCore pod を宣言します。次に例を示します。
    target 'YourAppName' do
      source 'https://github.com/forcedotcom/SalesforceMobileSDK-iOS-Specs.git' # needs to be first 
      source 'https://github.com/CocoaPods/Specs.git'
      use_frameworks!
      pod 'SalesforceSDKCore'
    end
    この pod 設定は、Mobile SDK アプリケーションの最低要件です。
  5. 他のモジュールを追加するには、SalesforceSDKCore を別の pod 宣言で置き換えます。たとえば、MobileSync を使用します。

    target 'YourAppName' do
      source 'https://github.com/forcedotcom/SalesforceMobileSDK-iOS-Specs.git' # needs to be first 
      source 'https://github.com/CocoaPods/Specs.git'
      use_frameworks!
      pod 'MobileSync'
    end
    MobileSync pod は SmartStore と SalesforceSDKCore と連動するため、これらの pod を明示的に宣言する必要はありません。
  6. (代替方法) Mobile SDK の次回のリリースで作業する場合は、SalesforceMobileSDK-iOS リポジトリをコピーして、dev ブランチを確認し、そこからリソースを取り込みます。この場合は、リポジトリのパスを示すことができるように、リリース前の各連動関係を明示的に宣言する必要があります。連動関係の宣言を省略すると、CocoaPods には本番バージョンが読み込まれます。
    1. ターミナルプロンプトの目的の commit で github.com/forcedotcom/SalesforceMobileSDK-iOS をローカルにコピーします。
    2. ディレクトリを新しいコピーに変更します。(カスタムパスを指定していない場合は、cd SalesforceMobileSDK-iOS を使用します)。
    3. git checkout dev を実行して開発ブランチに切り替えます。
    4. コピーのルートディレクトリにある ./install.sh を実行します。
    5. Podfile の各 pod コールに、コピーを指し示す :path パラメータを追加します。
  7. 次のコードは、ローカルコピーからリソースを取り込むように上記の例を再設定したものです。
    target 'YourAppName' do
      source 'https://github.com/forcedotcom/SalesforceMobileSDK-iOS-Specs.git' # need to be first 
      source 'https://github.com/CocoaPods/Specs.git'
      use_frameworks!
      # Specify each pre-release pod 
      pod 'SalesforceSDKCore', :path => '/<path-to-clone-of>/SalesforceMobileSDK-iOS/'
      pod 'SalesforceAnalytics', :path => '/<path-to-clone-of>/SalesforceMobileSDK-iOS/'
      pod 'SmartStore', :path => '/<path-to-clone-of>/SalesforceMobileSDK-iOS/'
      pod 'MobileSync', :path => '/<path-to-clone-of>/SalesforceMobileSDK-iOS/'
    end
  8. ターミナルウィンドウで、プロジェクトディレクトリから pod install を実行します。CocoaPods により、要求された pod の連動関係のダウンロード、プロジェクトへのマージ、新しくマージされたプロジェクトを含むワークスペースの作成が行われます。
    メモ: CocoaPods の実行後は必ず pod install で作成されたワークスペースからプロジェクトにアクセスします。たとえば、MyProject.xcodeproj を開くのではなく、MyProject.xcworkspace を開きます。
  9. Objective-C アプリケーションで Mobile SDK API を使用するには、二重引用符ではなく山括弧 (「<」および「>」) を使用して、ヘッダーファイルをインポートします。次に例を示します。

    #import <SalesforceSDKCore/SFRestAPI.h>
無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる