Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH...

45
Red Hat Customer Content Services Red Hat Mobile Application Platform 4.3 クライアント SDK Red Hat Mobile Application Platform 4.3 向け

Transcript of Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH...

Page 1: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

Red Hat Customer ContentServices

Red Hat Mobile Application Platform4.3クライアント SDK

Red Hat Mobile Application Platform 4.3 向け

Page 2: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように
Page 3: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

Red Hat Mobile Application Platform 4.3 クライアント SDK

Red Hat Mobile Application Platform 4.3 向け

Page 4: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

法律上の通知法律上の通知

Copyright © 2017 Red Hat, Inc.

The text of and illustrations in this document are licensed by Red Hat under a Creative CommonsAttribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA isavailable athttp://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you mustprovide the URL for the original version.

Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert,Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.

Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinitylogo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and othercountries.

Linux ® is the registered trademark of Linus Torvalds in the United States and other countries.

Java ® is a registered trademark of Oracle and/or its affiliates.

XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United Statesand/or other countries.

MySQL ® is a registered trademark of MySQL AB in the United States, the European Union andother countries.

Node.js ® is an official trademark of Joyent. Red Hat Software Collections is not formally related toor endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack ® Word Mark and OpenStack logo are either registered trademarks/service marksor trademarks/service marks of the OpenStack Foundation, in the United States and other countriesand are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed orsponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

概要概要

本書では、サポートされているすべてのプラットフォーム用の RHMAP クライアント SDK を使用する方法についての情報を提供します。

Page 5: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

目次目次

第第1章章 クライアントクライアント SDK パッケージ配布ツールのセットアップパッケージ配布ツールのセットアップ1.1. 概要1.2. NPM1.3. GRADLE1.4. MAVEN1.5. NUGET1.6. COCOAPODS

第第2章章 ネイティブネイティブ ANDROID2.1. スタートガイド2.2. 互換性2.3. ANDROID N

第第3章章 ネイティブネイティブ IOS (OBJECTIVE-C)3.1. スタート

第第4章章 ネイティブネイティブ IOS (SWIFT)4.1. ダウンロード4.2. スタート4.3. API ドキュメント4.4. SWIFT 2.3 および SWIFT 3

第第5章章 ネイティブネイティブ WINDOWS5.1. はじめに5.2. 新規アプリ5.3. 既存アプリ5.4. HTTPCLIENT の独自オプションの使用5.5. SDK の使用

第第6章章 XAMARIN6.1. ダウンロード6.2. はじめに6.3. 新規アプリ6.4. 既存アプリ6.5. HTTPCLIENT の独自オプションの使用6.6. SDK の使用

第第7章章 CORDOVA7.1. スタート7.2. 互換性7.3. API ドキュメント

第第8章章 WEB8.1. はじめに8.2. 新規アプリ8.3. 既存アプリ8.4. SDK の使用

第第9章章 APPCELERATOR9.1. はじめに9.2. 新規アプリ9.3. 既存アプリ9.4. SDK の使用

3333445

7799

1111

1919192121

232323232626

27272727283435

36363737

3838383839

4040404041

目次目次

1

Page 6: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

2

Page 7: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

第1章 クライアント SDK パッケージ配布ツールのセットアップ

1.1. 概要

本ガイドでは、RHMAP クライアント SDK を配布するために使用されるパッケージ配布および依存関係管理ツールのインストール手順について説明します。

npm

Gradle

Maven

NuGet

CocoaPods

1.2. NPM

npm は JavaScript コードを配布するためのパッケージマネージャーです。これは Cordova アプリの開発用に RHMAP JavaScript SDK をインストールするために使用されます。

1.2.1. Node.js および npm のインストール

npm を使用するには、Node.js をシステムにインストールしておく必要があります。デフォルトでnpm バージョン 2.x が組み込まれている NodeJS version 4.x 以降をインストールすることが推奨されています。

1.2.1.1. パッケージマネージャーを使用した Node.js のインストール

システムのパッケージマネージャーを使用して Node.js をインストールするには、Node.js サイトに記載されているお使いのシステムに該当する説明に従ってください。

現在使用している npm のバージョンを確認するには、以下のコマンドを実行します。

1.2.2. Red Hat Enterprise Linux への Node.js および npm のインストール

RHEL を実行するシステムに NodeJS をインストールするには、Red Hat Software Collections からインストールファイルを取得する必要があります。NodeJS のインストールには、Red HatSubscription Manager へのサブスクリプションが必要です。

NodeJS を RHEL にインストールするには、Red Hat Developers ポータル上の ガイド に従ってください。

1.3. GRADLE

sudo npm -v

第第1章章 クライアントクライアント SDK パッケージ配布ツールのセットアップパッケージ配布ツールのセットアップ

3

Page 8: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

Gradle は、Android アプリの開発に使用される依存関係管理およびビルドツールです。これは、RHMAP のネイティブ Android SDK を配布し、これをご使用のアプリプロジェクトと統合するために使用されます。

1.3.1. Gradle のインストールおよびセットアップ

Gradle には Java JDK または JRE のバージョン 7 以降が必要です。現在使用している Java のバージョンを確認するには、以下のコマンドを実行します。

注記注記

Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要なJDK バージョンのインストールディレクトリーを指すように JAVA_HOME 環境変数を設定することもできます。

Gradle のバージョン 2.4 以降の使用が推奨されます。

Gradle をインストールするには、Gradle の web サイトにあるインストール方法およびセットアップ方法の説明を参照してください。

別の方法として、SDK マネージャーツールを使用して Gradle をインストールするには、Gradle のweb サイトにある SDKMAN を使用した Gradle のインストールについて説明されているセクションを参照してください。

