콘텐츠로 이동

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. 참고: env와 envType 중 하나만 구성하면 됩니다.
service string 아니요 소속 비즈니스 또는 서비스 이름을 설정합니다. Log 및 RUM의 service 필드 데이터에 영향을 줍니다. 기본값: df_rum_ios, df_rum_android
autoSync boolean 아니요 데이터 수집 후 서버로 자동 동기화할지 여부. 기본값 true. false인 경우 FTMobileReactNative.flushSyncData()를 사용하여 데이터 동기화를 직접 관리합니다.
syncPageSize number 아니요 동기화 요청 항목 수를 설정합니다. 범위 [5,). 참고: 요청 항목 수가 클수록 데이터 동기화가 더 많은 컴퓨팅 리소스를 사용합니다.
syncSleepTime number 아니요 동기화 간격을 설정합니다. 범위 [0,5000], 기본적으로 설정되지 않습니다.
enableDataIntegerCompatible boolean 아니요 웹 데이터와 함께 사용해야 하는 경우 활성화하는 것을 권장합니다. 이 구성은 웹 데이터 유형 저장 호환성 문제를 처리하는 데 사용됩니다. 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. Log 및 RUM 데이터 필터링을 지원하며, SDK 0.4.2 이상 버전에서 지원합니다. 사용 예시는 블랙리스트 필터링을 참조하세요.
dataFilters Record> 아니요 애플리케이션 내 블랙리스트 규칙을 구성합니다. logging 및 rum 두 가지 데이터 유형을 지원합니다. SDK 0.4.2 이상 버전에서 지원하며, 규칙 문법은 규칙 문법을 참조하세요.
remoteConfiguration boolean 아니요 데이터 수집의 원격 구성 기능 활성화 여부. 기본적으로 비활성화됩니다. 활성화하면 SDK 초기화 또는 애플리케이션 핫 스타트 시 데이터 업데이트가 트리거됩니다. SDK 0.3.16 이상에서 지원합니다. 구성 가능한 매개변수
remoteConfigMiniUpdateInterval number 아니요 원격 동적 구성의 최소 업데이트 간격을 설정합니다. 단위: 초, 기본값: 12시간. SDK 0.3.16 이상에서 지원합니다.
remoteConfigOverrideRules Array 아니요 원격 구성 재정의 규칙을 설정합니다. 원격 구성을 적용하기 전에 사용자 정의 조정을 할 수 있습니다. SDK 0.3.16 이상에서 지원하며, 사용 예시는 여기를 참조하세요.

블랙리스트 필터링

React Native SDK 0.4.2 이상 버전은 데이터가 로컬 캐시에 기록되기 전에 RUM 및 Log 데이터를 필터링할 수 있습니다. 이 기능은 기본적으로 활성화되어 있으며, enableDataFilter: false로 SDK 측 필터링을 끌 수 있습니다.

블랙리스트 규칙은 Guance 워크스페이스의 블랙리스트에서 통합 구성할 수 있으며, SDK가 DataKit 또는 DataWay에서 자동으로 가져옵니다. 또는 FTMobileConfig.dataFilters를 통해 애플리케이션 내에서 구성할 수도 있습니다. 두 방식 모두 동일한 블랙리스트 필터링 기능에 해당하며 동시에 사용할 수 있습니다. 어느 하나의 규칙이라도 매칭되면 해당 데이터는 버려집니다.

블랙리스트 필터링은 lineDataModifier 이후, 로컬 캐시 기록 이전에 실행됩니다. lineDataModifier와 블랙리스트 필터링을 동시에 구성한 경우, 필터링 규칙은 수정된 데이터를 기준으로 판단합니다.

enableDataFilter는 SDK 측의 규칙 가져오기와 필터링만 제어합니다. false로 설정하면 SDK는 더 이상 dataFilters를 적용하거나 워크스페이스 규칙을 가져오지 않습니다. DataKit으로 데이터를 업로드하는 경우 워크스페이스 블랙리스트가 DataKit 측에서 계속 실행될 수 있습니다.

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);

SDK는 초기화 시 워크스페이스 블랙리스트 규칙을 즉시 가져오며, 이후 가져오기 간격은 서버가 반환한 pull_interval을 기준으로 합니다. 서버가 유효한 값을 반환하지 않으면 SDK는 10초를 대체 간격으로 사용합니다. pull_interval은 초 단위 숫자 또는 단위가 포함된 문자열을 지원합니다. 예: 10, 30s, 2m, 1h.

규칙 문법

Data Filter 규칙 문법은 블랙리스트 필터링 규칙과 기본적으로 동일합니다. 전체 문법 설명은 블랙리스트 필터링 규칙을 참조하세요.

dataFilters의 key는 데이터 분류를 나타내며, 현재 SDK가 지원하는 분류는 다음과 같습니다.

분류 설명
logging Log 데이터
rum RUM 데이터

각 규칙은 { 조건 } 형식으로 표시되며, 어느 하나의 규칙이라도 매칭되면 해당 분류의 데이터가 필터링됩니다. 규칙에서는 데이터의 tag, field 필드와 source, measurement 데이터 유형 식별 필드를 사용할 수 있습니다.

필드 값 형식과 연산자 의미는 블랙리스트 필터링 규칙의 필드 값 형식 설명 및 연산자 설명을 참조하세요.

SDK 규칙 문자열의 필드 값은 배열 형식으로 사용하는 것이 좋습니다. 부정 연산자는 not in, not match를 지원하며, 서버에서 내려온 규칙에서 사용하는 notin, notmatch, not_in도 호환합니다.

{ `status` in [ 'debug' ] and `env` not in [ 'prod' ] and `message` not match [ '.*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.autoSync를 true로 구성하면 별도의 작업 없이 SDK가 자동으로 동기화합니다.

FTMobileConfig.autoSync를 false로 구성하면 데이터 동기화를 수동으로 트리거해야 합니다.

/**
 * 데이터 동기화를 수동으로 트리거합니다. `FTMobileConfig.autoSync = false`로 구성된 경우 수동 트리거가 필요합니다.
 */
flushSyncData(): Promise<void>;
FTMobileReactNative.flushSyncData();

초기화 순서

최상위 index.js 파일에서 App을 등록하기 전에 SDK 초기화를 완료하세요. 그래야 SDK의 다른 메서드를 호출하기 전에 SDK가 완전히 준비됩니다.

기본 설정을 완료한 후 RUM, Log, Trace 구성을 진행하세요.

import App from './App';

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

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

동적 구성

동적 구성 관련 기능은 동적 구성 문서로 분리되었습니다.

문서 평가

이 페이지가 도움이 되었나요?