コンテンツにスキップ

SDK 初期化

本ドキュメントでは、React Native SDK の初期化とランタイム機能に関する内容を扱います。

SDK のインポート

コード内で次のようにインポートできます。

import {
  FTMobileReactNative,
  FTReactNativeLog,
  FTReactNativeTrace,
  FTReactNativeRUM,
  FTMobileConfig,
  FTLogConfig,
  FTTraceConfig,
  FTRUMConfig,
  ErrorMonitorType,
  DeviceMetricsMonitorType,
  DetectFrequency,
  TraceType,
  FTLogStatus,
  EnvType,
} from '@cloudcare/react-native-mobile';

基本設定

// ローカル環境デプロイ、Datakit デプロイ
let config: FTMobileConfig = {
  datakitUrl: datakitUrl,
};

// パブリック DataWay の使用
let config: FTMobileConfig = {
  datawayUrl: datawayUrl,
  clientToken: clientToken,
};

await FTMobileReactNative.sdkConfig(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 と同時に使用する必要があります
debug boolean いいえ ログ出力の有効/無効を設定します。デフォルトは false
env string いいえ 環境設定。デフォルトは prod。任意の文字列。test などの単一の単語を推奨します
envType enum EnvType いいえ 環境設定。デフォルトは EnvType.prod。注:envenvType はどちらか一方のみ設定してください
service string いいえ 所属するビジネスまたはサービスの名称を設定します。Log および RUM の service フィールドデータに影響します。デフォルト:df_rum_iosdf_rum_android
autoSync boolean いいえ データ収集後に自動でサーバーに同期するかどうか。デフォルトは truefalse の場合は FTMobileReactNative.flushSyncData() を使用してデータ同期を管理します
syncPageSize number いいえ 同期リクエストのエントリ数を設定します。範囲 [5,)。注意:リクエストエントリ数が大きいほど、データ同期により多くの計算リソースを消費します
syncSleepTime number いいえ 同期の待機時間を設定します。範囲 [0,5000]。デフォルトでは設定なし
enableDataIntegerCompatible boolean いいえ Web データと共存する場合、有効にすることを推奨します。この設定は、Web データ型のストレージ互換性問題を処理します。バージョン 0.3.12 以降、デフォルトで有効
globalContext object いいえ カスタムタグを追加します。追加ルールについてはこちらを参照してください
compressIntakeRequests boolean いいえ アップロード同期データを deflate 圧縮します。デフォルトはオフ
enableLimitWithDbSize boolean いいえ DB を使用してデータサイズを制限する機能を有効にします。デフォルトは 100MB、単位は Byte。データベースが大きいほどディスク負荷が高くなります。デフォルトは無効。注意: 有効にすると、Log 設定の logCacheLimitCount および RUM 設定の rumCacheLimitCount は無効になります。SDK 0.3.10 以降でこのパラメータをサポート
dbCacheLimit number いいえ DB キャッシュ制限サイズ。範囲 [30MB,)。デフォルトは 100MB、単位は byte。SDK 0.3.10 以降でこのパラメータをサポート
dbDiscardStrategy string いいえ データベース内のデータ破棄ルールを設定します。破棄戦略:FTDBCacheDiscard.discard 新しいデータを破棄(デフォルト)、FTDBCacheDiscard.discardOldest 古いデータを破棄。SDK 0.3.10 以降でこのパラメータをサポート
dataModifier object いいえ 個々のフィールドを変更します。SDK 0.3.14 以降でサポート。使用例はデータ収集のマスキングを参照してください
lineDataModifier object いいえ 個々のデータ行を変更します。SDK 0.3.14 以降でサポート。使用例はデータ収集のマスキングを参照してください
enableDataFilter boolean いいえ SDK 側のデータフィルタリング(ローカルフィルタリングルールとリモートフィルタリングルールを含む)を有効にするかどうか。デフォルトは true。SDK 0.4.2 以降でサポート。使用例はブラックリストフィルタリングを参照してください
dataFilters Record> いいえ App ローカルで管理するデータフィルタリングルール。サポートされる分類:loggingrum。SDK 0.4.2 以降でサポート。ルール構文についてはルール構文を参照してください
remoteConfiguration boolean いいえ データ収集のリモート設定機能を有効にするかどうか。デフォルトは無効。有効にすると、SDK 初期化時またはアプリのホットスタート時にデータ更新がトリガーされます。SDK 0.3.16 以降でサポート。設定可能なパラメータ
remoteConfigMiniUpdateInterval number いいえ リモート動的設定の最小更新間隔を設定します。単位は秒、デフォルトは 12 時間。SDK 0.3.16 以降でサポート
remoteConfigOverrideRules Array いいえ リモート設定の上書きルールを設定します。アプリケーションのリモート設定前にカスタム調整を行うために使用します。SDK 0.3.16 以降でサポート。使用例はこちらを参照してください

ブラックリストフィルタリング

Data Filter は、SDK がローカルキャッシュに書き込む前に、ルールに従って RUM と Log データをフィルタリングするために使用されます。フィルタリングルールに一致したデータはローカルキャッシュに入らず、アップロードもされません。

  • ローカルルール: FTMobileConfig.dataFilters で設定し、App が SDK 初期化時に適用します。
  • リモートルール: FTMobileConfig.enableDataFilter を有効にすると、SDK は Studio 側で追加されたブラックリストルールを取得します。

  • ローカルルールとリモートルールは同時に有効になり、いずれかのルールに一致したデータは破棄されます。

  • ブラックリストフィルタリングは lineDataModifier の後、ローカルキャッシュ書き込みの前に実行されます。lineDataModifier とブラックリストフィルタリングが両方設定されている場合、フィルタリングルールは変更後のデータに基づいて判断されます。

Data Filter は SDK のデータ書き込みパスに作用します。ルールが多すぎたり、正規表現が複雑すぎると、データ書き込みパフォーマンスに影響を与える可能性があるため、必要なルールのみを設定することを推奨します。

let config: FTMobileConfig = {
  datawayUrl: datawayUrl,
  clientToken: clientToken,
  enableDataFilter: true,
  dataFilters: {
    logging: [
      "{ `source` in [ 'df_rum_ios_log' , 'df_rum_android_log' ] and `message` match [ 'timeout' ] }",
    ],
    rum: [
      "{ `resource_status` match [ '5..' ] }",
    ],
  },
};

await FTMobileReactNative.sdkConfig(config);

ルール構文

Data Filter のルール構文は、ブラックリストフィルタリングルールと基本的に同じです。完全な構文の説明はブラックリストフィルタリングルールを参照してください。

dataFilters のキーはデータ分類を示します。現在 SDK がサポートする分類は以下の通りです。

分類 説明
logging Log データ
rum RUM データ

各ルールは { 条件 } で表され、いずれかのルールに一致すると、その分類のデータがフィルタリングされます。ルールではデータの tagfield フィールドを使用できます。

フィールド値の形式と演算子の意味については、ブラックリストフィルタリングルールのフィールド値形式の説明演算子の説明を参照してください。

SDK のルール文字列内のすべてのフィールド値は配列形式を使用する必要があり、否定演算子は固定で notinnotmatch と記述します。

{ `status` in [ 'debug' ] and `env` notin [ 'prod' ] and `message` notmatch [ '.*error.*' ] }

ユーザー情報のバインドとバインド解除

使用方法

/**
 * ユーザーをバインドします。
 * @param userId ユーザー ID。
 * @param userName ユーザー名。
 * @param userEmail ユーザーのメールアドレス。
 * @param extra ユーザーの追加情報。
 */
bindRUMUserData(userId: string, userName?: string, userEmail?: string, extra?: object): Promise<void>;

/**
 * ユーザーのバインドを解除します。
 */
unbindRUMUserData(): Promise<void>;

使用例

import { FTMobileReactNative } from '@cloudcare/react-native-mobile';
FTMobileReactNative.bindRUMUserData('react-native-user', 'user_name');

FTMobileReactNative.unbindRUMUserData();

ランタイム機能

SDK のシャットダウン

FTMobileReactNative を使用して SDK をシャットダウンします。

/**
 * SDK 内で実行中のオブジェクトをシャットダウンします。
 */
shutDown(): Promise<void>;
FTMobileReactNative.shutDown();

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

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

/**
 * まだサーバーにアップロードされていないすべてのデータを消去します。
 */
clearAllData(): Promise<void>;
FTMobileReactNative.clearAllData();

データの手動同期

FTMobileConfig.autoSynctrue に設定している場合、追加の操作は不要で、SDK が自動的に同期します。

FTMobileConfig.autoSyncfalse に設定している場合、手動でデータ同期をトリガーする必要があります。

/**
 * データを手動で同期します。`FTMobileConfig.autoSync = false` に設定している場合に手動でトリガーする必要があります。
 */
flushSyncData(): Promise<void>;
FTMobileReactNative.flushSyncData();

初期化の順序について

SDK の他のメソッドを呼び出す前に SDK が完全に準備できていることを確認するために、最上位の index.js ファイルで App を登録する前に SDK の初期化を完了してください。

基本設定が完了した後、RUM、Log、Trace の設定を行います。

import App from './App';

async function sdkInit() {
  await FTMobileReactNative.sdkConfig(config);
  await FTReactNativeRUM.setConfig(rumConfig);
  // ...
}

sdkInit();
AppRegistry.registerComponent('main', () => App);

動的設定

動的設定に関する機能は動的設定に分離されています。

フィードバック

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