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

  • この記事では、Citrix Endpoint Management™管理者がサードパーティのエンタープライズアプリをラッピングする方法と、開発者がISVアプリをラッピングする方法について説明します。iOSモバイルアプリをラッピングするには、次の方法があります。

  • MDX Serviceを使用します。詳細については、「MDX Service」を参照してください。
  • macOSグラフィカルインターフェースツールとmacOSコマンドラインツールを含むMDX Toolkitを使用します。macOSコマンドラインツールにはカスタマイズオプションがあり、アプリのラッピングプロセスを自動化するスクリプトから参照でき、一部のMDXポリシーを事前に設定できます。

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

重要:

ユーザーデバイスが、アプリのラッピングに使用されたMDX Toolkitのバージョンと互換性のあるSecure Hubのバージョンに更新されていることを確認してください。そうしないと、ユーザーに非互換性に関するエラーメッセージが表示されます。詳細については、「Endpoint Managementの互換性」を参照してください。

Apple DEPによるiOSデバイスの展開

Apple Deployment Programに登録して、Apple Device Enrollment Program(DEP)を利用します。Apple DEPを使用して、Citrix Endpoint ManagementでiOSおよびmacOSデバイスを展開および管理できます。Apple Deployment Programへの登録方法を含む詳細については、「Apple DEPによるiOSおよびmacOSデバイスの展開」を参照してください。

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

Apple App Storeのアプリ以外の、物理的なiOSデバイスで実行されるアプリは、プロビジョニングプロファイルと対応する配布証明書で署名する必要があります。配布には2種類の開発者プログラムがあります。

  • iOS Developer Program(Ad Hoc)
  • iOS Developer Enterprise Program。アプリをラッピングするには、CitrixはEnterpriseプログラムの使用を推奨しています。このプログラムには、Apple Webサイトから登録できます。

  • Enterpriseプロファイルを使用すると、無制限のデバイスでアプリを実行できます。Ad Hocプロファイルを使用すると、最大約100台のデバイスでアプリを実行できます。

Appleは、新しいEnterpriseアカウントでのワイルドカードApp IDの使用をサポートしなくなりました。EnterpriseアカウントがワイルドカードApp IDをサポートしていない場合は、次のように複数の明示的なApp IDとプロビジョニングプロファイルを作成する必要があります。

  1. 有効なiOS配布証明書があることを確認します。

  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 Push Notification service(APNs)を使用する場合は、明示的なプロビジョニングプロファイルとApp IDを使用する必要があります。

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

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

プロビジョニングプロファイルをiOSデバイスに展開する方法と、期限切れのプロファイルを処理する方法の詳細については、Endpoint Managementの記事「プロビジョニングプロファイルデバイスポリシー」を参照してください。

アプリのアップグレード

重要:

アプリをアップグレードする前に、App IDの変更または部分的なワイルドカードApp IDプロビジョニングプロファイルの使用がアプリのアップグレードにどのように影響するかを認識してください。

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

ポリシーとモバイル生産性アプリ

注:

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

Citrixは、すべてのモバイル生産性向上アプリに適用される汎用的なデフォルトポリシーセットと、一部のモバイル生産性向上アプリに固有のポリシーセットを提供します。ポリシーファイル名はバンドルIDに基づいています。デフォルトでは、Citrix Endpoint Managementアプリのポリシーファイル名はcom.citrix.app_policy_metadata.xmlの形式で、appは「mail」のような名前です。

ワイルドカードApp IDをサポートしないApple Enterpriseアカウントをお持ちの場合は、次の操作を行います。Endpoint Managementアプリをラップする際に、バンドルID内の会社識別子を変更します。たとえば、Secure MailのバンドルIDはcom.citrix.mailです。その識別子内の「citrix」を貴社の会社識別子に置き換えます。貴社の会社識別子が「example」の場合、バンドルIDはcom.example.mailになります。そのアプリをラップすると、ポリシーファイル名はcom.example.mail_policy_metadata.xmlになります。

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

  1. 前述の例で説明されているように、com.example.mail_policy_metadata.xmlなど、貴社のバンドルIDに一致するファイル名
  2. com.citrix.mail_policy_metadata.xmlなど、元のバンドルIDに一致するファイル名
  3. 汎用デフォルトポリシーファイルであるpolicy_metadata.xmlに一致するファイル名

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

