React Native SDK - 구성 방법 참조

React Native SDK - 구성 레퍼런스

이 문서는 React Native 애플리케이션용 Singular SDK에서 사용할 수 있는 모든 구성 옵션에 대한 포괄적인 참조를 제공합니다. SingularConfig 객체를 사용하면 추적 설정, 어트리뷰션 옵션, 개인 정보 보호 제어 등을 포함하여 SDK의 동작을 사용자 정의할 수 있습니다. 각 구성 속성은 설명, 서명 및 실제 사용 예제와 함께 제공됩니다.

apikey

SingularConfig.apikey 속성

Singular API 키입니다. 구성 초기화 중에 설정해야 하는 필수 속성입니다.

서명

apikey: string

사용 예

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {apikey: 'YOUR_API_KEY', secret: 'YOUR_SECRET'}

brandedDomains

SingularConfig.brandedDomains 속성

웹-투-앱 어트리뷰션에 대한 브랜드 도메인을 설정합니다. 이를 통해 어트리뷰션 목적으로 추적해야 하는 사용자 지정 도메인을 지정할 수 있습니다.

서명

brandedDomains: Array<string>

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'YOUR_API_KEY',
  secret: 'YOUR_SECRET',
  brandedDomains: ['yourcompany.com', 'go.yourcompany.com']
};

clipboardAttribution

SingularConfig.clipboardAttribution 속성

iOS에 클립보드 어트리뷰션을 활성화합니다. 활성화하면 SDK가 클립보드에서 어트리뷰션 데이터를 확인합니다. 이 기능은 withClipboardAttribution() 메서드를 사용하여 활성화할 수 있습니다.

서명

clipboardAttribution: boolean

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  clipboardAttribution: true // This property enables clipboard attribution
};

collectOAID

SingularConfig.collectOAID 속성

안드로이드에 대해 OAID(익명 기기 식별자) 수집을 활성화합니다. 주로 구글 플레이 서비스를 사용할 수 없는 중국에서의 추적에 사용됩니다. 기본값은 false입니다.

서명

collectOAID: boolean

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  collectOAID: true // Enables OAID Collection
};

conversionValueUpdatedHandler

SingularConfig.conversionValueUpdatedHandler 속성

SKAdNetwork 전환 값이 업데이트될 때 호출되는 콜백 핸들러를 설정합니다. iOS에서 전환 값 변경을 추적할 때 유용합니다.

서명

conversionValueUpdatedHandler: (conversionValue: number) => void

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

const emitter = new NativeEventEmitter(NativeSingular);

emitter.addListener("ConversionValueUpdatedHandler", (conversionValue) => {
  console.log('conversion value updated to:', conversionValue);
});

conversionValuesUpdatedHandler

SingularConfig.conversionValuesUpdatedHandler 속성

SKAdNetwork 4.0 전환 값이 업데이트될 때 호출되는 콜백 핸들러를 설정합니다. 이 콜백은 iOS 16.1+의 미세값, 거친값, 잠금 상태를 수신합니다.

서명

conversionValuesUpdatedHandler: (updatedValues: Record<string, any>) => void

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

const emitter = new NativeEventEmitter(NativeSingular);

emitter.addListener("ConversionValuesUpdatedHandler", (values) => {
  console.log('Conversion values updated:', values);
});

customSdid

SingularConfig.customSdid 속성

사용자 지정 SDID(Singular 장치 ID)를 설정합니다. 이를 통해 Singular에서 생성된 장치 식별자를 사용하는 대신 고유한 장치 식별자를 제공할 수 있습니다.

서명

customSdid: string

사용 예

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  customSdid: 'custom-device-id-12345'
};

const emitter = new NativeEventEmitter(NativeSingular);

emitter.addListener('DidSetSdidCallback', (result) => {
  console.log('SDID was set:', result);
});

emitter.addListener('SdidReceivedCallback', (result) => {
  console.log('SDID received:', result);
});

customUserId

SingularConfig.customUserId 속성

SDK 초기화 중에 사용자 지정 사용자 ID를 설정합니다. 이를 통해 Singular 데이터를 처음부터 자체 사용자 식별 시스템과 연결할 수 있습니다.

서명

customUserId: string

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  customUserId: 'user123456'
};

