iOSアプリを開発する

MDX APIを使用してCitrix Endpoint Managementのモバイルアプリを有効にできます。ここではMDXアプリSDKをアプリライブラリに統合する方法と、アプリをテスト、認定、発行する手順について説明します。

MDXアプリSDKの使用方法

以下は、APIの使用方法例です。

  • アプリで制限を適用する

    アプリがいつ特定の機能または操作にアクセスできるかを、管理対象アプリかラップされたアプリかを表示するAPI呼び出しに基づいて制御できます。たとえば、アプリが管理されていない、またはラップされていない場合、ユーザーがすべての機能および操作にアクセスするようにできます。アプリがラップされているが管理されてはいない場合、特定の機能または操作を制限できます。アプリがラップされ、管理されている場合、アプリに追加の制限を適用できます。

  • Citrix Endpoint Management設定に基づいて操作を実行する

    たとえば、Citrix Endpoint Management管理者が[Wi-Fiを必須とする]ポリシーを[オン]に設定すると、ユーザーに通知が表示されるようにするとします。組織のネットワーク内部からのみアプリの実行が許可されます。APIを使用してポリシー設定を検索し、ポリシー値に基づいてコードを変更します。

  • カスタムポリシーに基づいて操作を実行する

    APIを使用して、アプリのカスタムポリシーを読み取ることができます。たとえば、Citrix Endpoint Management管理者がアプリに通知を表示できるようにします。そのためには、Citrix Endpoint Managementコンソールで空のカスタムポリシー、または管理者が入力したシステムメッセージが含まれるカスタムポリシーを作成します。アプリが管理対象である場合、Citrix Endpoint Management管理者によってポリシー値が変更されると、アプリがそれを検出します。ポリシー値にメッセージが含まれていると、アプリは通知を表示します。

API定義については、「iOSのMDX API」を参照してください。

SDKをアプリライブラリに統合する

MDXアプリSDKをiOSアプリに追加するには、次のセクションで説明するようにアプリにSDKフレームワークを関連付けます。Objective-CをベースにしたiOS向けMDXアプリSDKは、ヘッダーファイルと静的ライブラリのコレクションです。

  1. 最新のMDX Toolkitがインストールされていない場合は、インストールします。

    1. Citrix Endpoint Managementのダウンロードページにログオンします。

    2. XenMobile AppsおよびMDX Toolkitを展開します。

    3. インストールするMDX Toolkitのバージョンを見つけてリンクをクリックし、ダウンロードを開始します。

    4. macOS 10.9.4以降およびXcode 7以降のmacOS FinderツールでOpen MDXToolkit.mpkgを開きます。

      Xcode 8以降では、アプリをデバイスにプッシュする前にプロジェクトファイルを消去する必要があるという既知の問題が存在します。

      インストールパスは、Applications/Citrix/MDXToolkitです。

      インストール先フォルダー

    MDXアプリSDKファイルは、Applications/Citrix/MDXToolkit/data/MDXSDKで見つかります。

    コンピューターでMDX Toolkitをインストール後、MDXフレームワークをXcodeプロジェクトに統合します。

  2. data/MDXSDKフォルダーをApple Xcodeプロジェクトに追加します。このためには、フォルダーをXcodeプロジェクトにドラッグします。

  3. アプリプロジェクトでコンパイル済みのヘッダーファイルで行を変更して、次の例のようにMDX.frameworkからMDX.hをインポートします。

        #ifdef__OBJC__
        _
        //import MDX extensions
        #import <AVFoundation/AVFoundation.h>
        #import <SystemConfiguration/SCNetworkReachability.h>
        #import <MDX/MDX.h>
        #endif
    

    Network OnlyバージョンのMDXフレームワークのみを含める場合は、以下を変更する必要があります。変更前:

    #import <MDX/MDX.h.>
    

    変更後:

    #import <MDXNetworkOnly/MDXNetworkOnly.h>
    

    MDX SDKフレームワークによって公開されたAPIを明示的に呼び出すアプリケーションをラップする場合、MDX.hとMDXNetworkOnly.hの行はオプションです。

    アプリケーションが明示的にMDX SDK APIを呼び出すには、アプリケーションの構築時にMDX.frameworkまたはMDXNetworkOnly.frameworkバイナリにリンクされているか、これらを埋め込んでいる必要があります。

    MDX Toolkitでラップされた、事前設定済みサードパーティ製エンタープライズアプリケーションでは、明示的なMDX SDK API呼び出しを行わないため、ビルドの変更は不要です。

    コンピューターでMDX Toolkitをインストール後、MDXフレームワークをXcodeプロジェクトに統合します。

  4. data/MDXSDK/MDX.framework(またはdata/MDXSDK/MDXNetworkOnly.framework)を、アプリケーションワークスペースの[General]プロパティパネルの[Embedded Binaries]セクションにドラッグします。これによって、動的フレームワークが、アプリケーションと共にインストールされたアプリケーションバンドルに含まれるフレームワークに追加されます。さらに、このフレームワークは、アプリケーションにリンクされているフレームワークの一覧に自動的に追加されます。

