iOSアプリの開発
MDX APIを使用して、Citrix Endpoint Management向けにモバイルアプリを有効にできます。この記事では、MDX App SDKをアプリライブラリに統合する方法と、アプリをテスト、認定、公開するために必要な手順について説明します。
-
MDX App SDKの使用方法
-
APIの使用例をいくつか示します。
-
アプリへの制限の適用
API呼び出しがアプリが管理されているか、またはラップされているかを示しているかどうかに基づいて、アプリが特定の機能またはアクションへのアクセスを許可するタイミングを制御できます。たとえば、アプリが管理されていないか、またはラップされていない場合、ユーザーにすべての機能とアクションへのアクセスを許可する場合があります。アプリがラップされているが管理されていない場合、特定の機能またはアクションを制限する場合があります。アプリがラップされていて管理されている場合、アプリに追加の制限を設ける場合があります。
- Citrix Endpoint Managementポリシー設定に基づくアクションの実行
Citrix Endpoint Management管理者が[Wi-Fi必須]ポリシーを[オン]に設定した場合に、ユーザーに通知を表示したいとします。これは、アプリが組織のネットワーク内からのみ実行を許可されることを意味します。APIを使用してポリシー設定を検索し、そのポリシー値に基づいてコードを変更できます。
- カスタムポリシーに基づくアクションの実行
APIを使用して、アプリ内のカスタムポリシーを読み取ることができます。たとえば、Citrix Endpoint Management管理者がアプリ内に通知を表示できるようにしたいとします。そのためには、空のカスタムポリシーを作成するか、Citrix Endpoint Managementコンソールで管理者が提供するシステムメッセージを含むカスタムポリシーを作成します。アプリが管理されている場合、Citrix Endpoint Management管理者がポリシー値を変更したときにそれを検出できます。ポリシー値にメッセージが含まれている場合、アプリは通知を表示します。
APIの定義については、「iOS用API」を参照してください。
アプリライブラリへのSDKの統合
MDX App SDKをiOSアプリに追加するには、このセクションで説明するように、SDKフレームワークをアプリにリンクします。Objective-CをベースとするiOS用MDX App SDKは、ヘッダーファイルと静的ライブラリのコレクションです。
-
最新のMDX Toolkitをまだインストールしていない場合は、今すぐインストールしてください。
-
Citrix Endpoint Managementダウンロードページにログオンします。
-
XenMobile® Apps and MDX Toolkitを展開します。
-
インストールするMDX Toolkitのバージョンを見つけて、ダウンロードを開始するためのリンクをクリックします。
-
macOS 10.9.4以降およびXcode 7以降で、macOS Finderツールを使用してMDXToolkit.mpkgを開きます。
Xcode 8以降では、アプリをデバイスにプッシュする前にプロジェクトファイルをクリーンアップする必要があるという既知の問題があります。
インストールパスはApplications/Citrix/MDXToolkitです。