1.4. MAVEN

Apache Maven は、Java コードの維持および配布に使用されるプロジェクト管理およびビルド自動化ツールです。これは Apache License, version 2.0 に基づいて配布されます。RHMAP では、RHMAP ネイティブ Android SDK を配布するために使用されます。

Maven 3.3 では、実行に JDK 1.7 以降が必要です。現在使用している Java のバージョンを確認するには、以下のコマンドを実行します。

注記注記

Maven は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要なJDK バージョンのインストールディレクトリーを指すように JAVA_HOME 環境変数を設定することもできます。

Maven 開発者の web サイトから Maven の最新バージョンをダウンロードすることができます。

Maven のインストールおよび設定の詳細な方法については、Maven ドキュメントを参照してください。

1.5. NUGET

java -version

java -version

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

4

Page 9: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

NuGet は、.NET を含む Microsoft 開発プラットフォームの依存関係管理ツールであり、C# コードを共有および配布するために使用されます。これは、RHMAP .NET クライアント SDK を配布するための主要ツールとして機能します。

1.5.1. インストーラーを使用した NuGet CLI のインストール

Windows ベースのシステムに NuGet をインストールするには、NuGet コマンドラインインストーラーをダウンロードし、これを実行します。

1.5.2. Chocolatey を使用した NuGet のインストール

Chocolatey を使用している場合、Windows コマンドラインで以下のコマンドを実行して NuGet をインストールできます。

1.6. COCOAPODS

注記注記

CocoaPods は OSX でのみ利用できます。

CocoaPods は、Xcode プロジェクトの Swift および Objective-C の依存関係マネージャーです。これは OSX に事前インストールされる Ruby でビルドされ、RHMAP の iOS Swift および iOSObjective-C クライアント SDK を配布するために使用されます。

1.6.1. RubyGems を使用した CocoaPods のインストール

RubyGems パッケージマネージャーを使用して CocoaPods をインストールするには、以下のコマンドを実行します。この場合、sudo コマンドが OSX で有効にされている必要があります。

CocoaPods セットアップのオプションとして、Podspec メタデータをローカルの ~/.cocoapods/repos に保存できます。これは、依存関係の解決までの時間やアプリのビルド時間を短縮するのに役立ちます。spec-repo をクローンし、ディレクトリーを作成するには、以下のコマンドを実行します。

1.6.2. sudo を使用しない CocoaPods のインストール

別の方法として、sudo を使用せずに CocoaPods をインストールするには、CocoaPods GettingStarted Guide の Sudo-less Installation のセクションを参照してください。

1.6.3. 必要なプラグインのインストール

choco install nuget.commandline

sudo gem install cocoapods

pod setup

第第1章章 クライアントクライアント SDK パッケージ配布ツールのセットアップパッケージ配布ツールのセットアップ

5

Page 10: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

RHMAP の iOS Objective-C および Swift SDK パッケージは cocoapods-packager および cocapods-appledoc プラグインに依存します。これら両方のプラグインをインストールするには、以下のコマンドを実行します。

1.6.4. Xcode プロジェクトでの CocoaPods の有効化

インストール後に Cocoapods Xcode アプリプロジェクトを有効にするには、以下のコマンドを実行します。

1. Xcode プロジェクトのフォルダーに移動するには、以下を使用します。

2. Podfile をプロジェクトフォルダーに作成し (存在しない場合)、プロジェクト内で指定されるターゲットで事前設定するには、以下のコマンドを実行します。

1.6.5. CocoaPods を使用した依存関係のインストール

CocoaPods を使用して Xcode プロジェクトの Podfile で定義された依存関係をインストールするには、以下のコマンドを実行します。

[sudo] gem install cocoapods-packager cocoapods-appledoc

cd <project_directory>

pod init

pod install

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

6

Page 11: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

第2章 ネイティブ ANDROID

API ドキュメントドキュメント

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

RHMAP Android SDK の参照情報: RHMAP Android SDK のクラスおよびメソッドについてのJavadoc 生成ドキュメント

2.1. スタートガイド

この SDK を使用することで、Android M (バージョン 6.0、API level 23) までのネイティブAndroid アプリで RHMAP API を使用することができます。

RHMAP Android SDK は、Github の FeedHenry Android SDK リポジトリーでホストされるオープンソースプロジェクトです。ご自由にプロジェクトに参加して、このプロジェクトに貢献してください。

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

2.1.1. 新規アプリ

サンプルアプリをダウンロードし、すでに RHMAP SDK が組み込まれている新規のネイティブAndroid アプリケーションを使って開始します。

2.1.2. 既存アプリ

build.gradle ファイルで以下の依存関係を宣言します。

compile 'com.feedhenry:fh-android-sdk:3.2.0'

注記注記

この依存関係は プロジェクトのプロジェクトの build.gradle ではなく、アプリのアプリの build.gradleファイルに追加します。

Gradle を使用していない場合は、JAR の SDK をその依存関係と共に手動でダウンロードできます。詳細は、SDK の Github リポジトリーの README ファイルにある「Usage」セクションを参照してください。

プロジェクトの依存関係の管理に Maven を使用している場合は、以下のコードを pom.xml ファイルに追加し、fh-android-sdk を依存関係として宣言します。

<dependencies> <dependency> <groupId>com.feedhenry</groupId> <artifactId>fh-android-sdk</artifactId> <version>3.2.0</version> </dependency></dependencies>

第第2章章 ネイティブネイティブ ANDROID

7

Page 12: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

2.1.3. RHMAP Android のパーミッション設定

