SDK 初期化¶
本ドキュメントでは、Android SDK の初期化に関する内容を説明します。
Application の設定¶
SDK の初期化は Application の onCreate メソッド内で行うのが最適です。アプリで Application がまだ作成されていない場合は作成し、AndroidManifest.xml で宣言する必要があります。サンプルはこちらを参照してください。
基本設定¶
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);
}
}
| メソッド名 | 型 | 必須 | 説明 |
|---|---|---|---|
| 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 で明示的に有効にしてください。
ファイルキャッシュへの書き込みを事前に検証する必要がある場合は、シャドウ書き込みを有効にできます。有効にすると、SDK は引き続き SQLite からデータを読み取り、書き込みをファイルキャッシュに同期ミラーリングします。検証が完了したら、enableFileDataStore に切り替えてください。
キャッシュサイズ制限¶
ブラックリストフィルタ¶
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)
ローカルおよびリモートのデータフィルタを無効にする場合は、次のように明示的に設定します。
ワークスペースのブラックリストルールの取得間隔は、サーバーが返す pull_interval に従います。サーバーが有効な値を返さない場合、SDK はフォールバック間隔として 10 秒を使用します。pull_interval には秒数または単位付きの文字列を指定できます。例:10、30s、2m、1h。
実行時機能¶
SDK のシャットダウン¶
SDK の設定を動的に変更する場合は、誤ったデータの発生を防ぐため、先にシャットダウンする必要があります。
SDK キャッシュデータのクリア¶
FTSdk を使用して未送信のキャッシュデータをクリアします。
データ自動同期の設定¶
ft-sdk 1.7.3 以降では、SDK 初期化後にキャッシュデータの自動同期を動的に有効/無効にすることができます。無効にすると、SDK は収集データをローカルキャッシュに書き込みますが、収集後に自動同期はトリガーされません。FTSdk.flushSyncData() と組み合わせてデータ同期を管理できます。
データの手動同期¶
FTSdk を使用してデータを手動同期します。
FTSdk.setAutoSync(false)の場合のみ、手動でデータ同期を行う必要があります。