• ログイン無料アカウント

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

iOS SDK APIガイド

iOS SDK APIを使用して、 カスタムデータを追加する 。例えば、以下のようになります。

  • 自分のコードをインストゥルメント化する。
  • モバイルアプリのイベントからインタラクショントレースを開始、停止することができます。
  • カスタムメトリクスの記録
  • カスタム属性やイベントをInsightsに送信。
  • 自動的にサポートされていないライブラリからのトラックネットワーキング
  • Objective-C または Swift でカスタム識別子の値を設定し、ユーザーセッションと解析イベントや属性を関連付けます(iOS SDK バージョン5.9.0以上 )。

注意

トレースは高度に最適化されていますが、パフォーマンスのオーバーヘッドが発生します。何百回も呼び出されることが予想されるメソッドのインスツルメンテーションは避けてください。

SDKのインストール

one.newrelic.com > Add more data にアクセスし、iOS用の指示に従って、アプリが最新のiOS SDKでインストルメント化されていることを確認してください。

このドキュメントには、iOS SDKのインスツルメンテーション要件が記載されています。

カスタム属性や New Relic Insights に送ることができるイベントで利用可能なメソッドの詳細については、 iOS SDK API リファレンス を参照してください。また、 フィーチャーフラグ を設定することもできます。

  • Objective-C
  • Swift

自動的にインストルメント化されたクラスとメソッド

以下のメソッド(リストアップされたクラスとそのサブクラス)は、New Relic によってすでにインスツルメンテーションされています。これらをトレースするために、カスタムインストルメンテーションを追加する必要はありません。

クラス

New Relicで自動的に計測されるメソッド

UIViewController

  • viewDidLoad。
  • viewWillAppear。
  • viewDidAppear。
  • viewWillDisappear。
  • viewDidDisappear。
  • viewWillLayoutSubviews。
  • viewDidLayoutSubviews:

UIImage

  • imageNamedです。
  • imageWithContentsOfFile。
  • imageWithData:
  • imageWithData:scale:
  • initWithContentsOfFile:
  • initWithDataです。
  • initWithData:scale:

NSJSONSerialization

  • JSONObjectWithData:options:error:
  • JSONObjectWithStream:options:error:
  • dataWithJSONObject:options:error:
  • writeJSONObject:toStream:options:error:

NSManagedObjectContext

  • executeFetchRequest:error:
  • ProcessPendingChanges

エージェントは、様々な手法のパフォーマンスをサマリーメトリクスに集約し、 インタラクション ページ に表示します。サマリーカテゴリーには以下のものがあります。

  • ローディングを見る
  • UIレイアウト
  • データベース
  • イメージ
  • JSON
  • ネットワーク

Objective-Cコードのインストゥルメント化

自分のObjective-Cコードをインタラクションのコードブレークダウンやタイムラインに表示させるには、 _START をメソッドの先頭に、 _STOP をメソッドの最後に追加します。

重要

_START のたびに _STOP を必ず入れ、1つのメソッドにはこれらのコマンドのセットを1つだけ入れます。トレースシステムは自動的にクラス名とメソッド名を拾い、メソッドのパフォーマンスメトリクスをNew Relicに報告します。

- (void)myMethod
{
NR_TRACE_METHOD_START(0);
// … existing code
NR_TRACE_METHOD_STOP;
}

ARCを使用していない場合は、このバージョンの _STOP マクロを使用して、メモリリークを回避してください。

NR_NONARC_TRACE_METHOD_STOP;

APM Overview ページのサマリーデータに自分のメソッドのパフォーマンスを含めたい場合は、 NRTraceType enum の値の1つを _START マクロに渡します。

NR_TRACE_METHOD_START(NRTraceTypeDatabase);

Objective-C:カスタム属性とイベントの報告

