既存のプロジェクトへの Mobile SDK の追加
学習の目的
この単元を完了すると、次のことができるようになります。
- CocoaPods を使用して Mobile SDK を既存の iOS ネイティブアプリケーションに追加する。
- CocoaPods を使用して iOS ネイティブアプリケーション用の既存の Mobile SDK アプリケーションを更新する。
- Mobile SDK pod が相互に連動するしくみを理解する。
一緒にトレイルを進みましょう
エキスパートと一緒にこの手順を進めますか? 次の動画をご覧ください。これは「Trail Together」(一緒にトレイル) シリーズの一部です。
(この動画は 22:11 の時点から始まります。戻して手順の最初から見直す場合はご注意ください。)
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 開発環境の設定)」を参照してください。
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 リリースを使用する手順は、次のとおりです。
- 「Set Up Your Mobile SDK Developer Tools (Mobile SDK 開発者ツールの設定)」プロジェクトの「Set Up Your iOS Development Environment (iOS 開発環境の設定)」の説明に従って cocoapods Ruby gem がインストールされていることを確認します。
- プロジェクトの 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' ...
-
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! ...
- アプリケーションにマージする 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 アプリケーションの最低要件です。 - 他のモジュールを追加するには、
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 を明示的に宣言する必要はありません。 - (代替方法) Mobile SDK の次回のリリースで作業する場合は、SalesforceMobileSDK-iOS リポジトリをコピーして、dev ブランチを確認し、そこからリソースを取り込みます。この場合は、リポジトリのパスを示すことができるように、リリース前の各連動関係を明示的に宣言する必要があります。連動関係の宣言を省略すると、CocoaPods には本番バージョンが読み込まれます。
- ターミナルプロンプトの目的の commit で github.com/forcedotcom/SalesforceMobileSDK-iOS をローカルにコピーします。
- ディレクトリを新しいコピーに変更します。(カスタムパスを指定していない場合は、
cd SalesforceMobileSDK-iOS
を使用します)。 -
git checkout dev
を実行して開発ブランチに切り替えます。 - コピーのルートディレクトリにある
./install.sh
を実行します。 - Podfile の各 pod コールに、コピーを指し示す
:path
パラメーターを追加します。
- 次のコードは、ローカルコピーからリソースを取り込むように上記の例を再設定したものです。
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
- ターミナルウィンドウで、プロジェクトディレクトリから
pod install
を実行します。CocoaPods により、要求された pod の連動関係のダウンロード、プロジェクトへのマージ、新しくマージされたプロジェクトを含むワークスペースの作成が行われます。
メモ: CocoaPods の実行後は必ずpod install
で作成されたワークスペースからプロジェクトにアクセスします。たとえば、MyProject.xcodeproj を開くのではなく、MyProject.xcworkspace を開きます。 - Objective-C アプリケーションで Mobile SDK API を使用するには、二重引用符ではなく山括弧 (「<」および「>」) を使用して、ヘッダーファイルをインポートします。次に例を示します。
#import <SalesforceSDKCore/SFRestAPI.h>