New Relic のモバイルモニタリング は、モバイルアプリから デフォルトのイベントデータ を New Relic に送信します。例えば、インタラクション、セッション、クラッシュ、リクエストエラーなどのデータがあります。また、より詳細なクエリや分析のために、独自のカスタム属性やイベントを作成することもできます。
カスタムアトリビュートとイベントの作成 モバイルエージェントSDKを使用して、デフォルトのモバイルモニタリングイベントのカスタムセッションレベル属性を作成できます。たとえば、iOSまたはAndroidアプリの一部のusername
属性を記録するには、 setAttribute
API( Android | iOS )を使用します。これらの属性はセッション関連の情報であり、複数のモバイルイベントタイプで共有されます。
recordCustomEvent
API( Android | iOS )を使用して、まったく新しいカスタムイベントタイプを作成し、それらに独自のカスタム属性を割り当てることもできます。
クラッシュ分析を支援するために、SDKを使用してMobileBreadcrumb
およびMobileHandledException
イベントを作成できます。これらのイベントはクエリに使用でき、クラッシュイベントトレイルUI にも表示されます。
カスタムアトリビュートやカスタムイベントの作成については、以下を参照してください。
モバイルイベントと属性クエリの例 ここでは、 NRQL を使って、モバイルアプリのイベントや属性を照会する例を紹介します。
カスタムイベントの例。購入履歴の確認 アプリでの購入を追跡するには、 recordCustomEvent
を使用してイベントタイプ(「UserAction」など)を作成し、「name」(値は「Purchase」)、価格、数量、SKUなどの属性を関連付けます。
ヒント パフォーマンス上の理由から、イベントタイプの総数を1つか2つに制限する必要があります。 recordCustomEvent
パラメータeventType
は、高レベルのカテゴリに使用するためのものです。たとえば、イベントタイプGestures
を作成してから、 Gesture
イベントタイプの下にさまざまなカスタムイベント名を作成できます。
iOSでイベントを作成します。
BOOL purchaseRecorded = [NewRelic recordCustomEvent :@"UserAction" attributes:@{@"name": @"Purchase", @"sku": @"12345LPD", @"quantity": @1, @"unitPrice": @99.99, @"total": @99.99}];
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
非推奨のrecordEvent
メソッドを置き換えます。
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
メソッドを呼び出します。
iOSのuserIdを設定します。
BOOL userIdWasSet = [NewRelic setUserId:@"jsmith"];
Androidの場合、userIdを設定します。
boolean userIdWasSet = NewRelic.setUserId("jsmith");
この属性を使用すると、WHERE
句を使用して、前日にそのusername
によって実行されたすべてのアクションを確認できます。
SELECT * from Mobile WHERE userId = 'jsmith' since 1 day ago
属性の例。特定のストアIDを追跡する カスタム属性を作成して、セッション全体でストアIDを追跡し、そのストアのすべてのインタラクションを照会できます。 storeId
の属性を追加するには、 setAttribute
メソッドを呼び出します。
iOSではstoreIdを設定します。
BOOL attributeSet = [NewRelic setAttribute :@"storeId" value:@"NY0531"];
Androidでは、storeIdを設定します。
boolean attributeSet = NewRelic.setAttribute ("storeId", "NY0531");
この属性を使用すると、WHERE
句を使用して、前日にそのstoreId
によって実行されたすべてのアクションを確認できます。
SELECT * from Mobile WHERE storeId = 'NY0531' since 1 day ago
カスタムアトリビュートの例。特定のアクションを追跡する カスタム属性を使用すると、アプリケーション内で特定のアクションが発生した回数を追跡することができます。例えば、ボタンがクリックされた回数や、ゲームでレベルをクリアした回数などを記録することができます。
ゲームレベルの完了を追跡するには、値を指定せずにincrementAttribute
を呼び出します。これにより、デフォルト値1
の属性が作成されます。
iOSでカウンターを作成します。
Androidでカウンターを作る。
incrementAttribute
への後続の各呼び出しは、属性level
に1を追加します。
iOSでカウンタをインクリメントすることができます。
Androidでカウンタをインクリメントします。
重要 最初からやり直す場合は、必ず0に戻してください。
レベルを1
または0
にリセットするには、 setAttribute
を呼び出します。
iOSのカウンターをリセットします。
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を使用して、イベントおよび属性データを照会および分析できます。
エージェントがイベントをメモリに保存する最大時間(秒単位)を設定するには、以下のSDKコールを使用します。
iOSの方法です。
+ (void) setMaxEventBufferTime:(unsigned int)seconds;
Android方式 :
public static void setMaxEventBufferTime(int maxBufferTimeInSec);
プライバシーへの配慮 カスタム属性によって個人データを収集したい場合は、プライバシーチームまたは法務チームにご相談ください。通知や同意の規定については、必ず組織の義務に従ってください。