手動統合¶
ft-plugin を使用しない場合の SDK 統合方法¶
Guance は Android Gradle Plugin Transformation によるコードインジェクションを利用してデータの自動収集を実現します。しかし、互換性の問題により、ft-plugin や ft-plugin-legacy を使用できない場合があります。影響を受ける範囲は以下のとおりです。
- RUM の
Action、Resource android.util.Log- Java と Kotlin の
printlnコンソールログの自動取得 - シンボルファイルの自動アップロード
このような場合には、手動統合方式を採用できます。
Application 起動イベント¶
サンプルコードは DemoForManualSet.kt を参照してください。
ユーザー操作の手動追加¶
ボタンなどのイベントは、トリガー箇所で手動で追加する必要があります。ここでは Button の onClick イベントを例にします。サンプルコードは ManualActivity.kt を参照してください:
OkHttp Resource / Trace の手動統合¶
OkHttp は addInterceptor、eventListener を使用して Resource と Trace を統合できます。以下に例を示します。サンプルコードは ManualActivity.kt を参照してください:
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.addInterceptor(new FTTraceInterceptor())
.addInterceptor(new FTResourceInterceptor())
.eventListenerFactory(new FTResourceEventListener.FTFactory());
//.eventListenerFactory(new FTResourceEventListener.FTFactory(true));
OkHttpClient client = builder.build();
その他のネットワークフレームワークでは、FTRUMGlobalManager.startResource、stopResource、addResource および FTTraceManager.getTraceHeader を自前で実装する必要があります。具体的な実装方法は、サンプルコード ManualActivity.kt を参照してください。
OkHttp WebSocket Resource の手動統合¶
ft-sdk >= 1.7.5 の場合、WebSocket の自動インスツルメンテーションをサポートする ft-plugin を使用していなければ、FTWebSocket を使用して OkHttp WebSocket のハンドシェイク Resource を明示的に収集できます。事前に FTRUMConfig.setEnableTraceUserResource(true) を有効にしておく必要があります。既存の Resource URL フィルタリングと RUM サンプリングルールは引き続き適用されます。収集対象はハンドシェイク成功、サーバー側による拒否、または失敗のみであり、接続の存続時間は統計されず、メッセージ内容も収集されません。
呼び出し箇所が少ない場合は、直接 FTWebSocket.newWebSocket() を使用できます:
プロジェクトで依存性注入により WebSocket factory を統一提供している場合は、一度ラップした後に WebSocket.Factory として注入できます:
wrap() は複数回の呼び出しに対応しています。ft-plugin >= 1.3.8 が同時に有効になっていても、同一リクエストに対してハンドシェイク Resource が一度だけ収集されます。サードパーティライブラリが内部で OkHttpClient を保持し、newWebSocket() の呼び出し箇所を公開しておらず、WebSocket.Factory の注入も許可していない場合は、引き続き ft-plugin による自動インスツルメンテーションを使用する必要があります。