MDX App SDKファイルはApplications/Citrix/MDXToolkit/data/MDXSDKにあります。
コンピューターにMDX Toolkitをインストールした後、MDX FrameworkをXcodeプロジェクトに統合します。
-
-
data/MDXSDKフォルダーをApple Xcodeプロジェクトに追加します。これを行うには、そのフォルダーをXcodeプロジェクトにドラッグします。
-
アプリプロジェクトのプリコンパイル済みヘッダーファイル内のコード行を修正して、次の例に示すようにMDX.frameworkからMDX.hをインポートします。
#ifdef__OBJC__ _ //import MDX extensions #import <AVFoundation/AVFoundation.h> #import <SystemConfiguration/SCNetworkReachability.h> #import <MDX/MDX.h> #endif <!--NeedCopy-->MDXフレームワークのネットワークのみのバージョンを含める場合は、以下を置き換える必要があります。
#import <MDX/MDX.h.> <!--NeedCopy-->次のコードに置き換えます。
#import <MDXNetworkOnly/MDXNetworkOnly.h> <!--NeedCopy-->MDX SDKフレームワークによって公開されているAPIへの呼び出しを明示的に発行するアプリケーションをラップする場合、MDX.hおよびMDXNetworkOnly.hの行はオプションです。
アプリケーションがMDX SDK API呼び出しを明示的に発行する場合、アプリケーションのビルド時にMDX.frameworkまたはMDXNetworkOnly.frameworkバイナリにリンクされ、埋め込まれている必要があります。
- MDX Toolkitによってラップされる事前構築済みのサードパーティエンタープライズアプリケーションは、明示的なMDX SDK API呼び出しを行わないため、ビルドの変更は必要ありません。
コンピューターにMDX Toolkitをインストールした後、MDX FrameworkをXcodeプロジェクトに統合します。
-
data/MDXSDK/MDX.framework(またはdata/MDXSDK/MDXNetworkOnly.framework)を、アプリケーションワークスペースの[General]プロパティパネルの[Embedded Binaries]セクションにドラッグします。これにより、その動的フレームワークが、アプリケーションとともにインストールされるアプリケーションバンドルに含まれるフレームワークに追加されます。さらに、そのフレームワークは、アプリケーションにリンクされるフレームワークのリストに自動的に追加されます。
MDXフレームワークは1つだけ追加してください。
-
data/MDXSDK/CitrixLogger.frameworkを、アプリケーションワークスペースの[General]プロパティパネルの[Embedded Binaries]セクションにドラッグします。
-
Xcodeの有効なアーキテクチャのリストに表示されない埋め込みフレームワークからアーキテクチャを削除する実行スクリプトを追加します。これは、Apple Storeアプリケーションビルドの場合、埋め込みフレームワークにiOSシミュレーターアーキテクチャを含めることができないというAppleの要件に対応するものです。このスクリプトは、Apple Store以外のビルドとApple Storeタイプのビルドの両方のすべてのビルドターゲットを自動的に処理します。
echo "Strip unnecessary archs from Embedded Frameworks" cd "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}" for file in $(find . -type f -perm +111); do if ! [[ "$(file "$file")" == *"dynamically linked shared library"* ]]; then continue fi # Get architectures for current file archs="$(lipo -info "${file}" | rev | cut -d ':' -f1 | rev)" # Strip any archs from frameworks not valid for current app build for arch in $archs; do if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then lipo -remove "$arch" -output "$file" "$file" || exit 1 fi done done <!--NeedCopy-->-
- SDKPrepコマンドラインを追加する実行スクリプトを追加します。
- Xcodeでプロジェクトを選択し、[Build Phases]タブを選択します。左上隅にあるプラス(+)アイコンをクリックし、[New Run Script Phase]をクリックします。
- 新しい[Run Script]を開き、[Script]フィールドに次のテキストを入力します。PACKAGEID、APPTYPE、STOREURL、およびPOLICYFILE変数を、アプリに適用可能な値に変更してください。PACKAGEIDはアプリの一意の識別子であり、通常はUUIDです。MDX Toolkitはアプリケーションがビルドされるたびに一意のpackageIDを生成するため、これは必須ではありません。packageIDを指定する場合は、このコマンドを使用してラップする新しいアプリバージョンごとに一意であることを確認してください。
- このアプリがエンタープライズアプリの場合は、デフォルト値であるパラメーター -Apptype Enterpriseを使用します。ISVアプリの場合は、PremiumまたはGeneralの値を使用できます。
注:
APPTYPEでサポートされているキーワードは、Enterprise、Premium、およびGeneralです。
export PACKAGEID="your-project-PackageID" export APPTYPE="keyword" export STOREURL="http://your-store-URL" export DATE=`date +%Y-%m-%d_%H-%M-%S` export POLICYFILE=${SRCROOT}/${EXECUTABLE_NAME}/${EXECUTABLE_NAME}_policy_metadata.xml /Applications/Citrix/MDXToolkit/CGAppCLPrepTool SdkPrep -in "${CODESIGNING_FOLDER_PATH}" -out "/Users/<UserName>/Downloads/${EXECUTABLE_NAME}_${DATE}.mdx" -storeUrl "${STOREURL}" -appIdPrefix "ABCDEFGH" -packageId "${PACKAGEID}" -policyXML "${POLICYFILE}" -appType "${APPTYPE}" -entitlements "${CODE_SIGN_ENTITLEMENTS}" <!--NeedCopy-->例:
export PACKAGEID="a96d6ed5-6632-4739-b9b6-9ad9d5600732" export APPTYPE="Enterprise export STOREURL="http://example.com/12345" export DATE=`date +%Y-%m-%d_%H-%M-%S` export POLICYFILE=${SRCROOT}/${EXECUTABLE_NAME}/${EXECUTABLE_NAME}_policy_metadata.xml /Applications/Citrix/MDXToolkit/CGAppCLPrepTool SdkPrep -in "${CODESIGNING_FOLDER_PATH}" -out "/Users/<UserName>/Downloads/${EXECUTABLE_NAME}_${DATE}.mdx" -storeUrl "${STOREURL}" -appIdPrefix "ABCDEFGH" -packageId "${PACKAGEID}" -policyXML "${POLICYFILE}" -appType "${APPTYPE}" -entitlements "${CODE_SIGN_ENTITLEMENTS}" <!--NeedCopy--> -
| パラメーター | 説明 |
|---|---|
| -in ファイル名 | Xcodeによって生成された.appファイルへのパス。MDX Toolkitは、MDX固有のリソースをこのファイルに埋め込みます。 |
| -out ファイル名 | .mdxファイルの宛先パス。このファイルを使用して、Citrix Endpoint Managementサーバーにアプリを公開します。 |
| -storeURl URL | アプリのApp Store URLで、.mdxファイルに埋め込まれます。このパラメーターを-StoreURLと併用することはできません。 |
| -appType キーワード | キーワードは「Enterprise」、「Premium」、「General」です。 |
| -packageId UUID | このアプリの一意のパッケージIDで、通常はUUIDです。MDX Toolkitはアプリケーションがビルドされるたびに一意のpackageIDを生成するため、必須ではありません。packageIDを指定する場合は、このコマンドを使用してラップする新しいアプリバージョンごとに一意であることを確認してください。一意のIDは、すべてのプロビジョニングプロファイルに関連付けられています。プロビジョニングプロファイル(.mobileprovision)をテキストエディターで開くと、UUIDを含む以下のXMLタグが表示されます。<key>UUID</key> <string>4e38fb18-88b0-4806-acfa-e08bf38ec48d</string>
|
| -policyXML ファイル名 | アプリのMDXポリシテンプレートファイルへのパス。 |
| -entitlements ファイル名 | 必須(バージョン10.3.10で導入)。アプリのエンタイトルメントファイルへのパス。MDX Toolkitは、com.citrix.mdxのキーチェーンアクセスグループエントリをこのファイルに追加します。これは、iOSキーチェーンを使用して、同じ証明書で署名された他のMDXアプリとアプリがシークレットを共有するために必要です。 |
| -appIdPrefix プレフィックス | アプリケーション識別子プレフィックス - Apple Developerアカウントに関連付けられているチームID。 |
-
プロジェクトをコンパイルし、アプリバイナリを生成します。
- Xcodeでアプリをビルドし、正しくビルドされることを確認します。
- [Product] > [Archive]を選択してアプリをアーカイブします。
- Xcodeオーガナイザーは、アプリがアーカイブされた後に自動的に開きます。
- オーガナイザーでアーカイブされたビルドを選択し、[エクスポート] をクリックします。
- 該当するエクスポート方法を選択し、[次へ] をクリックします。
プロンプトに従って、アプリをIPAファイルにエクスポートします。
-
プロジェクトをコンパイルしてアーカイブし、埋め込みMDXフレームワークを含むアプリバンドル(.ipaパッケージ)を生成します。Xcodeは、Citrix Endpoint Managementサーバーにアップロードする対応するMDXファイルを生成します。Xcodeのビルドおよびアーカイブ手順でIPAバンドルが作成された後、MDXファイルに対してSetInfoコマンドを実行します。また、最終的なIPAファイルをMDXファイルに挿入するために、コマンドの-embedBundleオプションも実行します。その後、アプリをCitrix Endpoint Managementにアップロードできます。
/Applications/Citrix/MDXToolkit/CGAppCLPrepTool SdkPrep -in "${CODESIGNING_FOLDER_PATH}" -out "/Users/<UserName>/Downloads/${EXECUTABLE_NAME}_${DATE}.mdx" " -embedBundle "/Users/deva/Desktop/{EXECUTABLE_NAME}.ipa" <!--NeedCopy--> -
iTunes Connectウェブサイト経由で配布するようにアプリを設定している場合は、App StoreまたはTestFlightに直接提出することもできます。
アプリのアップグレードに関する考慮事項
Citrix Endpoint Managementソフトウェアは、リリース間で大幅に変更される可能性があります。最新の機能とバグ修正を利用するには、最新バージョンのMDX Toolkitを使用してアプリをラップする必要があります。以前にMDX Toolkitによって生成された変更済みのファイルではなく、元の.ipaまたは.apkファイルをラップするようにしてください。
対応するバージョンのMDX App SDKを使用してください。