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
のカスタムイベントが報告され、過去1日にアプリで行われたすべての購入を照会することができます。
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
句を使って、その ユーザー名
が過去1日に行ったすべてのアクションを見ることができます。
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
が過去1日に行ったすべてのアクションを見ることができます。
SELECT * from Mobile WHERE storeId = 'NY0531' since 1 day ago
カスタムアトリビュートの例。特定のアクションを追跡する カスタム属性を使用すると、アプリケーション内で特定のアクションが発生した回数を追跡することができます。例えば、ボタンがクリックされた回数や、ゲームでレベルをクリアした回数などを記録することができます。
ゲームレベルの完了を追跡するには、 incrementAttribute
を値を指定せずに呼び出します。これにより、デフォルト値が 1
のアトリビュートが作成されます。
iOSでカウンターを作成します。
Androidでカウンターを作る。
その後、 incrementAttribute
を呼び出すたびに、属性 レベル
に 1 が追加されます。
iOSでカウンタをインクリメントすることができます。
Androidでカウンタをインクリメントします。
重要 最初からやり直す場合は、必ず0に戻してください。
レベルを 1
または 0
に戻すには、 setAttribute
を呼び出します。
iOSのカウンターをリセットします。
Androidでカウンターをリセットする。
問い合わせの際には、この レベル
属性を使用して、データをフィルタリングします。例えば、 username
and level
属性がある場合、 max()
関数を使用して、ユーザーが到達した最高レベルを見つけます。
SELECT max(level) from Mobile where username = 'jsmith'
サイズ制限と制限文字 Limits for カスタムアトリビュートをデフォルトのモバイルイベントに追加 :
アトリビュート。最大128個 文字列属性。最大長さ4KB(空の文字列値は受け付けません) カスタムイベントの制限値
アトリビュート。1イベントあたり最大254個(デフォルトの セッションアトリビュート を含む数です。) 文字列属性。最大長さ4KB(空の文字列値は受け付けません) ネーミングの構文とルール カスタムデータのルール を参照してください。
データを送信する時間の設定 デフォルトでは、New Relicはこれらのいずれの状況でもイベントデータを送信します。
セッションは600秒継続しています。 アプリのセッションはバックグラウンドで終了します。 アプリがクラッシュします。 アプリがクラッシュした場合、New Relic はそのセッションの属性とイベントを収集し、Insights に送信します。(iOSの場合、これは次にアプリが起動したときに行われます)。その後、Insights を使用してイベントや属性データを照会、分析することができます。
エージェントがイベントをメモリに保存する最大時間(秒単位)を設定するには、以下のSDKコールを使用します。
iOSの方法です。
+ (void) setMaxEventBufferTime:(unsigned int)seconds;
Android方式 :
public static void setMaxEventBufferTime(int maxBufferTimeInSec);
プライバシーへの配慮 カスタム属性によって個人データを収集したい場合は、プライバシーチームまたは法務チームにご相談ください。通知や同意の規定については、必ず組織の義務に従ってください。