EUM アプリケーションキーを取得し、iOS アプリケーションをインストゥルメント化するには、次の手順を実行します。

アプリケーションキーの取得

Getting Started Wizard を完了すると、EUM アプリケーションキーが付与されます。このキーは、ソースコードを変更するときに必要になります。場合によっては、複数のモバイルアプリケーションが同じキーを共有できます。

Getting Started Wizard を完了したのに EUM アプリケーションキーが付与されない場合は、「アプリケーションキーの取得」を参照してください。

エージェントの初期化

アプリケーションの起動後すぐにモバイルエージェントを初期化するには、アプリケーションの AppDelegate.m ファイルを編集します。これによりアプリケーションが登録されます。編集はコードで一度だけ実行する必要があります。

  1. AppDelegate.m ファイルに次の import ステートメントを追加します。

    #import <ADEumInstrumentation/ADEumInstrumentation.h>
    OBJ-C
  2. didFinishLaunchingWithOptions メソッドで、Getting Started Wizard の完了時に受領した EUM アプリケーションキーを使用して ADEumAgentConfiguration オブジェクトを作成し、iOS エージェントを初期化します。

    // Example EUM App Key: "AAA-AAB-AUM"
    ADEumAgentConfiguration *config = [[ADEumAgentConfiguration alloc] initWithAppKey:<#EUM_APP_KEY#>];
    OBJ-C

    コードは次のように指定する必要があります。

    #import <ADEumInstrumentation/ADEumInstrumentation.h>
    #import "AppDelegate.h"
     
        // ...
        -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
        {
            // Example EUM App Key: "AAA-AAB-AUM"
            ADEumAgentConfiguration *config = [[ADEumAgentConfiguration alloc] initWithAppKey:<#EUM_APP_KEY#>]; 
            // other tasks
            return YES;
        }
    
    OBJ-C
  3. iOS エージェントを設定して地域内の SaaS EUM サーバにメトリックとスクリーンショットを報告し、ADEumAgentConfiguration オブジェクトをメソッド initWithConfiguration に渡してエージェントを初期化します。(オンプレミスの EUM サーバを使用している場合は、「オンプレミス展開用の iOS エージェントの構成(オプション)」を参照してください)。

    #import <ADEumInstrumentation/ADEumInstrumentation.h>
    #import "AppDelegate.h"
     
        // ...
        -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
        {
            ADEumAgentConfiguration *config = [[ADEumAgentConfiguration alloc] initWithAppKey:<#EUM_APP_KEY#>];
            //The default SaaS EUM Server and Screenshot Service are in the Americas, 
    		// so you can omit the following settings if you are in the Americas.
            config.collectorURL = "https://<your_region>.eum-appdynamics.com";
            config.screenshotURL = "https://<you_region>-image.eum-appdynamics.com/";
            [ADEumInstrumentation initWithConfiguration: config];
            // other tasks
            return YES;
         }
    
    OBJ-C
  4. (オプション)アプリケーションが別のツールを使用してクラッシュを報告している場合、iOS エージェントは次のメッセージによる警告を行うことがあります。

    Agent has detected a third party crash reporting tool. You may wish to disable AppDynamics Crash Reporting by setting the crashReportingEnabled configuration flag to NO
    OBJ-C

    より良い結果を得るために、クラッシュレポートツールは 1 つだけ使用することをお勧めします。iOS エージェントのクラッシュレポートを無効にする方法については、「クラッシュレポートの無効化」を参照してください。

  5. ファイルを保存します。

iOS エージェントは、Swift プログラミング言語を使用して作成されたアプリケーションと互換性があります。  

  1. アプリケーションの AppDelegate クラスで、次の import ステートメントを追加します。

    import ADEumInstrumentation
    SWIFT
  2. AppDelegate クラスの didFinishLaunchingWithOptions で、Getting Started Wizard の完了時に受領した EUM アプリケーションキーを使用して ADEumAgentConfiguration オブジェクトを作成し、iOS エージェントを初期化します。

    #import <ADEumInstrumentation/ADEumInstrumentation.h>
    #import "AppDelegate.h"
     
        // ...
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            let config = ADEumAgentConfiguration(appKey: <#EUM_APP_KEY#>)
        }
    SWIFT
  3. iOS エージェントを設定して地域内の SaaS EUM サーバにメトリックとスクリーンショットを報告し、ADEumAgentConfiguration オブジェクトをパラメータとして initWith() メソッドに渡してエージェントを初期化します。

    (オンプレミスの EUM サーバを使用している場合は、「オンプレミス展開用の iOS エージェントの構成(オプション)」を参照してください)。

    #import <ADEumInstrumentation/ADEumInstrumentation.h>
    #import "AppDelegate.h"
     
        // ...
         func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            let config = ADEumAgentConfiguration(appKey: <#EUM_APP_KEY#>)
            config.collectorURL = "https://<your_region>.eum-appdynamics.com"
            config.screenshotURL = "https://<your_region>-image.eum-appdynamics.com"
            ADEumInstrumentation.initWith(config)
            // other tasks
            return true
        }
    // ...
    SWIFT
  4. (オプション)アプリケーションが別のツールを使用してクラッシュを報告している場合、iOS エージェントは次のメッセージによる警告を行います。

    Agent has detected a third party crash reporting tool. You may wish to disable AppDynamics Crash Reporting by setting the crashReportingEnabled configuration flag to NO
    SWIFT

    より良い結果を得るために、クラッシュレポートツールは 1 つだけ使用することを推奨します。iOS エージェントのクラッシュレポートを無効にする方法については、「クラッシュレポートの無効化」を参照してください。

  5. ファイルを保存します。

watchOS 1 用に作成されたアプリケーションには、ユーザの iPhone で実行する WatchKit 拡張機能が含まれていますが、watchOS 2 ではさらに新しいアーキテクチャもサポートされます。つまり、WatchKit 拡張機能が Apple Watch 自体で実行されます。AppDynamics では watchOS 1 アーキテクチャをサポートしていますが、新しい watchOS 2 アーキテクチャはサポートしていません。watchOS 1 アーキテクチャを使用するアプリケーションは watchOS 1 と 2 の両方で実行できるため、アプリケーションが watchOS 1 用に設計されている場合は、両方のバージョンの watchOS で AppDynamics を使用できます。

watchOS 1 アプリは Watch UI の操作に応答して機能的に起動されるため、SDK 初期化コードは iPhone アプリでのその操作の時点で呼び出される必要があります。これは通常、拡張機能の AppDelegate.m コールとは異なります。構文に変更はありません。

dSYM ファイルの生成

アプリケーションがクラッシュした場合に生成されるクラッシュスナップショットに、人間が判読可能な情報をエージェントが提供できるようにするには、[DWARF with dSYM] ファイルオプションを使用してコンパイルし、アプリケーションのデバッグシンボル(dSYM)ファイルを生成します。これを実行する理由の詳細については、「人間が判読能なクラッシュスナップショットの取得」を参照してください。

  1. Xcode の [Project Navigator] で、プロジェクトを選択します。
  2. ターゲットリストで、アプリケーションを構築するターゲットを選択します。
  3. [ Build Settings] タブを選択します。
  4. [Build Options] セクションで、[Debug Information Format] が [DWARF with dSYM File] に設定されていることを確認します。
  5. Xcode プロジェクトを再構築します。

dSYM ファイルによるクラッシュのモニタ

この手順はオプションですが、クラッシュをモニタする場合は強く推奨します。AppDynamics は、アプリケーションがクラッシュスナップショット用の人間が判読可能なスタックトレースを生成するために、dSYM ファイルを必要とします。 

この説明については、「dSYM ファイルのアップロード」を参照してください。

インストゥルメンテーションのカスタマイズ(オプション)

 ADEumInstrumentation クラスには、AppDynamics を使用して収集および集約できるデータの種類を拡張できる追加のメソッドがあります。作成できる拡張には、次の 5 つの基本タイプがあります。

  • カスタムタイマー:コード内の任意のイベントシーケンスが、複数のメソッドにまたがる場合でも、時間を計測できます
  • カスタムメトリック:収集する任意の整数ベースのデータ
  • ユーザデータ:任意の文字列キーと値のペアが役立つ可能性があります
  • インフォメーションポイント:1 つのメソッドが呼び出される頻度と実行にかかる時間
  • トピックパス(パンくずリスト):クラッシュのコンテキスト

詳細については、iOS インストゥルメンテーションのカスタマイズを参照してください。

オンプレミス展開用の iOS エージェントの構成(オプション)

デフォルトでは、エージェントがビーコンを EUM クラウドに送信するように設定されています。EUM クラウドは、AWS 上で実行されている EUM Server のインスタンスです。EUM サーバのオンプレミスバージョンを使用している環境にアプリケーションをインストゥルメントする場合は、エージェントがビーコンを送信する URL を変更する必要があります。これを行うには、ADEumAgentConfiguration オブジェクトを使用して、コレクタ URL とスクリーンショットサービス URL をオンプレミス EUM Server URL に設定します。 

iOS エージェントは、さまざまなサービス(コレクタ/スクリーンショットサービス)へのコール発信に使用するパスを認識しています。たとえば、EUM Server の URL が https://myEUMServerURL.com:7001 の場合、iOS エージェントは EUM コレクタへリクエストを行うために https://myEUMServerURL.com:7001/eumcollector を使用することを認識します。コレクタ URL を指定することで、スクリーンショットサービスに EUM クラウドの SaaS 展開を使用することはできなくなります。

EUM Server の URL を取得するには、次の手順を実行します。

  1. 管理コンソールを開きます。
  2. 左側のナビゲーションバーで、[Controller Settings] をクリックします。
  3. HTTPS を使用している場合は検索フィールドに「eum.beacon.host」または「eum.beacon.https.host」と入力します。
  4. 設定の値をコピーします。これは、EUM Server の URL です。

次のコード例は、Objective-C および Swift を使用してコレクタ URL とスクリーンショットサービス URL を設定する方法を示しています。

ADEumAgentConfiguration *adeumAgentConfig = [[ADEumAgentConfiguration alloc] initWithAppKey:<#EUM_APP_KEY#>];
// Set the Collector URL and Screenshot Service URL to the EUM Server URL.
adeumAgentConfig.collectorURL = <#COLLECTOR_URL:PORT#>;
adeumAgentConfig.screenshotURL = adeumAgentConfig.collectorURL;
[ADEumInstrumentation initWithConfiguration:adeumAgentConfig];
OBJ-C
let configuration = ADEumAgentConfiguration(appKey: <#EUM_APP_KEY#>)
// Set the Collector URL and Screenshot Service URL to the EUM Server URL.
config.collectorURL = <#COLLECTOR_URL:PORT#>
config.screenshotURL = config.collectorURL
ADEumInstrumentation.initWith(configuration)
SWIFT

オンプレミス EUM Server にビーコンを送信するための HTTP の有効化

オンプレミス EUM サーバを使用している状況で、HTTP を使用してビーコンを EUM サーバにディスパッチする場合、iOS 9 以降では、アプリケーションの info.plist ファイルにフラグを設定して、セキュアでない接続の使用を許可できるようにする必要があります。デフォルトでは、HTTPS が App Transport Security(ATS)によってすべての iOS 9 アプリケーションに適用されます。また、iOS エージェントは EUM クラウドで使用されている場合は ATS に準拠します。