NewRelic オブジェクトのメソッドを使用して、 カスタムアトリビュートやイベントを報告します 。Objective-C でカスタムアトリビュートとイベントに使用できるメソッドの詳細については、 iOS SDK API リファレンス を参照してください。

BOOL 結果を返すメソッドは、成功した場合は YES を、操作が完了しなかった場合は NO を返します。これらのメソッドは、New Relic iOS SDK のバージョン 5.0.0 以降で利用可能です。

SDKは、一度に128個までのユーザー定義の カスタムアトリビュート を保存することができます。128を超えるアトリビュートを保存しようとすると、SDKは NO を返します。

カスタムアトリビュートの名前は必要に応じて最もシンプルなフォーマットを使用し、New Relic ではスペースを含まないシングルワードのアトリビュートを推奨しています。属性 フレーズ はキャメルケースでフォーマットすることができますので、 My Custom AttributemyCustomAttribute と指定するのが良いでしょう。カスタムメトリクスと同様です。

  • / ] という文字の使用は避けてください。[ | * ] 名前をつけるときには、このようにしてください。
  • マルチバイト文字は避けてください。

Objective-C:カスタムネットワークリクエストの追跡

トランザクショナルネットワークのリクエストを、HTTPリクエストと同じような言葉で表現できれば、それを追跡することができます。変わりやすいパスやホスト名を含まない、整形されたURLを使用してください。

complete のリクエストには、この方法を使ってください。

[NewRelic noticeNetworkRequestForURL:(NSURL*)url
httpMethod:(NSString*)httpMethod
withTimer:(NRTimer *)timer
responseHeaders:(NSDictionary *)headers
statusCode:(NSInteger)httpStatusCode
bytesSent:(NSUInteger)bytesSent
bytesReceived:(NSUInteger)bytesReceived
responseData:(NSData *)responseData
andParams:(NSDictionary *)params];

パラメータは以下の通りです。

パラメーター

説明

url

リクエストのURL

httpメソッド

リクエストのメソッドタイプ(例:POST、GETなど)。

タイマー

ネットワークリクエストのタイミングを計ったNRTimer

ヘッダ

利用可能な場合は、HTTPレスポンスヘッダを含む辞書

httpStatusCode

レスポンスステータスコード

httpStatusCode が 400 以上の場合、エージェントはサーバーエラーを記録し、提供されていれば responseData のボディをキャプチャすることができます。

bytesSent

リクエストボディのサイズ

bytesReceived

レスポンスのサイズBody

レスポンスデータ

エージェントがサーバーエラーを記録した場合に取り込まれるレスポンスボディデータ params

params

HTTPトランザクションがエラーの場合、HTTPエラーメトリックに含まれる追加パラメータ

ソケットやオペレーティングシステムのエラーにより が失敗するリクエストには、この方法を使用してください。

[NewRelic noticeNetworkFailureForURL:(NSURL *)url
httpMethod:(NSString*)httpMethod
withTimer:(NRTimer *)timer
andFailureCode:(NSInteger)iOSFailureCode];

パラメータは以下の通りです。

パラメーター

説明

url

リクエストのURL

httpメソッド

リクエストのメソッドタイプ(例:POST、GETなど)。

タイマー

ネットワークリクエストのタイミングを計ったNRTimer

iOSFailureCode

故障コード

失敗コードは NSURLError* コードとして解釈されます。サポートされているコードの全リストは、 NRConstants.h を参照してください。

あなたのSwiftコードを計る

自分のSwiftコードがインタラクションのコードブレークダウンやタイムラインに表示されるように。

  • startTracingMethod() 呼び出しをメソッドの先頭に追加します。
  • その最後に endTracingMethodWithTimer() 呼び出しを追加します。
  • 常に endTracingMethodWithTimer() の呼び出しを、 startTracingMethod() の参照ごとに行います。
  • これらのコマンドは、1つのメソッドに1セットだけ含まれます。