SDK には INTERNET パーミッションが必要です。パーミッションがまだ追加されていない場合は、アプリの AndroidManifest.xml ファイルに追加してください。

2.1.4. RHMAP サーバー接続の設定

アプリが RHMAP サーバーと通信できるようにするプロパティーを定義します。assets フォルダーに以下の内容を含む fhconfig.properties という新規ファイルを作成します。以下のコンテンツで括弧を含めた参照部分をプロジェクトの値に置き換えて、追加します。

host = <RHMAP Core host>projectid = <Project ID>connectiontag = <Connection tag>appid = <Client App ID>appkey = <Client App API key>

注記注記

このデータは、セキュリティー機密に関するデータとはみなされていません。ユーザー認証などのアプリのセキュリティーに関する詳細は、$fh.auth Client API を参照してください。

設定済み fhconfig.properties ファイルは、以下のようになります。

host = https://cldapps.testsite.comprojectid = 0BiqQ5g8kfnUw8d1fn9NnAeRconnectiontag = 0.0.2appid = 0BiqQAqVu9quH6BIrlH_LT9cappkey = bfb20ee69d29add08e974eff89b9a571bacb7959

RHMAP での作業中に扱う可能性のあるプロパティーには、以下のものがあります。

PUSH_SERVER_URL - <The hostname of the MBaaS target you will be targeting>PUSH_SENDER_ID - <Firebase Sender ID>PUSH_VARIANT- <UPS VARIANT>PUSH_SECRET - <UPS SECRET>

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

2.1.5. 初期化

RHMAP SDK からのクラウド要求を呼び出す前に、初期化が必要になります。

<uses-permission android:name="android.permission.INTERNET"/>