1つのMDXフレームワークのみを追加する必要があります。

  1. data/MDXSDK/CitrixLogger.frameworkを、アプリケーションワークスペースの[General]プロパティパネルの[Embedded Binaries]セクションにドラッグします。

  2. 実行スクリプトを追加して、Xcodeの有効なアーキテクチャの一覧に表示されない埋め込みフレームワークからアーキテクチャを削除します。これは、埋め込みフレームワークにApple Storeアプリケーションビルド用のiOS Simulatorアーキテクチャを含めることはできないというAppleの要件に対応するためです。このスクリプトは、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
    
  3. 実行スクリプトを追加して、SDKPrepコマンドラインを追加します。

    • Xcodeでプロジェクトを選択してから、Build Phasesタブを選択します。左上のプラス(+)アイコンをクリックして、New Run Script Phaseをクリックします。
    • 新しいRun Scriptを開いて、Scriptフィールドに次のテキストを入力します。PACKAGEID、APPTYPE、STOREURL、POLICYFILE変数をアプリに適用できる値に変更してください。PACKAGEIDはアプリの一意の識別子(通常UUID)です。アプリが構築されるとMDX Toolkitは一意のパッケージIDを生成するため、これは必須ではありません。パッケージIDを入力する場合、コマンドを使用してラップするすべての新しいアプリバージョンに一意のIDであることを確認してください。
    • アプリがエンタープライズアプリの場合、デフォルト値であるパラメーター -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}"
    

    例:

        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}"
    
    パラメーター 説明
    -in ファイル名 Xcodeで生成された.appファイルへのパス。MDX ToolkitがMDX固有のリソースをファイルに埋め込みます。
    -out ファイル名 .mdxファイルの移動先パス。このファイルを使用してCitrix Endpoint Managementサーバーでアプリを公開します。
    -storeURl URL .mdxファイルに埋め込まれたアプリのアプリストアURL。このパラメーターは-StoreURLで使用できません。
    -appType キーワード キーワードは「Enterprise」、「Premium」、「General」です。
    -packageId UUID アプリの一意のパッケージID。通常はUUID。アプリが構築されるとMDX Toolkitは一意のパッケージIDを生成するため、必須ではありません。パッケージIDを入力する場合、コマンドを使用してラップするすべての新しいアプリバージョンに一意のIDであることを確認してください。一意の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。
  4. プロジェクトをコンパイルしてアプリのバイナリを生成します。

    • Xcodeでアプリを構築して、正しく構築されたことを検証します。
    • [製品]>[アーカイブ] を選択してアプリをアーカイブします。
    • アプリがアーカイブされた後、Xcode Organizerが自動で開きます。
    • Organizerでアーカイブされたビルドを選択して[エクスポート]を選択します。
    • 適用するエクスポート方法を選択して[次へ]をクリックします。

    メッセージに従って、アプリをIPAファイルにエクスポートします。

  5. プロジェクトをコンパイルし、アーカイブして、MDXフレームワークが埋め込まれた.ipaパッケージのアプリバンドルを生成します。XcodeはCitrix Endpoint Managementサーバーにアップロードする関連MDXファイルを生成します。Xcodeのビルドおよびアーカイブ手順でIPAバンドルが作成された後、MDXファイルでSetInfoコマンドを実行します。また、コマンド-embedBundleオプションを実行して、最終的なIPAファイルをMDXファイルに挿入します。その後、アプリを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"
    
  6. iTunes Connect Webサイト経由の配布用にアプリを構成すると、アプリストアまたはTestFlightに直接提出できます。

アプリのアップグレードに関する考慮事項

Citrix Endpoint Managementソフトウェアはリリース間で大幅に変更される可能性があります。最新の機能やバグ修正を利用するには、最新バージョンのMDX Toolkitを使用してアプリをラップする必要があります。以前にMDX Toolkitで生成された変更後のファイルではなく、元の.ipaまたは.apkファイルをラップするように注意してください。

MDXアプリSDKの関連バージョンを使用してください。