iOSモバイルアプリのラッピング

ここではCitrix Endpoint Managementがエンタープライズアプリをラップする方法と、開発者がISVアプリをラップする方法について説明します。iOSモバイルアプリをラップするには、MDX Toolkitを使用します。MDX Toolkitには、macOSグラフィカルユーザーインターフェイスツールとmacOSコマンドラインツールが含まれます。macOSコマンドラインツールにはカスタマイズのオプションがあり、アプリのラッピングプロセスを自動化するスクリプトから参照でき、MDXポリシーを事前設定できます。

ラップされたアプリのファイルタイプは.mdxです。.mdxファイルをCitrix Endpoint Managementコンソールにアップロードし、Citrix Endpoint ManagementコンソールでCitrix Endpoint Management Storeが適用する特定のアプリの詳細およびポリシー設定を構成します。ユーザーがサインオンすると、ストアにアプリが表示されます。ユーザーはアプリをサブスクライブし、ダウンロードして、デバイス上にインストールできます。

以下の図は、MDX Toolkitのインストールから業務用モバイルアプリのテストまで、アプリをラップする手順の概要です。図の下の一覧は、関連するトピックです。

iOSアプリのアプリラッピングフロー

番号1の詳細は、以下を参照してください。

番号2の詳細は、以下を参照してください。

重要:

アプリのラップに使用されるMDX Toolkitのバージョンと互換性があるSecure Hubのバージョンでユーザーデバイスを更新してください。更新しない場合、互換性がないことを示すエラーメッセージが表示されます。詳しくは、「Citrix Endpoint Managementの互換性」を参照してください。

Apple DEPを介したiOSデバイスの展開

Apple Device Enrollment Program(DEP)を利用するには、Apple Deployment Programに登録する必要があります。Apple DEPを使用してCitrix Endpoint ManagementでiOSデバイスおよびmacOSデバイスを展開し、管理できます。Apple Deployment Programに登録する方法など詳しくは、「Apple DEPを介したiOSおよびmacOSデバイスの展開」を参照してください。

プロビジョニングプロファイルの作成

物理的iOSデバイス(Apple App Storeのアプリ以外)上で実行する任意のアプリケーションにプロビジョニングプロファイルおよび対応する配布用証明書で署名する必要があります。配布用のプログラムには、iOS Developer Program(Ad-Hoc)およびiOS Developer Enterprise Programという2種類があります。アプリをラップするには、Enterpriseプロファイルの使用をお勧めします。AppleのWebサイトからプログラムに登録できます。

Enterpriseプロファイルでは、アプリを実行できるデバイスの数に制限はありません。Ad Hocプロファイルでは、最大でおよそ100台のデバイス上でアプリを実行できます。

Apple社は、新しいEnterpriseアカウントに対するワイルドカードApp IDのサポートを廃止しました。使用するEnterpriseアカウントがワイルドカードApp IDをサポートしない場合、次のように複数の特定App IDおよびプロビジョニングプロファイルを作成する必要があります。

  1. 有効なiOS配布用証明書があるかを検証します。既存のiOS Developer for Enterprise証明書とプロビジョニングプロファイルは、iOS 9との互換性がない可能性があります。詳しくは、「iOS 9向け業務用モバイルアプリのラッピング」を参照してください。

  2. Apple Enterprise Developerポータルから、MDX Toolkitでラップする各アプリで新しいプロビジョニングプロファイルと一意で明示的なApp IDを作成します。有効なApp IDの例:com.CompanyName.ProductName。

  3. Apple Enterprise Developerポータルから、[Provisioning Profiles]>[Distribution] に移動して、社内プロビジョニングプロファイルを作成します。前述の手順で作成されたApp IDごとに、この手順を繰り返します。

  4. すべてのプロビジョニングプロファイルをダウンロードします。

使用中のApple EnterpriseアカウントがワイルドカードApp IDをサポートしている場合、引き続きワイルドカード型のプロビジョニングプロファイルを使用してアプリをラップできます。ただし、Secure Mailがバックグラウンドで動作している場合に通知にAppleプッシュ通信サービス(APNs)を使用するには、特定型のプロビジョニングプロファイルとApp IDを使用する必要があります。