FH.init(this, new FHActCallback() { public void success(FHResponse pRes) { // Init okay, free to use FHActRequest

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

8

Page 13: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

2.2. 互換性

アプリが Android M (API Level 23) をターゲットにする場合、バージョン 3.x 以上 (可能であれば最新バージョン) の RHMAP Android SDK を使用する必要があります。SDK の 3.x バージョンは、Android SDK と Apache HTTP クライアントの大幅な変更を主な理由に導入されました。Apache HTTP クライアント (org.apache.http パッケージ) は、Android M の時点で AndroidSDK と共に配布されなくなりました。RHMAP SDK は、HTTP クライアントとして代わりに cz.msebera.android:httpclient を使用しています。

既存のアプリを Android M をターゲットにアップグレードする場合、新規 HTTP クライアントを使用するようにアプリをアップグレードする必要もあります。Gradle を使用していない場合、RHMAP SDK と共に配布され、かつリポジトリーの deps フォルダーから入手可能な HTTP クライアントの JAR ファイルを使用します。

Android N (API Level 24) との互換性についての情報は、Android N Tech Preview を参照してください。

include::shared/attributes.adoc[]

Android N (API Level 24) との互換性についての情報は、Android N を参照してください。

2.3. ANDROID N

RHMAP のこのリリースでは、Android N 機能がサポートされています。

Android N では、lambda 式に対応する Java 8 の使用が可能になります。lambda 式ではコードの読みやすさが強化され、単一メソッドのクラスのインスタンスをよりコンパクトに表記できるようになります。これは、面倒な匿名クラスと対照的なものです。詳細は、lambda 式のチュートリアル:https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html を参照してください。

RHMAP のコンテキストでは、lambda 式は Jack および Java 8 を使用するアプリに影響があります。RHMAP API が lambda 式を消費する場合に特に影響があります。Java 8 では、lambda 式は匿名内部クラスを消費するメソッドに渡すことができ、以下のコードで示されるように、lambda式 が DefaultCallbacks に影響を与える可能性が高くなります。

}

public void fail(FHResponse pRes) { // Init failed Log.e("FHInit", pRes.getErrorMessage(), pRes.getError()); }});

@FunctionalInterfacepublic interface DefaultCallback extends FHActCallback {

default void fail(FHResponse pResponse) { Log.e("DefaultCallback", pResponse.getErrorMessage()); };

@Override void success(FHResponse pResponse);}

第第2章章 ネイティブネイティブ ANDROID

9

Page 14: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

以下のコードスニペットは、RHMAP のコンテキストでの Lambda 式の使用を示しています。

2.3.1. Android N へのアプリの移行

アプリを Android N に移行するには、以下の手順を実行します。

1. 移行前にコードが機能することを確認します。

2. fh-android-sdk の依存関係をパッケージ管理ソフトウェアで 3.1.0 から 3.3.0 に更新します。

3. AndroidManifest および build.gradle ファイルのビルドツールとターゲット API をAPI level 24 に更新します。

4. アプリをローカルでビルドして、すべてが機能することを確認します。

@Overrideprotected void onStart() { super.onStart(); FH.init(this, (DefaultCallback)(ignore) - > { findViewById(R.id.check_online).setVisibility(View.VISIBLE);findViewById(R.id.check_online).setOnClickListener(view - > Toast.makeText(getBaseContext(), FH.isOnline() ? "Is online" : "Is not online", Toast.LENGTH_LONG).show()); } );}

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

10

Page 15: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

第3章 ネイティブ IOS (OBJECTIVE-C)

ダウンロードダウンロード

SDK

サンプルアプリ

API ドキュメントドキュメント

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

RHMAP iOS SDK の参照情報: RHMAP iOS SDK のクラスおよびメソッドについての生成ドキュメント

3.1. スタート

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

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

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

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

3.1.1. 新規アプリ

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

CocoaPods の使用 (推奨される方法で Studio のデフォルト)

FH フレームワークの使用

3.1.1.1. CocoaPods の使用

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

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

sudo gem install cocoapods

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

pod install

第第3章章 ネイティブネイティブ IOS (OBJECTIVE-C)

11

Page 16: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

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

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

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

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

3.1.2. 既存アプリ

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

アプリが CocoaPods を使用する場合、FH SDK を新規 pod として追加する。

(そうでない場合) FH フレームワークを Xcode プロジェクトに追加する。

3.1.2.1. CocoaPods の使用

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

pod FH, '3.1.1'

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

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

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

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

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

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

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

12

Page 17: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

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

第第3章章 ネイティブネイティブ IOS (OBJECTIVE-C)

13

Page 18: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

3.1.3. 統合

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

libxml2.dylib

libz.dylib

SystemConfiguration.framework

CFNetwork.framework

MobileCoreServices.framework

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

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

14

Page 19: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

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

-Objective-C

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

第第3章章 ネイティブネイティブ IOS (OBJECTIVE-C)

15

Page 20: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

16

Page 21: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

3.1.4. セットアップ

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

<?xml version="1.0" encoding="UTF-8"?>

第第3章章 ネイティブネイティブ IOS (OBJECTIVE-C)

17

Page 22: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

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

3.1.5. 初期化

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

<!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>

#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;}

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

18

Page 23: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

第4章 ネイティブ IOS (SWIFT)

4.1. ダウンロード

SDK

サンプルアプリ

4.2. スタート

この SDK により、iOS バージョン 8 以上の Swift アプリで RHMAP API を使用することができます。

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

この SDK を使用する前に:

Xcode IDE をインストールします。Xcode は Apple 開発者ポータルからダウンロードできます。

「CocoaPods」 に説明されているように CocoaPods 依存関係管理システムをインストールします。

4.2.1. 新規アプリ

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

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

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

警告警告

Build Farm を使ってビルドした Swift ベースの iOS アプリについて、enterprisedistribution 証明書を使用して署名する場合、アプリが起動時にクラッシュする可能性があります。

この問題が発生した場合は、問題の解決方法の詳細について、Red Hat ナレッジベースの記事「Swift-based iOS application crashes upon startup when signed using anenterprise distribution certificate without Organisational Unit field」を参照してください。

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

pod install

第第4章章 ネイティブネイティブ IOS (SWIFT)

19

Page 24: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

4.2.2. 既存アプリ

アプリに Podfile がない場合、以下の内容の Podfile という新規ファイルをプロジェクトのルートに作成してください。

source 'https://github.com/CocoaPods/Specs.git'

project 'ProjectName.xcodeproj'platform :ios, '8.0'use_frameworks!

target 'TargetName' do pod 'FeedHenry', '4.1.1'

end

「4.1.1」をターゲットにしている RHMAP iOS Swift SDK のバージョンに、ProjectName.xcodeproj をプロジェクトの名前に、TargetName をターゲットの名前に置き換えます。バージョン番号を指定しない場合、CocoaPods 中央リポジトリーの最新バージョンが使用されます。

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

Xcode で ProjectName.xcworkspace を開けるようになります。

4.2.3. セットアップ

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

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

4.2.4. 初期化

pod install

<?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>

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

20

Page 25: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

4.2.4. 初期化

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

4.3. API ドキュメント

すべてのクライアント API については、API ドキュメントを参照してください。

4.4. SWIFT 2.3 および SWIFT 3

RHMAP のこのリリースでは、Swift 2.3 および Swift 3.0 の機能が含まれます。Swift 2.3 またはSwift 3.0 を使用すると、iMessage アプリ拡張機能などの Xcode 8.x および iOS 10 に固有の機能を使用できます。このプレビューの一部として、以下のテンプレートが使用可能になっています。

https://github.com/feedhenry-templates/helloworld-ios-swift/tree/swift2.3

https://github.com/feedhenry-templates/helloworld-ios-swift/tree/swift3

4.4.1. Swift 2.3 へのアプリの移行

アプリを Swift 2.3 に移行するには、以下の手順を実行します。

1. Swift migration guide を確認します。

2. 移行前にコードが機能することを確認します。

3. Podfile のコンテンツを以下に変更します。

pod 'FeedHenry', '4.2.1'

4. pod をインストールします。

pod install

import FeedHenry

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { FH.init { (resp:Response, error: NSError?) -> Void in if let error = error { print("Error: \(error)") return } print("Response: \(resp.parsedResponse)") } return true}

第第4章章 ネイティブネイティブ IOS (SWIFT)

21

Page 26: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

5. ProjectName.xcworkspace をダブルクリックして、Xcode 8.x ワークスペースを開きます。

6. コードの移行のプロンプトが表示されたら、Swift 2.3 を選択します。

7. アプリをローカルでビルドして、すべてが機能することを確認します。

4.4.2. Swift 3.0 へのアプリの移行

アプリを Swift 3.0 に移行するには、以下の手順を実行します。

1. Swift migration guide を確認します。Swift 3 では、以下のコードスタイルの変更があることに注意してください。

関数とメソッドに、それらの副作用に沿った名前を付けます。

副作用のないものは、x.distance(to: y) や i.successor() といったように名詞句とします。

副作用のあるものは、print(x)、x.sort()、x.append(y) といったように必須動詞句とします。

タイプとプロトコルの名前は UpperCamelCase になります。

それ以外は、lowerCamelCase になります。

2. 移行前にコードが機能することを確認します。

3. Podfile のコンテンツを以下に変更します。

pod 'FeedHenry', '5.0.3'

4. pod をインストールします。

pod install

5. ProjectName.xcworkspace をダブルクリックして、Xcode 8.x ワークスペースを開きます。

6. コードの移行のプロンプトが表示されたら、Swift 3 を選択します。以下の点に注意してください。

アプリコードは初回にコンパイルする可能性が低くなります。コードがすべてのユニットテストをパスするまで、修正してください。

以下の点に注意してください。

アレイ上の sort() は、変更可能な関数であること

Any と AnyObject の違い

Data と NSData の違い

Swift Api Design Guidelines を使用した API ラベル名を検討してください。

7. アプリをローカルでビルドして、すべてが機能することを確認します。

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

22

Page 27: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

第5章 ネイティブ WINDOWS

ダウンロードダウンロード

SDK

サンプルアプリ

API ドキュメントドキュメント

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

RHMAP .NET SDK の参照情報: RHMAP .NET SDK のクラスおよびメソッドについての生成ドキュメント

5.1. はじめに

これは、標準的な Windows Phone のネイティブアプリです。

この SDK 自体は、こちらでホストされるオープンソースプロジェクトです。ご自由にプロジェクトのフォークを行い、このプロジェクトに貢献してください。

この SDK を使用する前に、Windows Phone Developler Tools がインストールされていることを確認してください。これらは、 こちらからダウンロードできます。

5.2. 新規アプリ

サンプルアプリをダウンロードし、すでに RHMAP SDK が組み込まれている新規の WindowsPhone アプリを使って開始します。

5.3. 既存アプリ

SDK のプロジェクトへのインストールは、(NuGet を使用して) 自動で行うことも、手動で行うこともできます。

5.3.1. NuGet (推奨)

FH SDK は NuGet (https://www.nuget.org/packages/FH.SDK/) から利用できます。Visual Studio 内で NuGet プラグインを使用している場合は、FH.SDK を検索してください。NuGet は依存関係のライブラリーを自動的にインストールします。

第第5章章 ネイティブネイティブ WINDOWS

23

Page 28: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

5.3.2. 手動

SDK をダウンロードし、これを展開します。.dll アセンブリーファイルを、プロジェクトの参照として wp80 フォルダー内に追加します。

Portable Class Library プロジェクトを開発している場合は、FHSDK.dll ファイルのみを参照します。

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

24

Page 29: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

この SDK は、Json.Net および Microsoft HTTP クライアントライブラリーに依存しています。これらのライブラリーのアセンブリーも、プロジェクトで利用可能でない場合はインストールする必要があります。

5.3.3. 設定のセットアップ

プロジェクトに fhconfig.json という新規ファイルを作成する必要があります。ファイルの内容は以下のようになります。

ファイルの Build Action が Content であることを確認します。

5.3.4. 初期化

RHMAP .NET SDK を使用するには、 (通常はアプリの起動時に) 以下のように SDK を初期化する必要があります。

接続についての詳細は、こちらを参照してください。

{ "appid": "__ID_OF_APP_IN_PROJECT__", "appkey": "__APP_API_KEY_OF_APP_IN_PROJECT__", "connectiontag": "__CONNECTION_TAG_TO_USE_FOR_CLOUD__", "host": "__APP_STUDIO_HOST__", "projectid": "__PROJECT_ID__"}

try{ bool inited = await FHClient.Init(); if(inited) { //Initialisation is successful }}catch(FHException e){ //Initialisation failed, handle exception}

第第5章章 ネイティブネイティブ WINDOWS

25

Page 30: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

注記注記

Init メソッドのみが FHClient クラスを使用して呼び出され、かつプラットフォーム固有のプロジェクトから呼び出す必要のあるメソッドです (例: PCL プロジェクトからは呼び出すことができません)。

これ以外のすべての SDK メソッドは、FHSDK.dll アセンブリーで定義される FH クラスを使用して呼び出されます。このアセンブリーは他の PCL プロジェクトから参照することができます。このようにクロスプラットフォームソリューションに PCL プロジェクトが含まれる場合には、このアセンブリーファイルを参照し、そこから SDK 機能を呼び出すことができます。

5.4. HTTPCLIENT の独自オプションの使用

デフォルトで、.NET SDK は Microsoft HTTP クライアントライブラリを使用してすべての HTTP要求を実行します。ただし、Xamarin を使用して iOS と Android アプリを開発している場合には、ModernHttpClient を選択する方が良いでしょう。これを使用するには、アプリに ModernHttpClient コンポーネントのインストールのみが必要となり、以下のようにこれを使用します。

上記を使用することを望まない場合は、いずれかの HTTP (または REST) クライアントを使用できます。この場合、必要になるのはアプリのクラウドホストのみで、以下のメソッドを使って取得できます。

ただし、この方法には、一部のデータが要求内で欠落するため、プラットフォームによって提供される分析サービスをアプリで使用できなくなるという不利な点があります。分析サービスを再度有効にするには、以下のメソッドで返されるメタデータを、ヘッダーのセットとして各 HTTP 要求に追加することのみが必要になります。

5.5. SDK の使用

SDK 内で利用可能な API についての詳細は API Docs を参照してください。

//the following should be called BEFORE FHClient.Init is called//use ModernHttpClient on AndroidFHHttpClientFactory.Get = (() => new HttpClient(new OkHttpNetworkHandler()));

string cloudHost = FH.GetCloudHost();

IDictionary<string, string> metaData = FH.GetDefaultParamsAsHeaders();HttpRequestMessage requestMessage = new HttpRequestMessage(...);//then loop through the metaData and add each entry as a http header to your request, using the key as the header name and value as the header valueforeach(var item in metaData){ requestMessage.Headers.Add(item.Key, item.Value);}...

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

26

Page 31: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

第6章 XAMARIN

6.1. ダウンロード

SDK

サンプルアプリ

6.2. はじめに

これは、ネイティブ iOS、Android および Windows Phone アプリを C# で作成することを可能にする標準的な Xamarin アプリです。

この SDK 自体は、こちらでホストされるオープンソースプロジェクトです。ご自由にプロジェクトのフォークを行い、このプロジェクトに貢献してください。

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

Windows Phone アプリを開発するには、Windows Phone Developer Tools をインストールしておく必要があります。これは、こちらからダウンロードできます。

Xamarin For Visual Studio をインストールすることもお勧めします。

6.3. 新規アプリ

サンプルアプリをダウンロードし、すでに RHMAP SDK が組み込まれている新規の Xamarin アプリを使って開始します。

このアプリには 4 つのサブプロジェクトが含まれます。このアプリは、すべてのアプリでコードを共有するために Portable Class Library を使用できるようにセットアップされています。この方法についての詳細は、こちらを参照してください。

App.Core: PCL プロジェクトです。このプロジェクトのコードは他のアプリによって共有されます。アプリのビジネスロジックのほとんどをここで定義する必要があります。

App.WP: Windows Phone アプリプロジェクトは App.Core プロジェクトに依存します。通常、これには UI コードと WP 固有のコードが含まれます。

App.Android: Android アプリプロジェクトは App.Core プロジェクトに依存します。通常、これには UI コードと Android 固有のコードが含まれます。

App.iOS: iOS アプリプロジェクトは App.Core プロジェクトに依存します。通常、これにはUI コードと iOS 固有のコードが含まれます。

第第6章章 XAMARIN

27

Page 32: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

6.4. 既存アプリ

SDK のプロジェクトへのインストールは、(NuGet を使用して) 自動で行うことも、手動で行うこともできます。

6.4.1. NuGet (推奨)

FH SDK は NuGet (https://www.nuget.org/packages/FH.SDK/) から利用できます。Xamarin Studio内で NuGet プラグインを使用している場合は、FH.SDK を検索してください。NuGet は依存関係のライブラリーを自動的にインストールします。

6.4.2. 手動

SDK をダウンロードし、これを展開します。プロジェクトのビルドターゲットに対応するフォルダーから .dll アセンブリーファイルを参照として追加します。

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

28

Page 33: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

第第6章章 XAMARIN

29

Page 34: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

Portable Class Library プロジェクトを開発している場合は、FHSDK.dll ファイルのみを参照します。

この SDK は、Json.Net および Microsoft HTTP クライアントライブラリーに依存しています。これらのライブラリーのアセンブリーも、プロジェクトで利用可能でない場合はインストールする必要があります。

6.4.3. 設定のセットアップ

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

30

Page 35: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

プラットフォーム固有のそれぞれのアプリケーションについて、対応する設定ファイルを作成する必要があります。それぞれのファイルの内容は、各プラットフォームのネイティブ SDK ドキュメントに記載される内容と同じである必要があります。

6.4.4. iOS

fhconfig.plist がアプリケーションのルートにあります。Build Action を BundleResource に設定します。

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>__APP_STUDIO_HOST__</string> <key>appid</key> <string>__ID_OF_APP_IN_PROJECT__</string> <key>projectid</key> <string>__PROJECT_ID__</string> <key>appkey</key> <string>__APP_API_KEY_OF_APP_IN_PROJECT__</string>

第第6章章 XAMARIN

31

Page 36: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

6.4.5. Android

fhconfig.properties がアプリケーションの Assets ディレクトリーにあります。Build Actionを AndroidAsset に設定します。

fhconfig.properties ファイルの内容:

host = __APP_STUDIO_HOST__projectid = __PROJECT_ID__connectiontag = __CONNECTION_TAG_TO_USE_FOR_CLOUD__appid = __ID_OF_APP_IN_PROJECT__appkey = __APP_API_KEY_OF_APP_IN_PROJECT__

6.4.6. Windows Phone 8

fhconfig.json がアプリケーションのルートにあります。Build Action を Content に設定します。

<key>connectiontag</key> <string>__CONNECTION_TAG_TO_USE_FOR_CLOUD__</string></dict></plist>

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

32

Page 37: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

fhconfig.json ファイルの内容:

接続についての詳細は、こちらを参照してください。

6.4.7. 初期化

RHMAP .NET SDK を使用するには、アプリの起動が終了する際に、プラットフォーム固有のプロジェクト (PCL プロジェクトではない) で以下のように SDK を初期化する必要があります。

{ "appid": "__ID_OF_APP_IN_PROJECT__", "appkey": "__APP_API_KEY_OF_APP_IN_PROJECT__", "connectiontag": "__CONNECTION_TAG_TO_USE_FOR_CLOUD__", "host": "__APP_STUDIO_HOST__", "projectid": "__PROJECT_ID__"}

try{ bool inited = await FHClient.Init(); if(inited) { //Initialisation is successful }}

第第6章章 XAMARIN

33

Page 38: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

FHClient は以下のネームスペースで利用できます。

FHSDK.Phone: WP8

FHSDK.Droid: Android

FHSDK.Touch: iOS

アプリのビルドターゲットに応じ、上記のネームスペースの 1 つのみをアプリで利用可能にする必要があります。

複数の異なるネームスペースで同じ FHClient クラスを定義するのは、主にプラットフォーム固有のアセンブリーファイルを適切にロードする必要があるためです。

注記注記

Init メソッドのみが FHClient クラスを使用して呼び出され、かつプラットフォーム固有のプロジェクトから呼び出す必要のあるメソッドです (例: PCL プロジェクトからは呼び出すことができません)。

これ以外のすべての SDK メソッドは、FHSDK.dll アセンブリーで定義される FH クラスを使用して呼び出されます。このアセンブリーは他の PCL プロジェクトから参照することができます。このようにクロスプラットフォームソリューションに PCL プロジェクトが含まれる場合、このアセンブリーファイルを参照し、そこから SDK 機能を呼び出すことができます。

6.5. HTTPCLIENT の独自オプションの使用

デフォルトで、.NET SDK は Microsoft HTTP クライアントライブラリを使用してすべての HTTP要求を実行します。ただし、Xamarin を使用して iOS と Android アプリを開発している場合には、ModernHttpClient を選択する方が良いでしょう。これを使用するには、アプリへのModernHttpClient コンポーネントのインストールのみが必要であり、以下のようにこれを使用します。

上記を使用することを望まない場合は、いずれかの HTTP (または REST) クライアントを使用できます。この場合、必要になるのはアプリのクラウドホストのみで、以下のメソッドを使って取得できます。

ただし、この方法には、一部のデータが要求内で欠落するため、プラットフォームによって提供される分析サービスをアプリで使用できなくなるという不利な点があります。分析サービスを再度有効にするには、以下のメソッドで返されるメタデータを、ヘッダーのセットとして各 HTTP 要求に追加することのみが必要になります。

catch(FHException e){ //Initialisation failed, handle exception}

//the following should be called BEFORE FHClient.Init is called//use ModernHttpClient on AndroidFHHttpClientFactory.Get = (() => new HttpClient(new OkHttpNetworkHandler()));

string cloudHost = FH.GetCloudHost();

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

34

Page 39: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

6.6. SDK の使用

SDK 内で利用可能な API についての詳細は API Docs を参照してください。

IDictionary<string, string> metaData = FH.GetDefaultParamsAsHeaders();HttpRequestMessage requestMessage = new HttpRequestMessage(...);//then loop through the metaData and add each entry as a http header to your request, using the key as the header name and value as the header valueforeach(var item in metaData){ requestMessage.Headers.Add(item.Key, item.Value);}...

第第6章章 XAMARIN

35

Page 40: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

第7章 CORDOVA

7.1. スタート

RHMAP JavaScript SDK により、Cordova アプリで RHMAP API を使用することができます。このアプリは主に HTML、JS、CSS などの Web テクノロジーを使用して開発され、また数多くのデバイス機能へのアクセスを許可します。

基礎となるネイティブプロジェクトおよび Cordova ライブラリーは開発者に公開されます。これにより、Cordova プラグインやサードパーティーライブラリーを含む、アプリケーションの完全なカスタマイズが可能になります。通常、Cordova アプリのネイティブコードの作成または修正に必要な時間は比較的短く、開発チーム内の小規模なグループのみがネイティブコードを扱えるようにするだけで十分です。この小規模なグループは、ネイティブコードを処理したり、Cordova プラグインアーキテクチャーを使用して追加のプラグインまたは SDK を JavaScript API で公開したりできます。

Cordova についての詳細は、公式 Cordova web サイト を参照してください。

7.1.1. 新規アプリ

サンプルアプリをダウンロードし、すでに RHMAP JavaScript SDK が組み込まれている新規のCordova アプリを使って開始します。

7.1.2. 既存アプリ

注記注記

fh-js-sdk は npm を使用して配布されます。以下のステップを完了するには、npm のインストールが必要です。

1. アプリのルートフォルダーで、package.json ファイルを開き、fh-js-sdk の最新バージョンを依存関係の一覧に追加します。

2. アプリのルートフォルダーで以下のコマンドを実行し、npm を使用して SDK をインストールします。

これにより、package.json ファイルの依存関係で指定された SDK バージョンがインストールされます。

3. 以下のコードを index.html ファイルに追加します。

"dependencies": { "fh-js-sdk": "^2.17.5", }

sudo npm install fh-js-sdk

<head> <script src="feedhenry.js" type="text/javascript"></script></head>

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

36

Page 41: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

7.1.3. セットアップ

最後に、アプリが RHMAP サーバーと通信できるようにするプロパティーを定義する必要があります。SDK ファイルと同じディレクトリーに、以下の内容を含む fhconfig.json という新規ファイルを作成します。括弧内の参照部分はプロジェクトの値に置き換えます。

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

7.2. 互換性

Cordova アプリ開発用のセットアップを機能させるには、ローカルの Cordova CLI バージョンがRHMAP Build Farm にインストールされた Cordova のバージョンと一致しており、Cordova プラットフォームのバージョンがサポート範囲内のものであることを確認するようお勧めします。サポートされる設定についてのページでは、Build Farm でサポートされている Cordova CLI およびプラットフォームのバージョンを一覧表示します。

Cordova プラットフォームのバージョンをアプリに指定しない場合は、ビルドファームで使用される Cordova CLI のデフォルトの固定バージョンが使用されます。ビルドの再現性および安定性を確保するには、常にプラットフォームのバージョンを Cordova アプリに指定することをお勧めします。

7.3. API ドキュメント

すべてのクライアント API については、API ドキュメントを参照してください。

JavaScript SDK については、JS SDK を参照してください。

{ "host": "<RHMAP Core host>", "projectid": "<Project ID>", "connectiontag": "<Connection tag>", "appid": "<Client App ID>", "appkey": "<Client App API key>"}

第第7章章 CORDOVA

37

Page 42: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

第8章 WEB

8.1. はじめに

これは Node.js + Express web アプリケーションです。これらのアプリはより高度なデスクトップ/タブレットの web ポータルおよびモバイル web サイトを提供します。

また、Express 4 や ejs などのテンプレートエンジンを使用したサーバーサイドのテンプレートなどの機能を含む、web アプリ開発のための Node.js の完全な機能を公開します。

標準的な HTML5、CSS および JavaScript の静的ファイルサービスもサポートします。

8.2. 新規アプリ

サンプルアプリをダウンロードし、すでに RHMAP SDK が組み込まれている新規の Web アプリを使って開始します。

8.3. 既存アプリ

Web Apps アプリは、index.html ファイルに組み込まれている標準的な JavaScript SDK を使用します。

8.3.1. SDK のダウンロード

注記注記

fh-js-sdk は npm を使用して配布されます。以下のステップを完了するには、npm のインストールが必要です。

1. アプリの /public フォルダーで、package.json ファイルを開き、fh-js-sdk の最新バージョンを依存関係の一覧に追加します。

2. アプリのルートフォルダーで以下のコマンドを実行し、SDK をインストールします。

これにより、package.json ファイルの依存関係で指定された SDK バージョンがインストールされます。

8.3.2. SDK の統合

以下のコードを index.html ファイルに追加します。

"dependencies": { "fh-js-sdk": "^2.17.5", }

sudo npm install fh-js-sdk

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

38

Page 43: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

8.3.3. 設定のセットアップ

SDK ファイル (feedhenry.js) と同じディレクトリーに、以下の内容を含む fhconfig.jsonという新規ファイルを作成します。

接続についての詳細は、こちらを参照してください。

8.4. SDK の使用

SDK 内で利用可能な API についての詳細は API Docs を参照してください。

<head> <script src="feedhenry.js" type="text/javascript"></script></head>

{ "appid": "__ID_OF_APP_IN_PROJECT__", "appkey": "__APP_API_KEY_OF_APP_IN_PROJECT__", "connectiontag": "__CONNECTION_TAG_TO_USE_FOR_CLOUD__", "host": "__APP_STUDIO_HOST__", "projectid": "__PROJECT_ID__"}

第第8章章 WEB

39

Page 44: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

第9章 APPCELERATOR

9.1. はじめに

これは、標準的な Appcelerator Titanium アプリです。

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

9.2. 新規アプリ

サンプルアプリ をダウンロードし、すでに RHMAP SDK が組み込まれている新規の AppceleratorTitanium アプリを使って開始します。

9.3. 既存アプリ

注記注記

fh-js-sdk は npm を使用して配布されます。以下のステップを完了するには、npm のインストールが必要です。

Appcelerator Titanium アプリは標準的な JavaScript SDK の 1 つの種類を使用します。

9.3.1. npm を使用した SDK のダウンロードおよび統合

RHMAP JavaScript SDK を統合するには、Basic Web App プロジェクトの /Resources フォルダーで package.json ファイルを作成します。

1. コマンドラインで cd コマンドを使用して、ディレクトリーを Appcelerator Titanium BasicWeb App プロジェクトの /Resources フォルダーに変更します。

2. package.json ファイルを作成するには (このフォルダーにない場合)、以下のコマンドを実行します。

コマンドの実行時に、npm は新規に作成された package.json ファイルのヘッダーの事前設定に使用する追加情報を求めるプロンプトを繰り返し出します。このプロンプトを省略して npm にデフォルト情報を使ったヘッダーの事前設定を実行させるには、以下のコマンドを実行します。

3. fh-js-sdk を package.json ファイルの依存関係として宣言するには、以下を実行します。

npm init

npm init --force

"dependencies": { "fh-js-sdk": "^2.18.1" }

Red Hat Mobile Application Platform 4.3 クライアントクライアント SDK

40

Page 45: Red Hat Mobile Application Platform 4.3 クライアン …...Gradle は、PATH 環境変数に指定のある JDK バージョンを使用します。また、必要な JDK バージョンのインストールディレクトリーを指すように

4. JavaScript SDK を /Resources フォルダーにインストールするには、以下のコマンドを実行します。

9.3.2. 設定のセットアップ

/Resources フォルダーで、以下の内容を含む fhconfig.js という名前のファイルを作成します。

fhconfig.js ファイルで指定されるキーの値を取得するには、以下を実行します。

1. RHMAP Studio でプロジェクトを開きます。

2. アプリ、クラウドアプリアプリ、クラウドアプリ & サービスサービス に移動し、クライアントアプリをクリックしてアプリの詳細画面を表示します。

3. アプリアプリ ID の値を appid の値として使用します。

4. アプリアプリ API キーキー の値を appkey の値として使用します。

5. プロジェクトから 接続接続 に移動します。

6. 接続の一覧でアプリを見つけます。

7. アプリの 接続タグ接続タグ を connectiontag の値として使用します。

8. RHMAP のインスタンスの URL を host の値として使用します。

9. プロジェクト ID を取得するには、設定設定 に移動し、プロジェクトプロジェクト ID の値を projectid の値として使用します。

接続についての詳細は、こちらを参照してください。

9.4. SDK の使用

SDK 内で利用可能な API についての詳細は API Docs を参照してください。

npm install

exports = { "appid":"__ID_OF_APP_IN_PROJECT__", "appkey":"__APP_API_KEY_OF_APP_IN_PROJECT__", "connectiontag":"__CONNECTION_TAG_TO_USE_FOR_CLOUD__", "host":"__APP_STUDIO_HOST__", "projectid":"__PROJECT_ID__"};

第第9章章 APPCELERATOR

41