第2章 ネイティブ iOS (Objective-C)

2.1. ダウンロード

2.2. スタート

この SDK により、RHMAP でサポートされるすべての iOS バージョン用の Objective-C アプリで RHMAP API を使用することができます。

RHMAP iOS Objective-C SDK は、Github の FeedHenry iOS SDK リポジトリーでホストされるオープンソースプロジェクトです。ご自由にプロジェクトのフォークを行い、このプロジェクトに貢献してください。

この SDK を使用する前に、Xcode IDE がインストールされていることを確認してください。Xcode は Apple 開発者ポータルからダウンロードできます。

プロジェクトの依存関係を管理するために CocoaPods を使用する予定であれば、最初にこれをインストールする必要があります。

sudo gem install cocoapods

2.2.1. 新規アプリ

新規テンプレートアプリを使って開始する場合、選択肢として以下の 2 つのオプションがあります。

  • CocoaPods の使用 (推奨される方法で Studio のデフォルト)
  • FH フレームワークの使用

2.2.1.1. CocoaPods の使用

サンプルアプリをクローンし、RHMAP SDK を CocoaPods の依存関係として組み込んだ新規 iOS アプリケーションを使って開始します。

git clone https://github.com/feedhenry-templates/blank-ios-app.git
git checkout cocoapods

Podfile で定義された依存関係を取得します。

pod install

Xcode で blank-ios-app.xcworkspace ワークプレースを開きます。必要な依存関係は Pods グループにあります。

2.2.1.2. FH フレームワークの使用

サンプルアプリをクローンし、RHMAP SDK がすでに組み込まれている新規 iOS アプリケーションを使って開始します。

git clone https://github.com/feedhenry-templates/blank-ios-app.git

Xcode で blank-ios-app.xcworkspace ワークスペースを開きます。

2.2.2. 既存アプリ

既存アプリと RHMAP を統合する場合、選択肢として以下の 2 つのオプションがあります。

  • アプリが CocoaPods を使用する場合、FH SDK を新規 pod として追加する。
  • (そうでない場合) FH フレームワークを Xcode プロジェクトに追加する。

2.2.2.1. CocoaPods の使用

Podfile を開き、以下の依存関係を追加します。

pod FH, '3.1.1'

3.1.1 を、ターゲットにしている RHMAP iOS Objective-C SDK のバージョンに置き換えます。バージョン番号を指定しない場合、CocoaPods 中央リポジトリーの最新バージョンが使用されます。

2.2.2.2. FH フレームワークの使用

SDK をダウンロードし、fh-framework-latest.zip として保存します。

SDK を統合するには、上記のダウンロードした Zip ファイルから FH.framework ファイルを抽出します。

image

ダウンロード後は、FH.framework ファイルを Xcode プロジェクトにドラッグします。

image

ダイアログで、デフォルトを受け入れ、Finish をクリックします。

image

2.2.3. 統合

RHMAP iOS SDK にはフレームワークおよびライブラリーの数多くの依存関係があります。SDKをプロジェクトで適切にコンパイルするには、ビルド時にフレームワークやライブラリーにリンクするよう Build Phases を再設定しなければなりません。以下は、リンクする必要のあるライブラリーです。

  • libxml2.dylib
  • libz.dylib
  • SystemConfiguration.framework
  • CFNetwork.framework
  • MobileCoreServices.framework

これらを追加するには、Build Phases > Link Binary with Libraries に移動し、上記の依存関係をリンク依存関係として追加します。

image

また、リンカーフラグをアプリに追加する必要もあります。これを追加するには、プロジェクトのターゲットの Build Settings 画面に移動します。検索を実行して Other linker flags を見つけ、以下を追加します。

-Objective-C

image

最後に、fhconfig.plist というプロパティーリストファイルをプロジェクトに追加します。

image

image

image

2.2.4. セットアップ

アプリが RHMAP サーバーと通信できるようにするプロパティーを定義する必要があります。以下の値を fhconfig.plist 設定ファイルに追加します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>host</key>
  <string>__RHMAP_Core_host__</string>
  <key>appid</key>
  <string>__Client_App_ID__</string>
  <key>projectid</key>
  <string>__Project_ID__</string>
  <key>appkey</key>
  <string>__Client_App_ API_key___</string>
  <key>connectiontag</key>
  <string>__Connection_tag__</string>
</dict>
</plist>

クライアントアプリとクラウドアプリ間の通信についての詳細は、「Projects - Connections」を参照してください。

2.2.5. 初期化

RHMAP iOS Swift SDK からクラウド要求を呼び出す前に、初期化する必要があります。以下のコードスニペットを App Delegate の didFinishLaunchingWithOptions: メソッドか、またはコードがクラウド要求前に確実に呼び出されるその他の場所にコピーします。

#import <FH/FH.h>
#import <FH/FHResponse.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Override point for customization after application launch.

  // Call a cloud side function when init finishes
  void (^success)(FHResponse *)=^(FHResponse * res) {
    // Initialisation is now complete, you can now make FHActRequest's
    NSLog(@"SDK initialised OK");
  };

  void (^failure)(id)=^(FHResponse * res){
    NSLog(@"Initialisation failed. Response = %@", res.rawResponse);
  };

  //View loaded, init the library
  [FH initWithSuccess:success AndFailure:failure];

  return YES;
}

2.3. API ドキュメント

API Docs: すべてのクライアント API についてのドキュメント