MDXアプリをインストールするいずれのデバイス上にも、プロビジョニングされたプロファイルが必要です。プロファイルは、メールに添付することでユーザーデバイスに配布できます。ユーザーは添付されたプロファイルをクリックして、iOSデバイス上にプロファイルを追加できます。

プロビジョニングプロファイルと配布証明書について詳しくは、「Apple Developer Account Help」を参照してください。

アプリのアップグレード

重要: App IDの変更またはワイルドカードApp IDのプロビジョニングプロファイルの一部使用がアプリのアップグレードに影響を与えることがあるため、アップグレード前に確認してください。

  • App IDが変更されない限り、以前にラップされたアプリはインプレースでアップグレードされます。たとえば、バンドルIDをcom.citrix.mailからcom.example.mailに変更する場合のアップグレードパスはありません。ユーザーはこのアプリを再インストールする必要があります。デバイスは、このアプリを新しいアプリと認識します。新しいアプリと以前のバージョンのアプリはデバイスに共存できます。
  • com.citrixが含まれるバンドルIDでアプリをラップするためにcom.xxxxのようなプロビジョニングプロファイルの一部を使用すると、インストール済みのMDXでラップされたアプリを削除して、最新のMDX Toolkitでラップされたアプリをインストールしてください。その結果、バンドルIDはcom.citrix.mailからcomに変更され、ユーザーはアプリを再インストールする必要があります。
  • インプレースアップグレードは、アプリが完全なワイルドカードApp IDでラップされ、新しいバージョンのアプリのApp IDとインストールされたアプリのApp IDが一致する場合に成功します。

ポリシーと業務用モバイルアプリ

注:

MDX 10.7.5リリースが、業務用モバイルアプリのラッピングをサポートする最後のリリースです。MDX 10.7.10以降のリリース、またはMDX Serviceを使用して業務用モバイルアプリ10.7.5以降のバージョンをラップすることはできません。ユーザーは、パブリックアプリケーションストアから業務用モバイルアプリにアクセスする必要があります。

すべての業務用モバイルアプリに適用できるデフォルトの一般的なポリシーセットと、一部の業務用モバイルアプリのための特定のポリシーセットが使用できます。ポリシーのファイル名はバンドルIDに基づきます。デフォルトでは、Citrix Endpoint Managementアプリのポリシーのファイル名はcom.citrix.app_policy_metadata.xmlという形式です(appは「mail」などの名前です)。

ワイルドカードApp IDをサポートしていないApple Enterpriseアカウントがあれば、Citrix Endpoint Managementアプリをラップする場合にバンドルIDで会社の識別子を変更する必要があります。たとえば、Secure MailのバンドルIDは、com.citrix.mailです。この場合、識別子の「citrix」を会社の識別子に置き換える必要があります。会社の識別子が「example」であれば、バンドルIDはcom.example.mailです。このアプリをラップする場合、ポリシーのファイル名はcom.example.mail_policy_metadata.xmlになります。

どのポリシーファイルをアプリに適用するかを決定するために、MDX Toolkitは以下の順番でファイルを探し、最初に見つかったファイルを使用します。

  1. 前述の例のようにバンドルIDに一致するファイル名(例:com.example.mail_policy_metadata.xml)。
  2. 元のバンドルIDに一致するファイル名(例:com.citrix.mail_policy_metadata.xml)。
  3. デフォルトの一般的なポリシーファイルに一致するファイル名(例:policy_metadata.xml)。

使用中のバンドルIDや元のバンドルIDに一致するファイルを変更して、特定のCitrix Endpoint Managementアプリでデフォルトの独自のポリシーセットを作成できます。

GUIを使ったエンタープライズアプリラッピング

以下の手順は、Citrix Endpoint Managementから展開するエンタープライズアプリのラッピングに関する一般的なプロセスです。ISVアプリラッピングの一般的なプロセスについては、「GUIを使ったISVアプリラッピング」を参照してください。

