iOS アプリケーションのインストゥルメント化
EUM アプリケーションキーを取得し、iOS アプリケーションをインストゥルメント化するには、次の手順を実行します。
アプリケーションキーの取得
Getting Started Wizard を完了すると、EUM アプリケーションキーが付与されます。このキーは、ソースコードを変更するときに必要になります。場合によっては、複数のモバイルアプリケーションが同じキーを共有できます。
[Getting Started Wizard] を完了したものの、EUM アプリケーションキーを持っていない場合は、「アプリケーションキーの取得」を参照してください。
エージェントの初期化
- Objective-C
-
アプリケーションの起動後すぐにモバイルエージェントを初期化するには、アプリケーションの ファイルを編集します。これによりアプリケーションが登録されます。編集はコードで一度だけ実行する必要があります。
- AppDelegate.m ファイルに次の import ステートメントを追加します。
#import <ADEumInstrumentation/ADEumInstrumentation.h> -
didFinishLaunchingWithOptionsメソッドで、Getting Started Wizard の完了時に受領した EUM アプリケーションキーを使用してADEumAgentConfigurationオブジェクトを作成し、iOS エージェントを初期化します。
コードは次のように指定する必要があります。// Example EUM App Key: "AAA-AAB-AUM" ADEumAgentConfiguration *config = [[ADEumAgentConfiguration alloc] initWithAppKey:<#EUM_APP_KEY#>];#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; } - 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>-col.eum-appdynamics.com"; config.screenshotURL = @"https://<you_region>-image.eum-appdynamics.com/"; [ADEumInstrumentation initWithConfiguration: config]; // other tasks return YES; } - (オプション)アプリケーションが別のツールを使用してクラッシュを報告している場合、iOS エージェントは次のメッセージによる警告を行うことがあります。
より良い結果を得るために、クラッシュレポートツールは 1 つだけ使用することをお勧めします。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 - ファイルを保存します。
- AppDelegate.m ファイルに次の import ステートメントを追加します。
- Swift
-
iOS エージェントは、Swift プログラミング言語を使用して作成されたアプリケーションと互換性があります。
- アプリケーションの AppDelegate クラスで、次の import ステートメントを追加します。
import ADEumInstrumentation -
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#>) } - 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 } // ... - (オプション)アプリケーションが別のツールを使用してクラッシュを報告している場合、iOS エージェントは次のメッセージによる警告を行います。
より良い結果を得るために、クラッシュレポートツールは 1 つだけ使用することを推奨します。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 - ファイルを保存します。
- アプリケーションの AppDelegate クラスで、次の import ステートメントを追加します。
- Apple Watch の拡張機能
-
watchOS 1 用に作成されたアプリケーションには、ユーザーの iPhone で実行する WatchKit 拡張機能が含まれていますが、watchOS 2 ではさらに新しいアーキテクチャもサポートされます。つまり、WatchKit 拡張機能が Apple Watch 自体で実行されます。Splunk AppDynamics では watchOS 1 アーキテクチャをサポートしていますが、新しい watchOS 2 アーキテクチャはサポートしていません。watchOS 1 アーキテクチャを使用するアプリケーションは watchOS 1 と 2 の両方で実行できるため、アプリケーションが watchOS 1 用に設計されている場合は、両方のバージョンの watchOS で Splunk AppDynamics を使用できます。
watchOS 1 アプリは Watch UI の操作に応答して機能的に起動されるため、SDK 初期化コードは iPhone アプリでのその操作の時点で呼び出される必要があります。これは通常、拡張機能の
AppDelegate.mコールとは異なります。構文に変更はありません。
dSYM ファイルの生成
アプリケーションがクラッシュした場合に生成されるクラッシュスナップショットに、人間が判読可能な情報をエージェントが提供できるようにするには、[ ] ファイルオプションを使用してコンパイルし、アプリケーションのデバッグシンボル(dSYM)ファイルを生成します。これを行う理由について詳しくは、「人間が判読可能なクラッシュスナップショットの取得」を参照してください。
- Xcode の Project Navigator でプロジェクトを選択します。
- ターゲットリストで、アプリケーションを構築するターゲットを選択します。
- [Build Settings] タブを選択します。
- [Build Options] セクションで、Debug Information Format が DWARF with dSYM File に設定されていることを確認します。
- Xcode プロジェクトを再構築します。
dSYM ファイルによるクラッシュのモニタ
この手順はオプションですが、クラッシュをモニターする場合は強く推奨します。Splunk AppDynamics は、アプリケーションがクラッシュスナップショット用に判読可能なスタックトレースを生成するために、dSYM ファイルを必要とします。
手順は、「dSYM ファイルのアップロード」を参照してください。
インストゥルメンテーションのカスタマイズ(オプション)
ADEumInstrumentation クラスには、Splunk AppDynamics を使用して収集および集約できるデータの種類を拡張できる追加のメソッドがあります。作成できる拡張には、次の 5 つの基本タイプがあります。
- カスタムタイマー:コード内の任意のイベントシーケンスが、複数のメソッドにまたがる場合でも、時間を計測できます
- カスタムメトリック:収集する任意の整数ベースのデータ
- ユーザデータ:任意の文字列キーと値のペアが役立つ可能性があります
- インフォメーションポイント:1 つのメソッドが呼び出される頻度と実行にかかる時間
- トピックパス(パンくずリスト):クラッシュのコンテキスト
「iOS インストゥルメンテーションのカスタマイズ」を参照してください。
オンプレミス展開用の iOS エージェントの構成(オプション)
デフォルトでは、エージェントがビーコンを EUM クラウドに送信するように設定されています。EUM クラウドは、AWS 上で実行されている EUM Server のインスタンスです。EUM サーバのオンプレミスバージョンを使用している環境にアプリケーションをインストゥルメントする場合は、エージェントがビーコンを送信する URL を変更する必要があります。これを行うには、ADEumAgentConfiguration オブジェクトを使用して、コレクタ URL とスクリーンショットサービス URL をオンプレミス EUM Server URL に設定します。
https://myEUMServerURL.com:7001 の場合、iOS エージェントは EUM コレクタへリクエストを行うために https://myEUMServerURL.com:7001/eumcollector を使用することを認識します。コレクタ URL を指定することで、スクリーンショットサービスに EUM クラウドの SaaS 展開を使用することはできなくなります。EUM Server の URL を取得するには、次の手順を実行します。
- 管理コンソールを開きます。
- 左側のナビゲーションバーで、Controller Settings をクリックします。
- HTTPS を使用している場合は検索フィールドに「eum.beacon.host」または「eum.beacon.https.host」と入力します。
- 設定の値をコピーします。これは、EUM Server の URL です。
- Objective-C
-
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]; - Swift
-
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)
オンプレミス EUM Server にビーコンを送信するための HTTP の有効化
オンプレミス EUM サーバを使用している状況で、HTTP を使用してビーコンを EUM サーバにディスパッチする場合、iOS 9 以降では、アプリケーションの info.plist ファイルにフラグを設定して、セキュアでない接続の使用を許可できるようにする必要があります。デフォルトでは、HTTPS が App Transport Security(ATS)によってすべての iOS 9 アプリケーションに適用されます。また、iOS エージェントは EUM クラウドで使用されている場合は ATS に準拠します。