ddlTimeoutSec

SingularConfig.ddlTimeoutSec 속성

신규 설치 후 Singular이 디퍼드 딥링크를 확인하여 singularLinkHandler를 호출할 수 있는 시간을 설정합니다. 기본값은 60초입니다. 온보딩 과정이 길어 사용자가 딥링크 대상 화면에 늦게 도달한다면 값을 늘리고, 오래된 디퍼드 링크로 라우팅하기보다 폐기하는 편이 낫다면 값을 줄이세요.

Android 전용입니다. iOS에서는 withDDLTimeoutInSec()가 메시지만 기록하고 구성을 변경하지 않습니다. iOS에 해당하는 기능은 런타임 메서드 Singular.setDeferredDeepLinkTimeout()입니다. 0 이하의 값은 무시되며 기본값 60초가 유지됩니다.

서명

ddlTimeoutSec: number

사용 예시

New ArchitectureOld Architecture
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  ddlTimeoutSec: 120 // seconds
};

deviceAttributionCallbackHandler

BETA 기능 - 디바이스 어트리뷰션 데이터를 사용할 수 있을 때 호출되는 콜백 함수를 설정합니다.

SingularConfig.deviceAttributionCallbackHandler 속성

디바이스 어트리뷰션 데이터를 사용할 수 있을 때 호출되는 콜백 핸들러를 설정합니다. 이를 통해 어트리뷰션 데이터가 확인되는 즉시 어트리뷰션 데이터에 액세스할 수 있습니다.

값이 있는 필드만 포함되므로 값을 읽기 전에 키의 존재 여부를 확인하세요. 대부분의 설치에서는 일부 필드만 반환되며, 어떤 필드가 포함되는지는 Singular이 매칭한 터치포인트에 따라 달라집니다.

유형 참고
network string 콜백이 호출될 때 항상 포함됩니다. 터치포인트가 매칭되지 않은 경우 "Organic"입니다.
campaign_id string 터치포인트가 제공하는 경우 포함됩니다.
campaign_name string 터치포인트가 제공하는 경우 포함됩니다.
subcampaign_id string 터치포인트가 제공하는 경우 포함됩니다. 모든 소스에서 제공되지는 않습니다.
subcampaign_name string 터치포인트가 제공하는 경우 포함됩니다. 모든 소스에서 제공되지는 않습니다.
creative_id string 터치포인트가 제공하는 경우 포함됩니다. 모든 소스에서 제공되지는 않습니다.
creative_name string 터치포인트가 제공하는 경우 포함됩니다. 모든 소스에서 제공되지는 않습니다.
passthrough string 링크에 패스스루 값이 첨부된 경우 포함됩니다.
match_type string 터치포인트가 제공하는 경우 포함됩니다. 값 목록이 필요하면 Singular에 문의하세요.
click_timestamp number 터치포인트가 제공하는 경우 포함됩니다. epoch 마이크로초이며, 초 단위로 변환하려면 1,000,000으로 나누세요.

서명

deviceAttributionCallbackHandler: (attributes: Record<string, any>) => void

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET'
};

const emitter = new NativeEventEmitter(NativeSingular);

emitter.addListener('DeviceAttributionCallbackHandler', (attributes) => {
  console.log('Attribution data received:', attributes);
  const campaign = attributes.campaign;
  const source = attributes.source;
});

didSetSdidCallback

- 사용자 지정 SDID가 설정될 때 호출되는 콜백입니다.

SingularConfig.didSetSdidCallback 속성

사용자 지정 SDID가 설정되었을 때 호출할 콜백 함수를 설정합니다. customSdid 프로퍼티와 함께 사용됩니다.

서명

didSetSdidCallback: (result: string) => void

사용 예

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  customSdid: 'custom-device-id'
};

const emitter = new NativeEventEmitter(NativeSingular);

emitter.addListener('DidSetSdidCallback', (result) => {
  console.log('SDID was set:', result);
});

emitter.addListener('SdidReceivedCallback', (result) => {
  console.log('SDID received:', result);
});

enableLogging

SingularConfig.enableLogging 속성