重要: グラフィカルユーザーインターフェイスを使用してiOSアプリをラップする前に、Macのキーチェーンアクセスに秘密鍵と証明書の両方をインストールする必要があります。関連付けられた配布用証明書にキーチェーンアクセスにインストールされた秘密鍵がない場合、グラフィカルユーザーインターフェイスの[ iOS Distribution Certificate]一覧には事前に設定されません。詳しくは、後述の「Toolkitが配布用証明書を見つけられない場合にキーチェーンを修復する」を参照してください。

  1. ツールキットを使用してアプリをラップする前に、必要な場合に元に戻すことができるよう、アプリの元のバージョンのバックアップを作成します。

  2. iOSアプリケーションフォルダーからMDX Toolkitを開始して、[For IT administrators]を選択して、[Next] をクリックします。

    MDX Toolkitの展開オプション

  3. [Browse] をクリックしてファイルを選択し、[Next] をクリックします。

    MDX Toolkitによる展開用ファイルの選択

  4. [Verify App Details]画面がアプリから取得された情報を表示します。必要に応じて、事前に入力された情報を変更します。オプションで、OSの最小および最大バージョンを指定し、アプリによる実行を許可しないデバイスの種類を一覧表示します。アプリをCitrix Endpoint Managementにアップロード後、アプリの詳細は変更できます。

    MDX Toolkitのアプリの詳細

  5. [Create Citrix Mobile App]画面で、[Browse] をクリックし、プロビジョニングプロファイルを選択して、配布用証明書を選択します。iOS証明書一覧が空の場合、MDX Toolkitを実行しているマシンでキーチェーンを修復する必要があります。詳しくは、後述の「Toolkitが配布用証明書を見つけられない場合にキーチェーンを修復する」を参照してください。

  6. 明示的なApp IDを持つプロビジョニングプロファイルを選択した場合、ツールはアプリIDの確認を求めます。例えば、Citrix Endpoint ManagementアプリのバンドルIDはcom.citrix.ProductNameです。使用するプロビジョニングプロファイルでは、「citrix」ではなく会社の識別子に置き換える必要があります。

    [Yes][Create] の順にクリックします。

    MDX ToolkitのApp IDプロンプト

  7. ワイルドカードApp IDを持つプロビジョニングプロファイルを選択すると、ツールに使用可能なApp ID一覧が表示されます。使用するApp IDが一覧にない場合、別のプロビジョニングプロファイルを選択します。App IDの選択後、[Create] をクリックします。

    MDX ToolkitのワイルドカードApp IDプロンプト

  8. MDXパッケージが作成されると、ツールキットが通知します。別のアプリをラップするには、[Start Over] をクリックします。

    MDX Toolkitの成功メッセージ

    ツールキットはラップされたiOSアプリのファイル名の最後に_iOSを追加します。

コマンドラインを使ったiOSエンタープライズアプリケーションラッピング

注:

サードパーティ製アプリはアプリベンダーから直接購入してください。AppleストアからダウンロードされるiOSアプリは暗号化されており、ラップできません。

ツールキットを使用してアプリをラップする前に、必要な場合に元に戻すことができるよう、アプリの元のバージョンのバックアップを作成します。

次の例は、デフォルトの設定を使った基本的なアプリラッピングコマンドを示しています。特定のシステムについて、太字の情報を変更します。末尾のバックスラッシュは、コマンドが次の行に続いていることを意味しています。コマンドを実行する前に、これらの記号を削除してください。

これらのコマンドを実行するには、コマンドラインで/Applications/Citrix/MDXToolkit/ディレクトリに移動します。

基本的なiOSラッピングコマンドラインは次のとおりです。

./CGAppCLPrepTool \
Wrap \
–Cert CERTIFICATE \
–Profile PROFILE \
-bundleID ID \
–in INPUT_FILE \
–out OUTPUT_FILE

以下は、このコマンドラインオプションの例です。

./CGAppCLPrepTool \
Wrap \
–Cert “iPhone Developer: Joe Admin (12MMA4ASQB)” \
–Profile “team_profile.mobileprovision” \
-bundleID “com.CompanyABC.Sample” \
–in “~/Desktop/SampleApps/Sample.ipa” \
–out “~/Desktop/SampleApps/Sample.mdx”

以下は、前述のコマンドに追加できるオプションの例です。

-appName “Wrapped Sample app”

-appDesc “This is my newly wrapped iOS application.”