グラフィカルインターフェイスを使用したエンタープライズアプリのラッピング

次の手順では、Endpoint Managementから展開するエンタープライズアプリをラッピングする一般的なプロセスについて説明します。ISVアプリのラッピングの一般的なプロセスについては、「グラフィカルインターフェイスを使用したISVアプリのラッピング」を参照してください。

重要:

グラフィカルインターフェイスを使用してiOSアプリをラッピングする前に、秘密鍵と証明書の両方がMacのキーチェーンアクセスにインストールされている必要があります。関連する配布証明書に秘密鍵がキーチェーンアクセスにインストールされていない場合、グラフィカルインターフェイスはiOS配布証明書リストを事前入力しません。詳細については、この記事の後半にある「ツールキットが配布証明書を見つけられない場合のキーチェーンの修復」を参照してください。

  1. ツールキットを使用してアプリをラッピングする前に、必要に応じて元に戻せるように、それらのアプリのオリジナルバージョンを必ずバックアップしてください。

  2. iOSアプリケーションフォルダーからMDX Toolkitを起動し、[IT管理者向け] を選択してから、[次へ] をクリックします。

    MDX Toolkitの展開オプション

  3. [参照] をクリックし、ファイルを選択してから、[次へ] をクリックします。

    MDX Toolkit 展開するファイルの選択

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

  • MDX Toolkit アプリの詳細

    1. [Citrixモバイルアプリの作成] 画面で、[参照] をクリックし、プロビジョニングプロファイルを選択し、配布証明書を選択します。iOS証明書リストが空の場合、MDX Toolkitを実行しているマシンのキーチェーンを修復します。詳細については、この記事の後半にある「ツールキットが配布証明書を見つけられない場合のキーチェーンの修復」を参照してください。
    1. 明示的なアプリIDを持つプロビジョニングプロファイルを選択した場合、ツールはアプリIDの確認を求めます。たとえば、Citrix Endpoint ManagementアプリのバンドルIDはcom.citrix.ProductNameです。使用するプロビジョニングプロファイルには、「citrix」の代わりに貴社の会社識別子を含める必要があります。
  • [はい] をクリックした後、[作成] をクリックします。

  • MDX Toolkit アプリIDのプロンプト

    1. ワイルドカードアプリIDを持つプロビジョニングプロファイルを選択した場合、ツールは利用可能なアプリIDのリストを表示します。使用したいアプリIDがリストにない場合は、別のプロビジョニングプロファイルを選択します。アプリIDを選択した後、[作成] をクリックします。
  • MDX Toolkit ワイルドカード用アプリIDのプロンプト

    1. MDXパッケージが作成されると、ツールキットが通知します。別のアプリをラッピングするには、[最初からやり直す] をクリックします。
  • MDX Toolkit 成功メッセージ

    ツールキットは、ラッピングされたiOSアプリのファイル名の末尾に_iOSを付加します。

  • コマンドラインを使用したエンタープライズiOSアプリのラッピング

  • 注:

  • サードパーティ製アプリは、必ずアプリベンダーから直接入手してください。Apple StoreからダウンロードされたiOSアプリは暗号化されており、ラッピングできません。

  • ツールキットを使用してアプリをラッピングする前に、必要に応じて元に戻せるように、それらのアプリのオリジナルバージョンを必ずバックアップしてください。

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

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

  • 基本的なiOSラッピングコマンドラインは次のとおりです。
./CGAppCLPrepTool \
Wrap \
–Cert CERTIFICATE \
–Profile PROFILE \
-bundleID ID \
–in INPUT_FILE \
–out OUTPUT_FILE
<!--NeedCopy-->

このコマンドラインオプションの例を次に示します。

./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”
<!--NeedCopy-->

上記のコマンドに追加できるオプションの例を次に示します。