func myMethod(){
let timer = NRTimer();
NewRelic.startTracingMethod(#selector(MyClass.myMethod),
object: self,
timer: timer,
category: NRTraceTypeNone)
// … existing code
NewRelic.endTracingMethodWithTimer(timer)
}

メソッドのパフォーマンスをAPM Overview ページのサマリーデータに含めたい場合は、 NRTraceType enumの値の1つを startTracingMethod() マクロに渡します(例)。

NewRelic.startTracingMethod(#selector(MyClass.myMethod),
object: self,
timer: timer,
category: NRTraceTypeDatabase)

Swiftではカスタム属性とイベントの報告

NewRelic オブジェクトのメソッドを使用して、 カスタムアトリビュートとイベントを報告します 。Swiftでカスタムアトリビュートとイベントのために利用可能なメソッドの詳細については、 iOS SDK APIリファレンス を参照してください。BOOL 結果を返すメソッドは、成功した場合は YES を、操作が完了しなかった場合は NO を返します。これらのメソッドは、New Relic iOS SDK のバージョン 5.0.0 以降で利用可能です。SDKは、一度に128個までのユーザー定義の カスタムアトリビュート を保存することができます。128を超えるアトリビュートを保存しようとすると、SDKは NO を返します。カスタムアトリビュートの名前は必要に応じて最もシンプルなフォーマットを使用し、New Relic ではスペースを含まないシングルワードのアトリビュートを推奨しています。属性 フレーズ はキャメルケースでフォーマットすることができますので、 My Custom AttributemyCustomAttribute と指定するのが良いでしょう。カスタムメトリクスと同様です。

  • / ] という文字の使用は避けてください。[ | * ] 名前をつけるときには、このようにしてください。
  • マルチバイト文字は避けてください。

Swift。カスタムネットワークリクエストの追跡

トランザクショナルネットワークのリクエストを、HTTPリクエストと同じような言葉で表現できれば、それを追跡することができます。変わりやすいパスやホスト名を含まない、整形されたURLを使用してください。complete のリクエストには、この方法を使ってください。

NewRelic.noticeNetworkRequestForURL(url: NSURL!,
httpMethod: String!,
withTimer: NRTimer!,
responseHeaders:[NSObject : AnyObject]!,
statusCode: Int,
bytesSent: UInt,
bytesReceived: UInt,
responseData: NSData!,
andParams: [NSObject : AnyObject]!)

パラメータは以下の通りです。

パラメーター

説明

url

リクエストのURL

httpメソッド

リクエストのメソッドタイプ(例:POST、GETなど)。

タイマー

ネットワークリクエストのタイミングを計ったNRTimer

ヘッダ

利用可能な場合は、HTTPレスポンスヘッダを含む辞書

httpStatusCode

レスポンスステータスコード

httpStatusCode が 400 以上の場合、エージェントはサーバーエラーを記録し、提供されていれば responseData のボディをキャプチャすることができます。

bytesSent

リクエストボディのサイズ

bytesReceived

レスポンスのサイズBody

レスポンスデータ

エージェントがServer error paramsを記録した場合に取得されるレスポンスボディデータ

params

HTTPトランザクションがエラーの場合、HTTPエラーメトリックに含まれる追加パラメータ

ソケットやオペレーティングシステムのエラーにより が失敗するリクエストには、この方法を使用してください。

NewRelic.noticeNetworkFailureForURL(url: NSURL!,
httpMethod: NSString!,
withTimer: NRTimer!,
andFailureCode: Int)

パラメータは以下の通りです。

パラメーター

説明

url

リクエストのURL

httpメソッド

リクエストのメソッドタイプ(例:POST、GETなど)。

タイマー

ネットワークリクエストのタイミングを計ったNRTimer

iOSFailureCode

故障コード

失敗コードは NSURLError* コードとして解釈されます。サポートされているコードの全リストは、 NRConstants.h を参照してください。

Copyright © 2022 New Relic Inc.