このオプションは両方とも、アプリから読み取られた値をデフォルトで使用します(可能な場合)

このオプションについて詳しくは、「コマンドオプション」を参照してください。インラインドキュメントを表示するには、–helpオプションを使用します。

コマンドオプション

Wrapコマンド

  • Help: このコマンドのヘルプを表示します。
  • In: 必須。ラッピングするアプリのパスおよびファイル名です。
  • Out: 任意。出力される.mdxファイルのパスおよびファイル名です。このオプションを省略すると、入力ファイルと同じパスおよびファイル名と、mdx拡張子が使用されます。
  • outBundle: Intuneにアップロードする.ipaファイルを生成する場合に必要です。出力される.ipaファイルのパスおよびファイル名です。
  • Cert: 必須。アプリに署名するために使用する証明書の名前です。
  • Profile: 必須。アプリに署名するために使用するプロビジョニングファイルの名前です。
  • bundleID: ワイルドカードApp IDをサポートしないEnterpriseアカウントに必要です。これは、使用するAppleバンドルIDです。MDX Toolkitは、バンドルIDおよびプロビジョニングファイルに互換性があるかを検証します。
  • Upgrade: これはレガシーアプリのためのオプションで、廃止予定です。ワイルドカードプロビジョニングプロファイルの一部を使用した場合のインプレースアップグレードに使用されます。このオプションは新しいバイナリが以前と同じバージョンのライセンスで署名されているかを確認します。ライセンスが一致しない場合、Secure Hubからアップグレードをインストールしようとしても失敗します。
  • AppName: 任意。アプリから取得したアプリ名(可能な場合)。
  • AppDesc: 任意。アプリから取得したアプリの説明(可能な場合)。
  • MinPlatform: 任意。サポートされるプラットフォームの最小バージョン。デフォルトは空白です。
  • MaxPlatform: 任意。サポートされるプラットフォームの最大バージョン。デフォルトは空白です。
  • ExcludedDevices: 任意。アプリの実行が許可されていないデバイスの種類一覧です。デフォルトは空白です。
  • PolicyXML: 任意。置換用のXMLポリシー定義ファイルとパスです。デフォルトは組み込みポリシー定義です。例:-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml. 詳しくは、次の「iOSアプリのMDXポリシーの事前設定」を参照してください。
  • useNetworkOnlylib: このオプションではMDX動的ライブラリのネットワーク専用軽量バージョンでアプリケーションをラップします。このオプションを使用してラップされたアプリケーションは、Intuneでのみ管理されるか、非管理対象として実行されます。MDXで管理することはできません。
  • LogFile: 任意。ログファイルの名前です。
  • LogWriteLevel: 任意。ログレベルは1〜4です。
  • LogDisplayLevel: 任意。通常出力のログレベルは0〜4です。

signコマンド

  • Help: このコマンドのヘルプを表示します。
  • In: 必須。ラッピングするアプリのパスおよびファイル名です。
  • Out: 任意。出力される.mdxファイルのパスおよびファイル名です。このオプションを省略すると、入力ファイルと同じパスおよびファイル名と、mdx拡張子が使用されます。
  • Cert: 必須。アプリに署名するために使用する証明書の名前です。
  • Profile: 必須。アプリに署名するために使用するプロビジョニングファイルの名前です。

setinfoコマンド

  • Help: このコマンドのヘルプを表示します。
  • In: 必須。変更するアプリのパスおよびファイル名です。
  • Out: setinfoの出力パスまたはファイル名は入力時と異なるものを使用する必要があります。
  • AppDesc: 任意。アプリの説明です。指定されていない限り変更しません。
  • MinPlatform: 任意。サポートされる最小SDKレベルです。指定されていない限り変更しません。
  • MaxPlatform: 任意。サポートされる最大SDKレベルです。指定されていない限り変更しません。
  • ExcludedDevices: 任意。アプリの実行が許可されていないデバイスの種類一覧です。指定されていない限り変更しません。
  • StoreURL: 任意。アプリストアのアプリのURLです。指定されていない限り変更しません。
  • PolicyXML: 任意。置換用のXMLポリシー定義ファイルとパスです。デフォルトは組み込みポリシー定義です。例:-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml. 詳しくは、次の「iOSアプリのMDXポリシーの事前設定」を参照してください。

