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); // デバッグモード
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 | いいえ | データネットワーク同期リクエストに Proxy プロキシ設定を行います。okhttp3 のみをサポートします。ft-sdk 1.6.10 以降でサポートされています |
| setProxyAuthenticator | okhttp3.Authenticator | いいえ | データ同期ネットワークリクエストに Proxy プロキシ認証を設定します。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 | いいえ | DataKit と互換性のあるブラックリストフィルタリング機能を有効にするかどうか。デフォルトは true です。Logging と RUM データのフィルタリングをサポートします。ft-sdk 1.7.2 以降でサポートされています |
| setDataFilters | HashMap<String, String[]> |
いいえ | ローカルブラックリストフィルタリングルールを設定します。サポートされるカテゴリは logging と rum です。一致するルールのデータは破棄されます。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 以降では、enableLimitWithCacheSize を使用して SDK の総キャッシュサイズ制限を設定することを推奨します。有効にすると、個別のログエントリ数上限 FTLoggerConfig.setLogCacheLimitCount および RUM エントリ数上限 FTRUMConfig.setRumCacheLimitCount は無効になります。
ブラックリストフィルタリング¶
ft-sdk 1.7.2 以降では、DataKit と互換性のあるブラックリストフィルタリングがサポートされています。これは、データをローカルキャッシュに書き込む前に Logging、RUM データをフィルタリングするために使用されます。この機能はデフォルトで有効になっており、setEnableDataFilter(false) で無効にできます。
ブラックリストルールは、ローカルルールとリモートルールに分けられます。
- ローカルルールは
setDataFiltersで設定され、logging、rumの 2 種類のルールをサポートします。 - リモートルールは、SDK が
/v1/datakit/pull?filters=true経由で DataKit または Dataway からプルします。 - ローカルルールとリモートルールは同時に有効になり、いずれかのルールに一致したデータは破棄されます。
- ブラックリストフィルタリングは、
LineDataModifierの後、ローカルキャッシュ書き込みの前に実行されます。setLineDataModifierとブラックリストフィルタリングの両方が設定されている場合、フィルタリングルールは変更後のデータに基づいて判断されます。
ルール式は {} で記述する必要があり、in、not in、match、not match 演算子をサポートします。複数の条件は and / or で組み合わせることができます。フィールドソースにはデータタグとフィールドが含まれ、source、measurement、class などのデータタイプ識別フィールドもサポートされます。
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)の場合のみ、手動でデータを同期する必要があります。