コンテンツにスキップ

SDK 初期化

本ドキュメントでは、Android SDK の初期化に関する内容を説明します。

Application の設定

SDK の初期化は Application の onCreate メソッド内で行うのが最適です。アプリで Application がまだ作成されていない場合は作成し、AndroidManifest.xml で宣言する必要があります。サンプルはこちらを参照してください。

<application
       android:name="YourApplication">
</application>

基本設定

public class DemoApplication extends Application {

    @Override
    public void onCreate() {
        // ローカル環境デプロイ、Datakit デプロイ
        FTSDKConfig config = FTSDKConfig.builder(datakitUrl);
        // パブリック DataWay を使用
        FTSDKConfig config = FTSDKConfig.builder(datawayUrl, clientToken);
        // ...
        // config.setDebug(true);              // debug モード
        FTSdk.install(config);
    }
}
class DemoApplication : Application() {
    override fun onCreate() {
        // ローカル環境デプロイ、Datakit デプロイ
        val config = FTSDKConfig.builder(datakitUrl)
        // パブリック DataWay を使用
        val config = FTSDKConfig.builder(datawayUrl, clientToken)
        // ...
        // config.setDebug(true)              // debug モード
        FTSdk.install(config)
    }
}
メソッド名 型 必須 説明
datakitUrl String はい ローカル環境デプロイ(Datakit)のデータ送信 URL です。例:http://10.0.0.1:9529、ポートはデフォルトで 9529 です。SDK をインストールした端末からこのアドレスにアクセスできる必要があります。注意:datakitUrl と datawayUrl はどちらか一方のみ設定してください
datawayUrl String はい パブリック Dataway のデータ送信 URL です。[RUM] アプリから取得します。例:https://open.dataway.url、SDK をインストールした端末からこのアドレスにアクセスできる必要があります。注意:datakitUrl と datawayUrl はどちらか一方のみ設定してください
clientToken String はい 認証トークンです。datawayUrl と同時に設定する必要があります
setDebug Boolean いいえ デバッグモードを有効にするかどうか。デフォルトは false です。有効にすると SDK の実行ログが出力されます
setEnv EnvType いいえ 収集環境を設定します。デフォルトは EnvType.PROD です
setEnv String いいえ 収集環境を設定します。デフォルトは prod です。注意:String 型または EnvType 型のどちらか一方のみ設定してください
setOnlySupportMainProcess Boolean いいえ メインプロセスでのみ実行するかどうか。デフォルトは true です。他のプロセスで実行する必要がある場合は、このフィールドを false に設定してください
setAllowWebViewHost Array いいえ WebView RUM と Log が Bridge を使用できる host の範囲を一括設定します。null はすべての host を許可します。空の配列は Bridge を自動的に使用しないことを示します。設定した host はサブドメインにも一致します。デフォルトは null です。ft-sdk 1.7.5 以降でサポートされます。詳細は WebView モニタリング を参照してください
setEnableAccessAndroidID Boolean いいえ Android ID の取得を有効にします。デフォルトは true です。false に設定すると device_uuid フィールドのデータは収集されません。ストアのプライバシー審査に関連する情報はこちらをご覧ください
addGlobalContext Dictionary いいえ SDK のグローバル属性を追加します。追加ルールはこちらを参照してください
setServiceName String いいえ サービス名を設定します。Log と RUM の service フィールドのデータに影響します。デフォルトは df_rum_android です
setAutoSync Boolean いいえ データ収集後にサーバーへ自動同期するかどうか。デフォルトは true です。false の場合は FTSdk.flushSyncData() を使用してデータ同期を管理します
setSyncPageSize Int いいえ 同期リクエストの件数を設定します。SyncPageSize.MINI は 5 件、SyncPageSize.MEDIUM は 10 件、SyncPageSize.LARGE は 50 件です。デフォルトは SyncPageSize.MEDIUM です
setCustomSyncPageSize Enum いいえ 同期リクエストの件数を設定します。範囲は [5,) です。リクエスト件数が大きいほど、データ同期でより多くの計算リソースを消費します。デフォルトは 10 です。注意:setSyncPageSize と setCustomSyncPageSize はどちらか一方のみ設定してください
setSyncSleepTime Int いいえ 同期間隔を設定します。範囲は [0,5000]、単位は ms、デフォルトは 0 です
enableDataIntegerCompatible Void いいえ Web データと共存する場合は、有効にすることを推奨します。この設定は、Web データ型のストレージ互換性の問題を処理するためのものです。ft-sdk 1.6.9 ではデフォルトで有効です
setNeedTransformOldCache Boolean いいえ ft-sdk 1.6.0 未満の旧バージョンのキャッシュデータを互換同期する必要があるかどうか。デフォルトは false です
enableFileDataStore Void いいえ ファイルキャッシュを有効にします。同期キャッシュと RUM 集計データに使用されます。デフォルトでは SQLite キャッシュを使用します。ft-sdk 1.7.2 以降でサポートされます
setUseFileDataStore Boolean いいえ ファイルキャッシュを使用するかどうかを設定します。true を渡すとファイルキャッシュを使用し、false を渡すとデフォルトの SQLite キャッシュを使用します。ft-sdk 1.7.2 以降でサポートされます
setFileDataStoreShadow Boolean いいえ ファイルキャッシュへのシャドウ書き込みを有効にします。有効にすると、読み取りは SQLite のままで、書き込みがファイルキャッシュにミラーリングされます。移行前の検証用です。ft-sdk 1.7.2 以降でサポートされます
setCompressIntakeRequests Boolean いいえ アップロードする同期データを deflate 圧縮します。デフォルトで有効です。false に設定すると無効にできます。ft-sdk 1.6.3 以降でこのメソッドをサポートします
enableLimitWithCacheSize Void, Long いいえ 総キャッシュサイズ制限を有効にします。デフォルトは 100MB、単位は Byte です。cacheSize を渡す場合の範囲は [30MB,) です。有効にすると、FTLoggerConfig.setLogCacheLimitCount と FTRUMConfig.setRumCacheLimitCount は無効になります。ft-sdk 1.7.2 以降でサポートされます
setCacheDiscard CacheDiscard いいえ キャッシュがサイズ上限に達した後の破棄ポリシーを設定します。デフォルトは CacheDiscard.DISCARD です。DISCARD は追加されたデータを破棄し、DISCARD_OLDEST は最も古いキャッシュデータを削除します。ft-sdk 1.7.2 以降でサポートされます
enableLimitWithDbSize Void いいえ 非推奨です。旧バージョンとの互換のために残されています。enableLimitWithCacheSize への置き換えを推奨します
setEnableOkhttpRequestTag Boolean いいえ OkHttp Request に一意の ResourceID を自動的に追加します。同じリクエストが高並行で発生するケース向けです。ft-sdk 1.6.10 以降、ft-plugin 1.3.5 以降でサポートされます
setProxy java.net.Proxy いいえ データ同期ネットワークリクエストにプロキシを設定します。okhttp3 のみサポートされます。ft-sdk 1.6.10 以降でサポートされます
setProxyAuthenticator okhttp3.Authenticator いいえ データ同期ネットワークリクエストにプロキシ認証を設定します。okhttp3 のみサポートされます。ft-sdk 1.6.10 以降でサポートされます
setDns okhttp3.Dns いいえ データ同期ネットワークリクエストでカスタム DNS によるドメイン名解決のカスタム処理をサポートします。okhttp3 のみサポートされます。ft-sdk 1.6.10 以降でサポートされます
setDataModifier DataModifier いいえ 単一フィールドを変更します。ft-sdk 1.6.11 以降でサポートされます。使用例はこちらを参照してください
setLineDataModifier LineDataModifier いいえ 単一データを変更します。ft-sdk 1.6.11 以降でサポートされます。使用例はこちらを参照してください
setEnableDataFilter Boolean いいえ ブラックリストフィルタを有効にするかどうか。デフォルトは true です。Logging と RUM データのフィルタリングをサポートします。ft-sdk 1.7.2 以降でサポートされます
setDataFilters HashMap<String, String[]> いいえ アプリ内のブラックリストルールを設定します。logging と rum の 2 種類のデータをサポートします。ルール構文はブラックリストフィルタルールを参照してください。ft-sdk 1.7.2 以降でサポートされます
setRemoteConfiguration Boolean いいえ データ収集のリモート設定機能を有効にするかどうか。デフォルトは false です。有効にすると、SDK 初期化時またはアプリのホットスタート時にデータ更新がトリガーされます。ft-sdk 1.6.12 以降でサポートされます。DataKit のバージョンは >= 1.60 であるか、パブリック Dataway を使用する必要があります
setRemoteConfigMiniUpdateInterval Int いいえ データ更新の最短間隔を設定します。単位は秒、デフォルトは 12 時間です。ft-sdk 1.6.12 以降でサポートされます
setRemoteConfigurationCallBack FTRemoteConfigManager.FetchResult いいえ リモート設定の結果を返します。コード例。ft-sdk 1.6.16 以降でサポートされます