-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をサポートしないエンタープライズアカウントに必須。この値は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 > UtilitiesTerminalをクリックし、Macのコマンドラインインターフェースを使用してコマンドを評価します。エラーを評価するために、アプリの要件を参照する必要がある場合があります。

コマンドラインツールを使用してラッププロセスを実行する場合、コマンドラインで次の情報を指定できます: ログファイルの場所、ログ表示レベル、ログ書き込みレベル。また、コマンドラインで詳細ログレベルと別のログファイルを指定することもできます。

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

モバイルiOSアプリをラップする際、アプリは正常にラップされたものの、エラーが含まれている可能性があるという警告を受け取ることがあります。選択したプロビジョニングプロファイルが、アプリが元々使用していたプロビジョニングプロファイルと異なる場合にエラーが発生する可能性があります。

MDX Toolkitは、特定のプロビジョニングプロファイルの問題について警告できます。たとえば、アプリには次の1つ以上の機能が必要な場合があります。

  • iOSアプリでiCloudデータストレージの使用を可能にするiCloudアプリ
  • Appleプッシュ通知サービスを使用してiOSデバイスにメッセージを配信するプッシュ通知
  • 別のアプリのキーチェーン項目にアクセスするための特別なキーチェーンアクセスグループエンタイトルメント

ログには、アプリの不足しているキーと値のペアが表示されます。各キーと値のペアについて、エラーを修正するかどうかを決定できます。エラーを修正しない場合、アプリが正しく機能しない可能性があります。また、キーと値のペアによっては、プロビジョニングプロファイルを修正できるかどうかを確認する必要があります。場合によっては、プロビジョニングプロファイルを修正できず、欠陥のあるアプリをリリースすることもあります。

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

ツールキットが配布証明書を見つけられない場合のキーチェーンの修復

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

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

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

    この手順により、ローカルで同期されたキーチェーンがiCloudから削除されます。

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

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

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

  6. [キーチェーン First Aid]ダイアログボックスで、修復をタップし、次に開始をタップします。

  7. 修復が完了したら、検証をタップし、次に開始をタップします。

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

  9. MDX Toolkitを起動します。iOS配布プロビジョニングプロファイルとiOS配布証明書のフィールドに情報が含まれているはずです。

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

MDX App SDKを含むアプリの再署名

Xcodeを使用してMDX App SDKが組み込まれているアプリの場合、エンタープライズ証明書またはプロビジョニングプロファイルを使用してアプリに再署名する必要があります。以下は、署名コマンドの例です。

$ /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"
<!--NeedCopy-->

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

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

構成ユーティリティツールを使用したiOSデバイスでのシステムログの収集

  1. AppleからApple Configurator(旧iPhone構成ユーティリティ)ツールをダウンロードしてインストールします。このツールはiPhoneとiPadの両方で使用できます。
  2. デバイスがシステム要件とサポートされている言語を満たしていることを確認します。
  3. インストーラーを実行し、プロンプトに従ってウィザードを完了します。
  4. Configuratorツールを開きます。
  5. [デバイス]の下で、お使いのデバイスをクリックします。
  6. コンソールをクリックし、次にクリアをクリックして既存のログをクリアします。
  7. 問題を再現し、コンソールを別名で保存をクリックし、ログを添付してサポートにメールで送信します。

Xcodeを使用したiOSデバイスでのログの収集

  1. Macで、Finderをクリックし、移動をクリックし、次にユーティリティをクリックします。

  2. ユーティリティフォルダーで、コンソールをダブルクリックします。

  3. コンソールで、デバイスの下にある、コンソールログを取得したいiOSデバイスをクリックします。

  4. 問題を再現します。

  5. コンソールで、次のいずれかを実行します。
    • メインウィンドウで、最近のエラーメッセージを選択します。
    • コンソールのメニューバーで、編集をクリックし、次にすべて選択をクリックします。
  6. 編集をクリックし、次にコピーをクリックします。

  7. TextEditを開き、コピーしたログを新しいファイルに貼り付けます。

  8. ファイルを添付してサポートにメールで送信します。