デフォルトでは、New Relic は、インタラクション、セッション、クラッシュ、リクエスト エラーなどの一部のイベント データをモバイル アプリから New Relic に収集します。ただし、独自のカスタム属性とイベントを作成して、より詳細なクエリと分析を行うこともできます。
カスタムアトリビュートとイベントの作成
モバイル エージェント SDK を使用して、デフォルトのイベントのカスタム セッション レベル プロパティを作成できます。 たとえば、iOS または Android アプリの一部のusername
属性を記録するには、setAttribute
API を使用します。 これらの属性はセッション関連の情報であり、複数のモバイル イベント タイプで共有されます。
recordCustomEvent
APIを使用して、まったく新しいカスタム イベント タイプを作成し、独自のカスタム属性を割り当てることもできます。
クラッシュ分析を支援するために、SDKを使用してMobileBreadcrumb
およびMobileHandledException
イベントを作成できます。これらのイベントはクエリに使用でき、クラッシュイベントトレイルUIにも表示されます。
カスタムアトリビュートやカスタムイベントの作成については、以下を参照してください。
モバイルイベントと属性クエリの例
ここでは、 NRQL を使って、モバイルアプリのイベントや属性を照会する例を紹介します。
アプリでの購入を追跡するには、 recordCustomEvent
を使用してイベントタイプ(「UserAction」など)を作成し、「name」(値は「Purchase」)、価格、数量、SKUなどの属性を関連付けます。
ヒント
パフォーマンス上の理由から、イベントタイプの総数を1つか2つに制限する必要があります。 recordCustomEvent
パラメータeventType
は、高レベルのカテゴリに使用するためのものです。たとえば、イベントタイプGestures
を作成してから、 Gesture
イベントタイプの下にさまざまなカスタムイベント名を作成できます。
Create an event on iOS:
BOOL purchaseRecorded = [NewRelic recordCustomEvent:@"UserAction" attributes:@{@"name": @"Purchase", @"sku": @"12345LPD", @"quantity": @1, @"unitPrice": @99.99, @"total": @99.99}];
Create an event on Android:
Map<String, Object> userActionAttributes = new HashMap<String, Object>();
userActionAttributes.put("name", "Purchase");
userActionAttributes.put("sku", "12345LPD");
userActionAttributes.put("quantity", 1);
userActionAttributes.put("unitPrice", 99.99);
userActionAttributes.put("total", 99.99);
boolean userActionRecorded = NewRelic.recordCustomEvent("UserAction", userActionAttributes);
New Relicは、タイプUserAction
および名前Purchase
のカスタムイベントを報告します。これにより、前日にアプリで行われたすべての購入をクエリできます。
SELECT * from UserAction where name = 'Purchase' since 1 day ago
Replace deprecated recordEvent
method:
Androidエージェントバージョン5.12.0およびiOSエージェントバージョン5.12.0では、 recordCustomEvent
メソッドを使用してこれらのカスタムイベントを作成します。カスタムイベントの非推奨のrecordEvent
メソッドを置き換えた場合は、対応するNRQLクエリも新しい形式に置き換えてください。
次のような、 recordEvent
メソッドで使用されるクエリを探します。
SELECT * from Mobile where category = 'Custom' and name = 'Purchase' since 1 day ago
それらをrecordCustomEvent
で使用されるクエリ形式に置き換えます。
SELECT * from UserAction where name = 'Purchase' since 1 day ago
カスタム属性を作成して、セッション全体でカスタムユーザー識別子を追跡し、そのユーザーのすべてのインタラクションを照会できます。 userId
の属性を追加するには、 setUserId
メソッドを呼び出します。
Set the userId
on iOS:
BOOL userIdWasSet = [NewRelic setUserId:@"jsmith"];
Set the userId
on Android:
boolean userIdWasSet = NewRelic.setUserId("jsmith");
この属性を使用すると、WHERE
句を使用して、前日にそのusername
によって実行されたすべてのアクションを確認できます。
SELECT * from Mobile WHERE userId = 'jsmith' since 1 day ago
カスタム属性を作成して、セッション全体でストアIDを追跡し、そのストアのすべてのインタラクションを照会できます。 storeId
の属性を追加するには、 setAttribute
メソッドを呼び出します。
Set the storeId
on iOS:
BOOL attributeSet = [NewRelic setAttribute:@"storeId" value:@"NY0531"];
Set the storeId
on Android:
boolean attributeSet = NewRelic.setAttribute("storeId", "NY0531");
この属性を使用すると、WHERE
句を使用して、前日にそのstoreId
によって実行されたすべてのアクションを確認できます。
SELECT * from Mobile WHERE storeId = 'NY0531' since 1 day ago
カスタム属性を使用すると、アプリケーション内で特定のアクションが発生した回数を追跡することができます。例えば、ボタンがクリックされた回数や、ゲームでレベルをクリアした回数などを記録することができます。
ゲームレベルの完了を追跡するには、値を指定せずにincrementAttribute
を呼び出します。これにより、デフォルト値1
の属性が作成されます。
Create a counter on iOS:
Create a counter on Android:
incrementAttribute
への後続の各呼び出しは、属性level
に1を追加します。
Increment a counter on iOS:
Increment a counter on Android:
重要
最初からやり直す場合は、必ず0に戻してください。
レベルを1
または0
にリセットするには、 setAttribute
を呼び出します。
Reset a counter on iOS:
Reset a counter on Android:
クエリを実行するときは、このlevel
属性を使用してデータをフィルタリングします。たとえば、 username
}属性とlevel
属性がある場合は、 max()
関数を使用して、ユーザーが到達した最高レベルを見つけます。
SELECT max(level) from Mobile where username = 'jsmith'
サイズ制限と制限文字
Limits for カスタムアトリビュートをデフォルトのモバイルイベントに追加:
- アトリビュート。最大128個
- 文字列属性。最大長さ4KB(空の文字列値は受け付けません)
カスタムイベントの制限値
- アトリビュート。1イベントあたり最大254個(デフォルトの セッションアトリビュート を含む数です。)
- 文字列属性。最大長さ4KB(空の文字列値は受け付けません)
ネーミングの構文とルール カスタムデータのルール を参照してください。
データを送信する時間の設定
デフォルトでは、New Relicはこれらのいずれの状況でもイベントデータを送信します。
- セッションは600秒継続しています。
- アプリのセッションはバックグラウンドで終了します。
- アプリがクラッシュします。
アプリがクラッシュした場合、NewRelicはそのセッションの属性とイベントを収集します。 (iOSでは、これは次にアプリが起動されたときに発生します)。次に、NRQLを使用して、イベントおよび属性データを照会および分析できます。
エージェントがイベントをメモリに保存する最大時間 (秒単位) を設定するには、 「最大バッファー時間を設定する」を参照してください。
プライバシーへの配慮
カスタム属性によって個人データを収集したい場合は、プライバシーチームまたは法務チームにご相談ください。通知や同意の規定については、必ず組織の義務に従ってください。