ファイルキャッシュ

ft-sdk 1.7.2 以降では、同期キャッシュと RUM 集計データをファイルキャッシュに書き込むことができます。旧バージョンからのスムーズなアップグレードを保証するため、SDK はデフォルトで SQLite キャッシュを使用します。ファイルキャッシュを有効にする場合は、FTSDKConfig で明示的に有効にしてください。

FTSDKConfig config = FTSDKConfig.builder(datawayUrl, clientToken)
        .enableFileDataStore();

FTSdk.install(config);
val config = FTSDKConfig.builder(datawayUrl, clientToken)
    .enableFileDataStore()

FTSdk.install(config)

ファイルキャッシュへの書き込みを事前に検証する必要がある場合は、シャドウ書き込みを有効にできます。有効にすると、SDK は引き続き SQLite からデータを読み取り、書き込みをファイルキャッシュに同期ミラーリングします。検証が完了したら、enableFileDataStore に切り替えてください。

FTSDKConfig config = FTSDKConfig.builder(datawayUrl, clientToken)
        .setFileDataStoreShadow(true);
val config = FTSDKConfig.builder(datawayUrl, clientToken)
    .setFileDataStoreShadow(true)

キャッシュサイズ制限

FTSDKConfig config = FTSDKConfig.builder(datawayUrl, clientToken)
        // 総キャッシュサイズ制限を有効にする(例:100MB)
        .enableLimitWithCacheSize(100 * 1024 * 1024L)
        // キャッシュが上限に達した後、最も古いキャッシュデータを削除する
        .setCacheDiscard(CacheDiscard.DISCARD_OLDEST);

