SDK 初期化¶
このドキュメントでは、Flutter SDK の初期化とランタイム機能に関する内容を説明します。
基本設定¶
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// ローカル環境へのデプロイ、Datakit デプロイ
await FTMobileFlutter.sdkConfig(
datakitUrl: datakitUrl,
);
// パブリック DataWay を使用
await FTMobileFlutter.sdkConfig(
datawayUrl: datawayUrl,
cliToken: cliToken,
);
}
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| 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 はどちらか一方のみ設定してください |
| cliToken | String | はい | 認証トークン。datawayUrl と同時に設定する必要があります |
| debug | bool | いいえ | ログの出力を許可するかどうかを設定します。デフォルトは false |
| env | String | いいえ | 環境設定。デフォルトは prod、任意の文字列を使用できますが、test のような単一の単語を使用することをお勧めします |
| envType | enum EnvType | いいえ | 環境設定。デフォルトは EnvType.prod。注意: env と envType はどちらか一方のみ設定してください |
| autoSync | bool | いいえ | データ収集後にサーバーへ自動同期するかどうか。デフォルトは true。false の場合、FTMobileFlutter.flushSyncData() を使用してデータ同期を自前で管理します |
| syncPageSize | enum | いいえ | 同期リクエストの件数を設定します。SyncPageSize.mini は 5 件、SyncPageSize.medium は 10 件、SyncPageSize.large は 50 件です。デフォルトは SyncPageSize.medium |
| customSyncPageSize | number | いいえ | 同期リクエストの件数をカスタマイズします(範囲: [5, ))。件数が大きいほど、データ同期により多くの計算リソースを使用します |
| syncSleepTime | number | いいえ | 同期の間隔を設定します。範囲は [0,5000]、デフォルトでは未設定 |
| globalContext | object | いいえ | カスタムタグを追加します。追加ルールはフィールド競合の説明を参照してください |
| serviceName | String | いいえ | サービス名 |
| customHttpOverrides | HttpOverrides | いいえ | カスタム HTTP Overrides。HTTP の自動収集を有効にしている場合、プロジェクトで HttpOverrides.global をすでにカスタマイズしていれば、このパラメータでカスタム実装を渡すことができます。SDK は収集パイプラインでその実装を再利用します |
| enableLimitWithDbSize | boolean | いいえ | DB を使用したデータサイズ制限を有効にします。上限はデフォルトで 100MB(単位: Byte)ですが、この機能はデフォルトでは無効です。有効にすると、logCacheLimitCount と rumCacheLimitCount は無効になります。SDK 0.5.3-pre.2 以降でサポートされます |
| dbCacheLimit | number | いいえ | DB キャッシュのサイズ上限。範囲は [30MB, )、デフォルトは 100MB、単位は byte です。SDK 0.5.3-pre.2 以降でサポートされます |
| dbCacheDiscard | string | いいえ | データベース内のデータ破棄ルールを設定します。FTDBCacheDiscard.discard は新しいデータを破棄し(デフォルト)、FTDBCacheDiscard.discardOldest は古いデータを破棄します。SDK 0.5.3-pre.2 以降でサポートされます |
| enableLimitWithCacheSize | boolean | いいえ | キャッシュサイズによるデータサイズ制限を有効にします。Android ではキャッシュの総サイズ制限を使用し、iOS では DB キャッシュサイズ制限にマッピングされます。有効にすると cacheLimit が優先され、未設定の場合は dbCacheLimit が使用されます |
| cacheLimit | number | いいえ | キャッシュサイズの上限(単位: byte)。Android ではキャッシュの総サイズに、iOS では DB キャッシュの上限に対応します |
| cacheDiscard | enum FTCacheDiscard | いいえ | キャッシュデータの破棄ルールを設定します。Android ではキャッシュ破棄ポリシーを使用し、iOS では DB データ破棄ルールにマッピングされます。FTCacheDiscard.discard は新しいデータを破棄し(デフォルト)、FTCacheDiscard.discardOldest は古いデータを破棄します |
| enableFileDataStore | boolean | いいえ | Android: FileStore ファイルキャッシュを有効にするかどうか |
| needTransformOldCache | boolean | いいえ | Android: FileStore を有効にする際に、古い SQLite キャッシュデータを移行するかどうか |
| fileDataStoreShadow | boolean | いいえ | Android: SQLite の読み取りパスを使用する際に、FileStore へも同期書き込みするかどうか |
| compressIntakeRequests | boolean | いいえ | アップロード同期データを deflate 圧縮します。SDK 0.5.3-pre.2 以降でサポートされ、デフォルトでは無効です |
| enableDataIntegerCompatible | boolean | いいえ | Web データと共存させる必要がある場合は、有効にすることを推奨します。Web データ型の保存互換性の問題を処理するために使用します。0.5.4-pre.1 以降はデフォルトで有効です |
| dataModifier | Map |
いいえ | 単一フィールドを変更します。使用例はデータ収集のマスキングを参照してください |
| lineDataModifier | Map |
いいえ | 単一データを変更します。使用例はデータ収集のマスキングを参照してください |
| enableDataFilter | bool | いいえ | SDK 側のブラックリストフィルタリングを有効にするかどうか。デフォルトは true。Log データと RUM データのフィルタリングをサポートします。SDK 0.5.7 以降でサポートされます。使用例はブラックリストフィルタリングを参照してください |
| dataFilters | Map |
いいえ | アプリ内のブラックリストルールを設定します。logging と rum の 2 種類のデータをサポートします。SDK 0.5.7 以降でサポートされます。ルール構文はルール構文を参照してください |
| enableRemoteConfiguration | boolean | いいえ | リモート設定を有効にするかどうか。有効にすると、SDK は設定された間隔でリモート設定を取得し、現在のランタイムに適用します |
| remoteConfigMiniUpdateInterval | number | いいえ | リモート設定の最小更新間隔。enableRemoteConfiguration と組み合わせて使用する必要があります |
| remoteConfigOverrideRules | List | いいえ | リモート設定のローカル上書きルール。デバッグや特定のシナリオで、リモート設定の結果を上書きするために使用します |
| iOSGroupIdentifiers | List |
いいえ | iOS App Group 識別子のリスト。Extension とメイン App がキャッシュデータを共有するために使用します |
ブラックリストフィルタリング¶
Flutter SDK 0.5.7 以降では、データがローカルキャッシュに書き込まれる前に RUM データと Log データをフィルタリングできます。この機能はデフォルトで有効です。enableDataFilter: false を指定すると SDK 側のフィルタリングを無効にできます。
ブラックリストルールは、Guance ワークスペースのブラックリストで一元的に設定でき、SDK が DataKit または DataWay から自動的に取得します。また、FTMobileFlutter.sdkConfig(dataFilters: ...) を使用してアプリ内で設定することもできます。2 つの方法はいずれも同じブラックリストフィルタリング機能に対応しており、併用できます。いずれかのルールが一致した場合、そのデータは破棄されます。
ブラックリストフィルタリングは lineDataModifier の後、ローカルキャッシュへの書き込み前に実行されます。lineDataModifier とブラックリストフィルタリングの両方を設定している場合、フィルタリングルールは変更後のデータに基づいて判定されます。
enableDataFilterは、SDK 側のルール取得とフィルタリングのみを制御します。falseに設定すると、SDK はdataFiltersを適用したりワークスペースのルールを取得したりしなくなります。DataKit を使用してデータを送信する場合、ワークスペースのブラックリストが DataKit 側で引き続き実行される可能性があります。Data Filter は SDK のデータ書き込みパイプラインに作用します。ルールが多すぎる場合や正規表現が複雑すぎる場合は、データ書き込みのパフォーマンスに影響を与える可能性があります。必要なルールのみを設定することをお勧めします。
await FTMobileFlutter.sdkConfig(
datawayUrl: datawayUrl,
cliToken: cliToken,
enableDataFilter: true,
dataFilters: {
'logging': [
"{ source in [ 'df_rum_ios_log', 'df_rum_android_log' ] and message match [ 'timeout' ] }",
],
'rum': [
"{ resource_status match [ '5..' ] }",
],
},
);
SDK は初期化時にワークスペースのブラックリストルールを直ちに取得します。以降の取得間隔はサーバーが返す pull_interval に従います。サーバーが有効な値を返さない場合、SDK はフォールバック間隔として 10 秒を使用します。pull_interval は秒数または単位付きの文字列(例: 10、30s、2m、1h)をサポートします。
ルール構文¶
Data Filter のルール構文は、ブラックリストフィルタリングルールと基本的に同じです。完全な構文の説明はブラックリストフィルタリングルールを参照してください。
dataFilters のキーはデータ分類を表します。現在 SDK がサポートしている分類は次のとおりです。
| 分類 | 説明 |
|---|---|
logging |
Log データ |
rum |
RUM データ |
各ルールは { 条件 } で表され、いずれかのルールが一致するとその分類のデータがフィルタリングされます。ルール内では、データの tag、field フィールドと、source、measurement のデータ型識別フィールドを使用できます。
フィールド値の形式と演算子の意味については、ブラックリストフィルタリングルールのフィールド値の形式の説明と演算子の説明を参照してください。
SDK のルール文字列内のフィールド値には、配列形式の使用を推奨します。否定演算子は not in、not match をサポートし、サーバーから配信されるルールで使用される notin、notmatch、not_in とも互換性があります。
ユーザー情報のバインドとアンバインド¶
使用方法¶
/// ユーザーをバインドします
///
/// [userid] ユーザー ID
/// [userName] ユーザー名
/// [userEmail] ユーザーのメールアドレス
/// [userExt] 拡張データ
static Future<void> bindRUMUserData(String userId,
{String? userName, String? userEmail, Map<String, String>? ext})
/// ユーザーのバインドを解除します
static Future<void> unbindRUMUserData()
コード例¶
ext の追加ルールについてはフィールド競合の説明を参照してください。
ランタイム機能¶
データの手動同期¶
autoSync: falseの場合のみ、データ同期を自前で実行する必要があります。