디버깅 목적으로 SDK 로깅을 활성화합니다. 이는 개발 및 문제 해결 중에 유용합니다. 프로덕션 빌드에서는 로깅을 비활성화하는 것이 좋습니다. 기본값은 false입니다.

플랫폼: Android 및 iOS. iOS 지원은 React Native SDK 4.3.0에서 추가되었으며, 이전 버전에서는 iOS에서 이 속성을 무시했습니다. 상세 수준을 제어하려면 logLevel과 함께 사용하세요.

서명

enableLogging: boolean

사용 예

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  enableLogging: true
};

enableOdmWithTimeoutInterval

SingularConfig.enableOdmWithTimeoutInterval 속성

Google의 On-Device Measurement(ODM)를 활성화하고, 첫 세션을 전송하기 전에 Google의 어트리뷰션 토큰을 기다릴 시간을 초 단위로 설정합니다. 기본값은 -1이며 ODM이 비활성화됩니다. Google Ads iOS Integrated Conversion Measurement(ICM)에 필요합니다.

iOS 전용이며 첫 세션이 지연됩니다. SDK는 Google이 어트리뷰션 토큰을 반환하거나 설정한 시간이 경과할 때까지 세션을 차단하므로, 딥링크 콜백이 최대 그만큼 지연됩니다. ODM에는 Google의 ODM SDK, -ObjC 링커 플래그, React Native SDK v3.9.0 이상도 필요합니다. 나중에 추가하지 말고 최초 연동 시점에 구성하세요.

서명

enableOdmWithTimeoutInterval: number

사용 예시

New ArchitectureOld Architecture
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  enableOdmWithTimeoutInterval: 10 // seconds
};

espDomains

SingularConfig.espDomains 속성

이메일 어트리뷰션에 사용할 ESP(이메일 서비스 제공업체) 도메인을 설정합니다. 이를 통해 어트리뷰션 추적에 고려할 이메일 도메인을 지정할 수 있습니다.

서명

espDomains: Array<string>

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  espDomains: ['mailchimp.com', 'sendgrid.net', 'campaign-monitor.com']
};

facebookAppId

SingularConfig.facebookAppId 속성

페이스북 어트리뷰션 연동을 위한 페이스북 앱 ID를 설정합니다. 이를 통해 SDK가 페이스북 캠페인 어트리뷰션을 추적할 수 있습니다.

서명

facebookAppId: string

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  facebookAppId: 'YOUR_FACEBOOK_APP_ID'
};

globalProperties

SingularConfig.globalProperties 속성

SDK 초기화 중 글로벌 프로퍼티를 설정합니다. 이 프로퍼티는 SDK가 추적하는 모든 이벤트와 함께 전송됩니다.

서명

globalProperties: Record<string, { Key: string; Value: any; OverrideExisting: boolean }>

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  globalProperties: {
    prop1: {
      Key: "app_version",
      Value: "1.2.3",
      OverrideExisting: true
    },
    prop2: {
      Key: "user_type",
      Value: "free",
      OverrideExisting: true
    }
  }
};

limitAdvertisingIdentifiers

SingularConfig.limitAdvertisingIdentifiers 속성

혼합 오디언스 앱에서 제한된 광고 식별자 모드를 활성화합니다. 이 옵션은 SDK가 추적을 위해 디바이스 식별자를 수집하고 사용하는 방식에 영향을 줍니다. 기본값은 false입니다.

서명

limitAdvertisingIdentifiers: boolean

사용 예

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  limitAdvertisingIdentifiers: true
};

limitDataSharing

SingularConfig.limitDataSharing 속성

초기화 시 데이터 공유 제한 상태를 설정합니다. 이를 사용하여 사용자 동의 또는 개인정보 보호 요구 사항에 따라 데이터 공유를 제한할 수 있습니다. 기본값은 null입니다.

서명

limitDataSharing: boolean | null

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  limitDataSharing: true
};

logLevel

SingularConfig.logLevel 속성

SDK 로그 출력의 상세 수준을 설정합니다. enableLoggingtrue일 때만 적용됩니다. 값은 Android android.util.Log 표준 상수이며 숫자가 작을수록 더 상세합니다. 2 VERBOSE, 3 DEBUG, 4 INFO, 5 WARN, 6 ERROR, 7 ASSERT. 기본값은 6(ERROR)입니다.