iOSアプリのMDXポリシーの事前設定

MDX Toolkitコマンドラインツールでラップするアプリには、MDXポリシーを事前設定できます。アプリを追加する場合は、Citrix Endpoint Managementコンソールでポリシーを構成することもできます。

  1. ポリシーXMLファイルでポリシー値を更新します。

    MDX Toolkitインストーラーがポリシーファイルを作成します。Applications/Citrix/MDXToolkit/data/policy_metadata.xml

    注:

    ポリシーファイルは、iOSおよびAndroidで異なりますので注意してください。両方のプラットフォームのポリシーを事前設定するには、それぞれのポリシーXMLファイルを更新する必要があります。

  2. コマンドラインでアプリをラップする時は、次を含めます。

    -policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml

iOSアプリのラッピングエラーの識別

iOSアプリをラップしようとしてエラーが発生する場合は、MDX Toolkitのログを使ってエラーを識別できます。MDX Toolkitのログを確認するには、管理者権限が必要です。

MDX Toolkitを実行すると、ツールにより次の場所にログファイルが保存されます。[Applications]>[Citrix]>[MDXToolkit]>[Logs]>[Citrix.log]。デフォルトでは、ツールによって警告およびエラーがログに保存されます。

iOSアプリでエラーが発生する場合、引数があるコマンドラインがログの最後に表示されます。コマンドラインをコピーして、[Terminal]でそれを実行できます。[Applications]>[Utilities][Terminal] をクリックし、Macコマンドラインインターフェイスを使ってコマンドを検証します。エラーを検証するため、アプリケーション要件の参照が必要なことがあります。

コマンドラインツールを使ってラッピング処理を実行する場合、コマンドラインでログファイル場所、ログ表示レベル、ログ書き込みレベルを指定できます。またコマンドラインで、詳細ログレベルおよび別のログファイルを指定することもできます。

正しいプロビジョニングプロファイルの選択

モバイルiOSアプリをラップする場合、アプリのラップに成功したことを示す警告が発せられることがありますが、これにはエラーが含まれていることがあります。アプリケーションが従来使用しているプロビジョニングプロファイルと選択したプロビジョニングプロファイルが異なる場合に、エラーが発生することがあります。

MDX Toolkitは、特定のプロビジョニングプロファイルの問題に関してアラートを発することができます。たとえば、次の1つまたは複数の機能がアプリで必要なことがあります。

  • iOSアプリに対してiCloudデータ記憶域の使用を可能にするiCloudアプリ
  • Apple Push Notificationサービス(APNS)を使ってiOSデバイスにメッセージを配信するプッシュ通知
  • 別のアプリに対するキーチェーンアイテムにアクセスする特殊キーチェーンアクセスグループの権利

ログにはアプリに不足しているキーと値のペアが表示されます。キーと値のペアごとに、エラーを修正する必要があるかを判断できます。エラーを修正しない場合、アプリが正常に機能しないことがあります。またキーと値のペアによっては、プロビジョニングプロファイルの修正が可能かどうかをチェックする必要があります。場合により、プロビジョニングプロファイルの修正ができない場合ことがあり、その場合は欠陥があるアプリがリリースされます。

プロビジョニングファイルについて詳しくは、Apple Developer Webサイトを参照してください。

Toolkitが配布用証明書を見つけられない場合にキーチェーンを修復する

