콘텐츠로 이동

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 두 가지 데이터 유형을 지원합니다. 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: ...)를 통해 애플리케이션 내에서 구성할 수도 있습니다. 두 방식은 동일한 블랙리스트 필터링 기능을 제공하며 동시에 사용할 수 있습니다. 어느 하나의 규칙이라도 매칭되면 해당 데이터는 폐기됩니다.

블랙리스트 필터링은 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의 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.*' ] }

사용자 정보 바인딩 및 해제

사용 방법

/// 사용자 바인딩
///
/// [userid] 사용자 id
/// [userName] 사용자 이름
/// [userEmail] 사용자 이메일
/// [userExt] 확장 데이터
static Future<void> bindRUMUserData(String userId,
    {String? userName, String? userEmail, Map<String, String>? ext})

/// 사용자 바인딩 해제
static Future<void> unbindRUMUserData()

코드 예시

FTMobileFlutter.bindRUMUserData("flutterUser");

FTMobileFlutter.unbindRUMUserData();

ext 추가 규칙은 충돌 필드 설명을 참조하세요.

런타임 기능

데이터 수동 동기화

FTMobileFlutter.flushSyncData();

autoSync: false로 설정한 경우에만 데이터 동기화를 직접 수행하면 됩니다.

문서 평가

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