4.3.0에서 iOS 지원이 추가되었습니다. 이전 버전에서는 iOS에서 logLevelenableLogging을 모두 무시했습니다. 4.3.0부터 iOS 브리지는 Android 스타일 값을 네이티브 iOS 로그 레벨에 매핑합니다: 2 Verbose, 3 Debug, 4 Info, 5 Warning, 6 Error, 7은 로깅을 끕니다. 음수를 포함한 그 외의 값은 Error로 대체됩니다.

범위 상단의 차이에 주의하세요: Android에서 7은 ASSERT이지만 iOS에서는 로깅을 완전히 비활성화합니다.

서명

logLevel: number

사용 예시

New ArchitectureOld Architecture
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  enableLogging: true,
  logLevel: 3 // DEBUG
};

manualSkanConversionManagement

SingularConfig.manualSkanConversionManagement 속성

수동 SKAdNetwork 전환 값 관리를 활성화합니다. 활성화하면 전환 값을 수동으로 업데이트해야 합니다. 기본값은 false입니다.

서명

manualSkanConversionManagement: boolean

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  manualSkanConversionManagement: true
};

pushNotificationsLinkPaths

SingularConfig.pushNotificationsLinkPaths 속성

푸시 알림 페이로드에서 딥링크를 추출하기 위한 사용자 지정 경로를 구성합니다. 이를 통해 알림 페이로드에서 딥링크가 위치한 위치를 지정할 수 있습니다.

서명

pushNotificationsLinkPaths: Array<Array<string>>

사용 예

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  pushNotificationsLinkPaths: [
    ['data', 'deeplink'],
    ['notification', 'data', 'url'],
    ['custom', 'link']
  ]
};

sdidReceivedCallback

- SDID가 수신될 때 호출되는 콜백입니다.

SingularConfig.sdidReceivedCallback 속성

서버에서 SDID를 수신할 때 호출할 콜백 함수를 설정합니다. 이 프로퍼티는 customSdid 프로퍼티와 함께 사용됩니다.

서명

sdidReceivedCallback: (result: string) => void

사용 예

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  customSdid: 'custom-device-id'
};

const emitter = new NativeEventEmitter(NativeSingular);

emitter.addListener('DidSetSdidCallback', (result) => {
  console.log('SDID set:', result);
});

emitter.addListener('SdidReceivedCallback', (result) => {
  console.log('SDID received:', result);
});

secret

SingularConfig.secret 속성

Singular SDK 비밀. 구성 초기화 중에 설정해야 하는 필수 속성입니다.

서명

secret: string

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET'
};

sessionTimeout

SingularConfig.sessionTimeout 속성

세션 시간 제한을 초 단위로 설정합니다. 앱이 백그라운드로 전환된 후 사용자 세션이 지속되는 시간을 결정합니다. 기본값은 -1입니다(기본 시간 제한 60초 사용).

서명

sessionTimeout: number

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  sessionTimeout: 120 // 2 minutes
};

shortLinkResolveTimeout

SingularConfig.shortLinkResolveTimeout 속성

짧은 링크 확인을 위한 시간 제한을 초 단위로 설정합니다. 이 값은 SDK가 짧은 링크가 해결될 때까지 기다리는 시간을 결정합니다. 기본값은 10초입니다.

서명

shortLinkResolveTimeout: number

사용 예

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  shortLinkResolveTimeout: 15
};

singularLinkHandler

SingularConfig.singularLinkHandler 속성

Singular 링크(딥링크)에 대한 콜백 핸들러를 설정합니다. 이 콜백은 딥링크가 확인될 때 호출되어 애플리케이션에서 딥링크 데이터를 처리할 수 있도록 합니다.

서명

singularLinkHandler: (params: Record<string, any>) => void

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  // No singularLink callback in config for TurboModule!
};

const emitter = new NativeEventEmitter(NativeSingular);

emitter.addListener('SingularLinkHandler', (params) => {
  if (params.deeplink) {
    console.log('Deep link received:', params.deeplink);
    // Navigate to the appropriate screen
  }
  if (params.passthrough) {
    console.log('Passthrough data:', params.passthrough);
  }
});

skAdNetworkEnabled