MDX ToolkitがiOS配布用証明書を認識しない場合、iCloudキーチェーンとMDX Toolkitを実行しているコンピューターのキーチェーンの間で問題が発生している可能性があります。ローカルのキーチェーンを修復するには、以下の手順に従います。

  1. Macの場合、[システム環境設定]で [iCloud] をタップします。

  2. [キーチェーン]チェックボックスをオフにします。

    これによって、ローカルで同期したキーチェーンがiCloudから削除されます。

  3. アプリケーションフォルダーのユーティリティフォルダーにあるキーチェーンアクセスを開きます。

  4. ラップされたアプリの署名に使用されるiOS Developer証明書を削除します。通常これは、「iPhone Distribution: 会社名」証明書と関連する秘密鍵です。

  5. キーチェーンアクセスメニューで、[Keychain First Aid]を選択します。

  6. [Keychain First Aid]ダイアログボックスで、[修復][開始] の順にタップします。

  7. 修復の完了後、[検証][開始] をタップします。

  8. 修復が成功した場合は、再度iOS配布用証明書をキーチェーンアクセスアプリにインポートします。

  9. MDX Toolkitを開始します。iOS配布用プロビジョニングプロファイルおよびiOS配布用証明書フィールドにはユーザーの情報を含める必要があります。

  10. 必要な場合、キーチェーンをiCloudに再同期します。[システム環境設定]で[iCloud]をタップし、[キーチェーン]チェックボックスを選択します。

Worx SDKが含まれるアプリの再署名

XcodeでアプリにWorx SDKが組み込まれている場合は、エンタープライズ証明書かプロビジョニングファイルで再度署名する必要があります。以下は「Sign Command」のサンプルです。

    $ /Applications/Citrix/MDXToolkit/CGAppCLPrepTool Sign -help

    Command Line Interface for MDX Toolkit, version 10.4.1.290 (Env:Test)

    2016-09-29 15:21:45.284 CGAppCLPrepTool[88453:5477658]

    ---------------------------------------------------------

    Sign Command

    ---------------------------------------------------------

    CGAppCLPrepTool Sign -in INPUTFILE -out OUTPUTFILE -Cert CERTIFICATE -Profile PROFILE

    -Cert CERTIFICATE        ==> (Required)Name of the certificate to sign the app with

    -Profile PROFILE         ==> (Required)Name of the provisioning profile to sign the app with

    -in INPUTFILE            ==> (Required)Name of the input app file, ipa/mdx file

    -out OUTPUTFILE          ==> (Optional)Name of the output app, ipa(if ipa is input)/mdx file

    -upgrade                 ==> (Optional)Preserve in-place upgrade capabilty (not recommended for new apps)

    ---------------EXAMPLE--------------------

    Sign -Cert "iPhone Distribution: Company Name" -Profile "distributionprovisioanl.mobileprovision" -in "/Users/user1/Archives/citrix.ipa"

iOSデバイスでのシステムログの収集

iOSデバイスで、iPhone構成ユーティリティツールまたはXcodeを使用してシステムログを収集できます。その後、ファイルをメールでCitrixサポートに送信して、アプリの問題をトラブルシューティングできます。

構成ユーティリティツールを使用してiOSデバイスでシステムログを収集するには

  1. Apple Configurator(以前のiPhone構成ユーティリティツール)をAppleからダウンロードしてインストールします。このツールはiPhoneでもiPadでも使用できます。
  2. 使用するデバイスがシステム要件とサポートされている言語に対応していることを確認してください。
  3. インストーラーを実行し、プロンプトに従ってウィザードを完了します。
  4. 構成ツールを開きます。
  5. [デバイス]で、デバイスをクリックします。
  6. [Console][Clear] の順にクリックして既存のログをクリアします。
  7. 問題を再現し、[Save Console As] をクリックしてから、ログを添付したメールをサポートに送信します。

Xcodeを使用してiOSデバイスでログを収集するには

  1. XcodeをAppleストアからmacOSコンピューターにダウンロードします。

    Xcodeのダウンロード画面の画像

  2. iOSデバイスをコンピューターに接続し、Xcodeを開きます。

  3. [Window] をクリックし、[Organizer] をクリックします。

    WindowとOrganizerのメニューオプションの画像

  4. [Organizer]ウィンドウで、[Devices] をクリックします。

    デバイスアイコンの画像

  5. [iPad]で、[Console] をクリックして、コンソールログを表示します。

    注:

    Organizerの[Device Logs]ペインには、アプリの障害に関する情報が含まれます。一覧を更新するため、デバイスを取り外してから再び接続することが必要な場合があります。

  6. [Clear] をクリックして既存のログをクリアします。

  7. 問題を再現します。

  8. [Save Log As] をクリックしてログを保存し、メールの添付ファイルをサポートにメールで送信します。

    [Save Log As]ボタンの画像