FTSdk.install(config);
val config = FTSDKConfig.builder(datawayUrl, clientToken)
    // 総キャッシュサイズ制限を有効にする(例:100MB)
    .enableLimitWithCacheSize(100 * 1024 * 1024L)
    // キャッシュが上限に達した後、最も古いキャッシュデータを削除する
    .setCacheDiscard(CacheDiscard.DISCARD_OLDEST)

FTSdk.install(config)

ブラックリストフィルタ

ft-sdk 1.7.2 以降では、データがローカルキャッシュに書き込まれる前に Logging、RUM データをフィルタできます。この機能はデフォルトで有効で、setEnableDataFilter(false) で無効にできます。

ブラックリストルールは、Guance ワークスペースのブラックリストで一括設定でき、SDK が DataKit または Dataway から自動取得します。また、setDataFilters を使用してアプリ内で設定することもできます。この 2 つの方法は同じブラックリストフィルタ機能に対応しており、併用できます。いずれかのルールに一致したデータは破棄されます。

setDataFilters は logging、rum の 2 種類のルールをサポートします。各ルールは { 条件 } で表し、データのタグ、フィールド、および source、measurement、class などのデータ型を示すフィールドを一致させることができます。完全な構文はブラックリストフィルタルールを参照してください。

ブラックリストフィルタは LineDataModifier の後、ローカルキャッシュへの書き込み前に実行されます。setLineDataModifier とブラックリストフィルタを併用している場合、フィルタルールは変更後のデータに基づいて判定されます。

HashMap<String, String[]> filters = new HashMap<>();
filters.put("logging", new String[]{
        "{ source in ['custom_log'] and message match ['password'] }"
});
filters.put("rum", new String[]{
        "{ source in ['resource'] and status in [404, 503] }"
});

FTSDKConfig config = FTSDKConfig.builder(datawayUrl, clientToken)
        .setEnableDataFilter(true)
        .setDataFilters(filters);

FTSdk.install(config);
val filters = hashMapOf(
    "logging" to arrayOf(
        "{ source in ['custom_log'] and message match ['password'] }"
    ),
    "rum" to arrayOf(
        "{ source in ['resource'] and status in [404, 503] }"
    )
)

val config = FTSDKConfig.builder(datawayUrl, clientToken)
    .setEnableDataFilter(true)
    .setDataFilters(filters)

FTSdk.install(config)

ローカルおよびリモートのデータフィルタを無効にする場合は、次のように明示的に設定します。

FTSDKConfig.builder(datawayUrl, clientToken)
        .setEnableDataFilter(false);

ワークスペースのブラックリストルールの取得間隔は、サーバーが返す pull_interval に従います。サーバーが有効な値を返さない場合、SDK はフォールバック間隔として 10 秒を使用します。pull_interval には秒数または単位付きの文字列を指定できます。例:10、30s、2m、1h。

実行時機能

SDK のシャットダウン

SDK の設定を動的に変更する場合は、誤ったデータの発生を防ぐため、先にシャットダウンする必要があります。

FTSdk.shutDown();
FTSdk.shutDown()

SDK キャッシュデータのクリア

FTSdk を使用して未送信のキャッシュデータをクリアします。

FTSdk.clearAllData();
FTSdk.clearAllData()

データ自動同期の設定

ft-sdk 1.7.3 以降では、SDK 初期化後にキャッシュデータの自動同期を動的に有効/無効にすることができます。無効にすると、SDK は収集データをローカルキャッシュに書き込みますが、収集後に自動同期はトリガーされません。FTSdk.flushSyncData() と組み合わせてデータ同期を管理できます。

// 自動同期を無効にする
FTSdk.setAutoSync(false);

// 自動同期を有効にする
FTSdk.setAutoSync(true);
// 自動同期を無効にする
FTSdk.setAutoSync(false)

// 自動同期を有効にする
FTSdk.setAutoSync(true)

データの手動同期

FTSdk を使用してデータを手動同期します。

FTSdk.setAutoSync(false) の場合のみ、手動でデータ同期を行う必要があります。

FTSdk.flushSyncData();
FTSdk.flushSyncData()

フィードバック

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