第4章 ネイティブ Windows
4.1. ダウンロード
4.2. はじめに
これは、標準的な Windows Phone のネイティブアプリです。
この SDK 自体は、こちらでホストされるオープンソースプロジェクトです。ご自由にプロジェクトのフォークを行い、このプロジェクトに貢献してください。
この SDK を使用する前に、Windows Phone Developler Tools がインストールされていることを確認してください。これらは、 こちらからダウンロードできます。
4.3. 新規アプリ
サンプルアプリ をダウンロードし、すでに RHMAP SDK が組み込まれている新規の Windows Phone アプリを使って開始します。
4.4. 既存アプリ
SDK のプロジェクトへのインストールは、(NuGet を使用して) 自動で行うことも、手動で行うこともできます。
4.4.1. NuGet (推奨)
FH SDK は NuGet (https://www.nuget.org/packages/FH.SDK/) から利用できます。Visual Studio 内で NuGet プラグインを使用している場合は、FH.SDK を検索してください。NuGet は依存関係のライブラリーを自動的にインストールします。
4.4.2. 手動
SDK をダウンロードし、これを展開します。.dll アセンブリーファイルを、プロジェクトの参照として wp80 フォルダー内に追加します。
Portable Class Library プロジェクトを開発している場合は、FHSDK.dll ファイルのみを参照します。
この SDK は、Json.Net および Microsoft HTTP クライアントライブラリーに依存しています。これらのライブラリーのアセンブリーも、プロジェクトで利用可能でない場合はインストールする必要があります。
4.4.3. 設定のセットアップ
プロジェクトに fhconfig.json という新規ファイルを作成する必要があります。ファイルの内容は以下のようになります。
{
"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__"
}ファイルの Build Action が Content であることを確認します。
4.4.4. 初期化
RHMAP .NET SDK を使用するには、 (通常はアプリの起動時に) 以下のように SDK を初期化する必要があります。
try
{
bool inited = await FHClient.Init();
if(inited) {
//Initialisation is successful
}
}
catch(FHException e)
{
//Initialisation failed, handle exception
}接続についての詳細は、こちらを参照してください。
Init メソッドのみが FHClient クラスを使用して呼び出され、かつプラットフォーム固有のプロジェクトから呼び出す必要のあるメソッドです (例: PCL プロジェクトからは呼び出すことができません)。
これ以外のすべての SDK メソッドは、FHSDK.dll アセンブリーで定義される FH クラスを使用して呼び出されます。このアセンブリーは他の PCL プロジェクトから参照することができます。このようにクロスプラットフォームソリューションに PCL プロジェクトが含まれる場合には、このアセンブリーファイルを参照し、そこから SDK 機能を呼び出すことができます。
4.5. HttpClient の独自オプションの使用
デフォルトで、.NET SDK は Microsoft HTTP クライアントライブラリを使用してすべての HTTP 要求を実行します。ただし、Xamarin を使用して iOS と Android アプリを開発している場合には、ModernHttpClient を選択する方が良いでしょう。これを使用するには、アプリに ModernHttpClient コンポーネントをインストールすることのみが必要であり、以下のようにこれを使用します。
//the following should be called BEFORE FHClient.Init is called //use ModernHttpClient on Android FHHttpClientFactory.Get = (() => new HttpClient(new OkHttpNetworkHandler()));
上記のいずれも使用することを望まない場合は、いずれかの HTTP (または REST) を使用できます。この場合、必要になるのはアプリのクラウドホストのみで、以下のメソッドを使って取得できます。
string cloudHost = FH.GetCloudHost();
ただし、この方法には、一部のデータが要求内に欠落するため、プラットフォームによって提供される分析サービスをアプリで使用できなくなるという不利な点があります。分析サービスを再度有効にするには、以下のメソッドで返されるメタデータを、ヘッダーのセットとして各 HTTP 要求に追加することのみが必要になります。
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 value
foreach(var item in metaData){
requestMessage.Headers.Add(item.Key, item.Value);
}
...4.6. SDK の使用
SDK 内で利用可能な API についての詳細は API Docs を参照してください。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.