SingularConfig.skAdNetworkEnabled 속성

iOS에서 SKAdNetwork 어트리뷰션을 활성화 또는 비활성화합니다. 활성화하면 SDK가 SKAdNetwork 어트리뷰션을 자동으로 처리합니다. 기본값은 true입니다.

서명

skAdNetworkEnabled: boolean

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  skAdNetworkEnabled: true
};

userDetails

SingularConfig.userDetails 속성

SDK가 전송하는 첫 세션에 해시된 이메일 주소 및/또는 전화번호를 첨부합니다. SingularUserDetails 객체를 할당하거나 withUserDetails() 빌더로 설정하세요. SDK가 디바이스에서 평문 값을 정규화하고 SHA-256으로 해싱하므로 원본 이메일 주소와 전화번호는 전송되지 않습니다. 유저 ID 및 해시된 User Details 설정

사용 가능 버전: React Native SDK 버전 4.3.0 이상.

서명

userDetails: SingularUserDetails

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';
const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  userDetails: {
    email: 'user@example.com',
    phoneNumber: '+15551234567'
  }
};

waitForTrackingAuthorizationWithTimeoutInterval

SingularConfig.waitForTrackingAuthorizationWithTimeoutInterval 속성

iOS에서 ATT(앱 추적 투명성) 승인을 기다리는 타임아웃 간격을 설정합니다. SDK는 사용자가 ATT 프롬프트에 응답할 때까지 최대 이 시간(초)을 기다린 후 계속 진행합니다. 기본값은 0(대기 없음)입니다.

서명

waitForTrackingAuthorizationWithTimeoutInterval: number

사용 예시

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';

const config: SingularConfig = {
  apikey: 'API_KEY',
  secret: 'SECRET',
  waitForTrackingAuthorizationWithTimeoutInterval: 300
};

전체 구성 예제

포괄적인 SDK 구성

다음 예는 여러 구성 방법을 연결하여 포괄적인 구성을 만드는 방법을 보여줍니다.

전체 예제

New ArchitectureOld Architecture
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/js/NativeSingular';
import type { SingularConfig } from 'singular-react-native/js/NativeSingular';
import { NativeEventEmitter } from 'react-native';

// Create comprehensive configuration
const config: SingularConfig = {
  apikey: 'YOUR_API_KEY',
  secret: 'YOUR_SECRET',

  // Basic options
  sessionTimeout: 120,
  enableLogging: true,

  // User identification
  customUserId: 'user123456',

  // Global properties
  globalProperties: {
    app_version: {
      Key: 'app_version',
      Value: '1.2.3',
      OverrideExisting: true
    },
    user_type: {
      Key: 'user_type',
      Value: 'premium',
      OverrideExisting: true
    }
  },

  // Privacy settings
  limitDataSharing: false,

  // Email attribution
  espDomains: ['mailchimp.com', 'sendgrid.net'],

  // Facebook integration
  facebookAppId: 'YOUR_FACEBOOK_APP_ID',

  // SKAdNetwork (iOS)
  skAdNetworkEnabled: true,
  waitForTrackingAuthorizationWithTimeoutInterval: 300,

  // Push notifications
  pushNotificationsLinkPaths: [
    ['data', 'deeplink'],
    ['notification', 'data', 'url']
  ],

  // Branded domains
  brandedDomains: ['yourcompany.com', 'go.yourcompany.com'],
};

// Initialize the SDK
NativeSingular.init(config);

// Use event emitter for all callbacks/handlers
const emitter = new NativeEventEmitter(NativeSingular);

// Singular Link (deep links)
emitter.addListener('SingularLinkHandler', (params) => {
  if (params.deeplink) {
    console.log('Deep link:', params.deeplink);
    // Handle deep link navigation
  }
  if (params.passthrough) {
    console.log('Passthrough data:', params.passthrough);
  }
});

// Attribution callback
emitter.addListener('DeviceAttributionCallbackHandler', (attributionData) => {
  console.log('Attribution:', attributionData);
});

// SDID callbacks (if needed)
emitter.addListener('DidSetSdidCallback', (result) => {
  console.log('SDID set:', result);
});
emitter.addListener('SdidReceivedCallback', (result) => {
  console.log('SDID received:', result);
});