コンテンツにスキップ

手動統合

ft-plugin を使用しない場合の SDK 統合方法

Guance は Android Gradle Plugin Transformation によるコードインジェクションを利用してデータの自動収集を実現します。しかし、互換性の問題により、ft-pluginft-plugin-legacy を使用できない場合があります。影響を受ける範囲は以下のとおりです。

  • RUMActionResource
  • android.util.Log
  • Java と Kotlin の println コンソールログの自動取得
  • シンボルファイルの自動アップロード

このような場合には、手動統合方式を採用できます。

Application 起動イベント

サンプルコードは DemoForManualSet.kt を参照してください。

// Application
@Override
public void onCreate() {
    super.onCreate();
    // SDK 初期化前に呼び出す必要があります
    FTAutoTrack.startApp(null);
    // SDK 設定を構成
    setSDK(this);
}
// Application
override fun onCreate() {
    super.onCreate()
    // SDK 初期化前に呼び出す必要があります
    FTAutoTrack.startApp(null)
    // SDK 設定を構成
    setSDK(this)
}

ユーザー操作の手動追加

ボタンなどのイベントは、トリガー箇所で手動で追加する必要があります。ここでは Button の onClick イベントを例にします。サンプルコードは ManualActivity.kt を参照してください:

view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        FTRUMGlobalManager.get().startAction("[action button]", "click");
    }
});
view.setOnClickListener {
    FTRUMGlobalManager.get().startAction("[action button]", "click")
}

OkHttp Resource / Trace の手動統合

OkHttpaddInterceptoreventListener を使用して ResourceTrace を統合できます。以下に例を示します。サンプルコードは 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();
val builder = OkHttpClient.Builder()
    .addInterceptor(FTTraceInterceptor())
    .addInterceptor(FTResourceInterceptor())
    .eventListenerFactory(FTResourceEventListener.FTFactory())
    //.eventListenerFactory(new FTResourceEventListener.FTFactory(true))
val client = builder.build()

その他のネットワークフレームワークでは、FTRUMGlobalManager.startResourcestopResourceaddResource および 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 socket = FTWebSocket.newWebSocket(okHttpClient, request, listener);
val socket = FTWebSocket.newWebSocket(okHttpClient, request, listener)

プロジェクトで依存性注入により WebSocket factory を統一提供している場合は、一度ラップした後に WebSocket.Factory として注入できます:

WebSocket.Factory factory = FTWebSocket.wrap(okHttpClient);
WebSocket socket = factory.newWebSocket(request, listener);
val factory: WebSocket.Factory = FTWebSocket.wrap(okHttpClient)
val socket = factory.newWebSocket(request, listener)

wrap() は複数回の呼び出しに対応しています。ft-plugin >= 1.3.8 が同時に有効になっていても、同一リクエストに対してハンドシェイク Resource が一度だけ収集されます。サードパーティライブラリが内部で OkHttpClient を保持し、newWebSocket() の呼び出し箇所を公開しておらず、WebSocket.Factory の注入も許可していない場合は、引き続き ft-plugin による自動インスツルメンテーションを使用する必要があります。

WebView の手動設定

FTAutoTrack.setUpWebView(webview);
//loadUrl 読み込み操作の前に設定を行います
FTAutoTrack.setUpWebView(webview)
//loadUrl 読み込み操作の前に設定を行います

フィードバック

このページは役に立ちましたか?