React Native SDK - 구성 레퍼런스
이 문서는 React Native 애플리케이션용 Singular SDK에서 사용할 수 있는 모든 구성 옵션에 대한 포괄적인 참조를 제공합니다. SingularConfig 객체를 사용하면 추적 설정, 어트리뷰션 옵션, 개인 정보 보호 제어 등을 포함하여 SDK의 동작을 사용자 정의할 수 있습니다. 각 구성 속성은 설명, 서명 및 실제 사용 예제와 함께 제공됩니다.
apikey
SingularConfig.apikey 속성
Singular API 키입니다. 구성 초기화 중에 설정해야 하는 필수 속성입니다.
서명
apikey: string
사용 예
// 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'}
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('YOUR_API_KEY', 'YOUR_SECRET');
brandedDomains
SingularConfig.brandedDomains 속성
웹-투-앱 어트리뷰션에 대한 브랜드 도메인을 설정합니다. 이를 통해 어트리뷰션 목적으로 추적해야 하는 사용자 지정 도메인을 지정할 수 있습니다.
서명
brandedDomains: Array<string>
사용 예시
// 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']
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET');
config.brandedDomains = ['yourcompany.com', 'go.yourcompany.com'];
clipboardAttribution
SingularConfig.clipboardAttribution 속성
iOS에 클립보드 어트리뷰션을 활성화합니다. 활성화하면 SDK가 클립보드에서 어트리뷰션 데이터를 확인합니다. 이 기능은 withClipboardAttribution() 메서드를 사용하여 활성화할 수 있습니다.
서명
clipboardAttribution: boolean
사용 예시
// 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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withClipboardAttribution();
collectOAID
SingularConfig.collectOAID 속성
안드로이드에 대해 OAID(익명 기기 식별자) 수집을 활성화합니다. 주로 구글 플레이 서비스를 사용할 수 없는 중국에서의 추적에 사용됩니다. 기본값은 false입니다.
서명
collectOAID: boolean
사용 예시
// 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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withOAIDCollection();
conversionValueUpdatedHandler
SingularConfig.conversionValueUpdatedHandler 속성
SKAdNetwork 전환 값이 업데이트될 때 호출되는 콜백 핸들러를 설정합니다. iOS에서 전환 값 변경을 추적할 때 유용합니다.
서명
conversionValueUpdatedHandler: (conversionValue: number) => void
사용 예시
// 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);
});
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withConversionValueUpdatedHandler((conversionValue) => {
console.log('Conversion value updated:', conversionValue);
});
conversionValuesUpdatedHandler
SingularConfig.conversionValuesUpdatedHandler 속성
SKAdNetwork 4.0 전환 값이 업데이트될 때 호출되는 콜백 핸들러를 설정합니다. 이 콜백은 iOS 16.1+의 미세값, 거친값, 잠금 상태를 수신합니다.
서명
conversionValuesUpdatedHandler: (updatedValues: Record<string, any>) => void
사용 예시
// 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);
});
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withConversionValuesUpdatedHandler((values) => {
console.log('Conversion values updated:', values);
});
customSdid
SingularConfig.customSdid 속성
사용자 지정 SDID(Singular 장치 ID)를 설정합니다. 이를 통해 Singular에서 생성된 장치 식별자를 사용하는 대신 고유한 장치 식별자를 제공할 수 있습니다.
서명
customSdid: string
사용 예
// 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);
});
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withCustomSdid(
'custom-device-id-12345',
(sdid) => {
console.log('SDID was set:', sdid);
},
(sdid) => {
console.log('SDID received:', sdid);
}
);
customUserId
SingularConfig.customUserId 속성
SDK 초기화 중에 사용자 지정 사용자 ID를 설정합니다. 이를 통해 Singular 데이터를 처음부터 자체 사용자 식별 시스템과 연결할 수 있습니다.
서명
customUserId: string
사용 예시
// 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'
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withCustomUserId('user123456');
ddlTimeoutSec
SingularConfig.ddlTimeoutSec 속성
신규 설치 후 Singular이 디퍼드 딥링크를 확인하여 singularLinkHandler를 호출할 수 있는 시간을 설정합니다. 기본값은 60초입니다. 온보딩 과정이 길어 사용자가 딥링크 대상 화면에 늦게 도달한다면 값을 늘리고, 오래된 디퍼드 링크로 라우팅하기보다 폐기하는 편이 낫다면 값을 줄이세요.
Android 전용입니다. iOS에서는 withDDLTimeoutInSec()가 메시지만 기록하고 구성을 변경하지 않습니다. iOS에 해당하는 기능은 런타임 메서드 Singular.setDeferredDeepLinkTimeout()입니다. 0 이하의 값은 무시되며 기본값 60초가 유지됩니다.
서명
ddlTimeoutSec: number
사용 예시
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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withDDLTimeoutInSec(120);
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
사용 예시
// 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;
});
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withDeviceAttributionCallbackHandler((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
사용 예
// 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);
});
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withCustomSdid(
'custom-device-id',
(result) => {
console.log('SDID was set:', result);
},
(result) => {
console.log('SDID received:', result);
}
);
enableLogging
SingularConfig.enableLogging 속성
디버깅 목적으로 SDK 로깅을 활성화합니다. 이는 개발 및 문제 해결 중에 유용합니다. 프로덕션 빌드에서는 로깅을 비활성화하는 것이 좋습니다. 기본값은 false입니다.
플랫폼: Android 및 iOS. iOS 지원은 React Native SDK 4.3.0에서 추가되었으며, 이전 버전에서는 iOS에서 이 속성을 무시했습니다. 상세 수준을 제어하려면 logLevel과 함께 사용하세요.
서명
enableLogging: boolean
사용 예
// 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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withLoggingEnabled();
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
사용 예시
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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withEnableOdmWithTimeoutInterval(10);
espDomains
SingularConfig.espDomains 속성
이메일 어트리뷰션에 사용할 ESP(이메일 서비스 제공업체) 도메인을 설정합니다. 이를 통해 어트리뷰션 추적에 고려할 이메일 도메인을 지정할 수 있습니다.
서명
espDomains: Array<string>
사용 예시
// 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']
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withEspDomains(['mailchimp.com', 'sendgrid.net', 'campaign-monitor.com']);
facebookAppId
SingularConfig.facebookAppId 속성
페이스북 어트리뷰션 연동을 위한 페이스북 앱 ID를 설정합니다. 이를 통해 SDK가 페이스북 캠페인 어트리뷰션을 추적할 수 있습니다.
서명
facebookAppId: string
사용 예시
// 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'
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withFacebookAppId('YOUR_FACEBOOK_APP_ID');
globalProperties
SingularConfig.globalProperties 속성
SDK 초기화 중 글로벌 프로퍼티를 설정합니다. 이 프로퍼티는 SDK가 추적하는 모든 이벤트와 함께 전송됩니다.
서명
globalProperties: Record<string, { Key: string; Value: any; OverrideExisting: boolean }>
사용 예시
// 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
}
}
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withGlobalProperty('app_version', '1.2.3', true)
.withGlobalProperty('user_type', 'premium', true);
limitAdvertisingIdentifiers
SingularConfig.limitAdvertisingIdentifiers 속성
혼합 오디언스 앱에서 제한된 광고 식별자 모드를 활성화합니다. 이 옵션은 SDK가 추적을 위해 디바이스 식별자를 수집하고 사용하는 방식에 영향을 줍니다. 기본값은 false입니다.
서명
limitAdvertisingIdentifiers: boolean
사용 예
// 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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withLimitAdvertisingIdentifiers(true);
limitDataSharing
SingularConfig.limitDataSharing 속성
초기화 시 데이터 공유 제한 상태를 설정합니다. 이를 사용하여 사용자 동의 또는 개인정보 보호 요구 사항에 따라 데이터 공유를 제한할 수 있습니다. 기본값은 null입니다.
서명
limitDataSharing: boolean | null
사용 예시
// 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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withLimitDataSharing(true);
logLevel
SingularConfig.logLevel 속성
SDK 로그 출력의 상세 수준을 설정합니다. enableLogging이 true일 때만 적용됩니다. 값은 Android android.util.Log 표준 상수이며 숫자가 작을수록 더 상세합니다. 2 VERBOSE, 3 DEBUG, 4 INFO, 5 WARN, 6 ERROR, 7 ASSERT. 기본값은 6(ERROR)입니다.
4.3.0에서 iOS 지원이 추가되었습니다. 이전 버전에서는 iOS에서 logLevel과 enableLogging을 모두 무시했습니다. 4.3.0부터 iOS 브리지는 Android 스타일 값을 네이티브 iOS 로그 레벨에 매핑합니다: 2 Verbose, 3 Debug, 4 Info, 5 Warning, 6 Error, 7은 로깅을 끕니다. 음수를 포함한 그 외의 값은 Error로 대체됩니다.
범위 상단의 차이에 주의하세요: Android에서 7은 ASSERT이지만 iOS에서는 로깅을 완전히 비활성화합니다.
서명
logLevel: number
사용 예시
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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withLoggingEnabled()
.withLogLevel(3); // DEBUG
manualSkanConversionManagement
SingularConfig.manualSkanConversionManagement 속성
수동 SKAdNetwork 전환 값 관리를 활성화합니다. 활성화하면 전환 값을 수동으로 업데이트해야 합니다. 기본값은 false입니다.
서명
manualSkanConversionManagement: boolean
사용 예시
// 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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withManualSkanConversionManagement();
pushNotificationsLinkPaths
SingularConfig.pushNotificationsLinkPaths 속성
푸시 알림 페이로드에서 딥링크를 추출하기 위한 사용자 지정 경로를 구성합니다. 이를 통해 알림 페이로드에서 딥링크가 위치한 위치를 지정할 수 있습니다.
서명
pushNotificationsLinkPaths: Array<Array<string>>
사용 예
// 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']
]
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withPushNotificationsLinkPaths([
['data', 'deeplink'],
['notification', 'data', 'url'],
['custom', 'link']
]);
sdidReceivedCallback
- SDID가 수신될 때 호출되는 콜백입니다.
SingularConfig.sdidReceivedCallback 속성
서버에서 SDID를 수신할 때 호출할 콜백 함수를 설정합니다. 이 프로퍼티는 customSdid 프로퍼티와 함께 사용됩니다.
서명
sdidReceivedCallback: (result: string) => void
사용 예
// 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);
});
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withCustomSdid(
'custom-device-id',
(result) => { console.log('SDID set:', result); },
(result) => { console.log('SDID received:', result); }
);
secret
SingularConfig.secret 속성
Singular SDK 비밀. 구성 초기화 중에 설정해야 하는 필수 속성입니다.
서명
secret: string
사용 예시
// 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'
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('YOUR_API_KEY', 'YOUR_SECRET');
sessionTimeout
SingularConfig.sessionTimeout 속성
세션 시간 제한을 초 단위로 설정합니다. 앱이 백그라운드로 전환된 후 사용자 세션이 지속되는 시간을 결정합니다. 기본값은 -1입니다(기본 시간 제한 60초 사용).
서명
sessionTimeout: number
사용 예시
// 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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withSessionTimeoutInSec(120); // 2 minutes
shortLinkResolveTimeout
SingularConfig.shortLinkResolveTimeout 속성
짧은 링크 확인을 위한 시간 제한을 초 단위로 설정합니다. 이 값은 SDK가 짧은 링크가 해결될 때까지 기다리는 시간을 결정합니다. 기본값은 10초입니다.
서명
shortLinkResolveTimeout: number
사용 예
// 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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withShortLinkResolveTimeout(15);
singularLinkHandler
SingularConfig.singularLinkHandler 속성
Singular 링크(딥링크)에 대한 콜백 핸들러를 설정합니다. 이 콜백은 딥링크가 확인될 때 호출되어 애플리케이션에서 딥링크 데이터를 처리할 수 있도록 합니다.
서명
singularLinkHandler: (params: Record<string, any>) => void
사용 예시
// 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);
}
});
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withSingularLink((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
사용 예시
// 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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withSkAdNetworkEnabled(true);
userDetails
SingularConfig.userDetails 속성
SDK가 전송하는 첫 세션에 해시된 이메일 주소 및/또는 전화번호를 첨부합니다. SingularUserDetails 객체를 할당하거나 withUserDetails() 빌더로 설정하세요. SDK가 디바이스에서 평문 값을 정규화하고 SHA-256으로 해싱하므로 원본 이메일 주소와 전화번호는 전송되지 않습니다. 유저 ID 및 해시된 User Details 설정
사용 가능 버전: React Native SDK 버전 4.3.0 이상.
서명
userDetails: SingularUserDetails
사용 예시
// 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'
}
};import { SingularConfig, SingularUserDetails } from 'singular-react-native';
const userDetails = new SingularUserDetails()
.setEmail('user@example.com')
.setPhoneNumber('+15551234567');
const config = new SingularConfig('API_KEY', 'SECRET')
.withUserDetails(userDetails);waitForTrackingAuthorizationWithTimeoutInterval
SingularConfig.waitForTrackingAuthorizationWithTimeoutInterval 속성
iOS에서 ATT(앱 추적 투명성) 승인을 기다리는 타임아웃 간격을 설정합니다. SDK는 사용자가 ATT 프롬프트에 응답할 때까지 최대 이 시간(초)을 기다린 후 계속 진행합니다. 기본값은 0(대기 없음)입니다.
서명
waitForTrackingAuthorizationWithTimeoutInterval: number
사용 예시
// 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
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withWaitForTrackingAuthorizationWithTimeoutInterval(300);
전체 구성 예제
포괄적인 SDK 구성
다음 예는 여러 구성 방법을 연결하여 포괄적인 구성을 만드는 방법을 보여줍니다.
전체 예제
// 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);
});
import { Singular, SingularConfig } from 'singular-react-native';
// Create comprehensive configuration
const config = new SingularConfig('YOUR_API_KEY', 'YOUR_SECRET')
// Basic options
.withSessionTimeoutInSec(120)
.withLoggingEnabled()
// User identification
.withCustomUserId('user123456')
// Global properties
.withGlobalProperty('app_version', '1.2.3', true)
.withGlobalProperty('user_type', 'premium', true)
// Deep links
.withSingularLink((params) => {
if (params.deeplink) {
console.log('Deep link:', params.deeplink);
// Handle deep link navigation
}
})
.withShortLinkResolveTimeout(10)
// Attribution callback
.withDeviceAttributionCallbackHandler((attributionData) => {
console.log('Attribution:', attributionData);
})
// Privacy settings
.withLimitDataSharing(false)
// Email attribution
.withEspDomains(['mailchimp.com', 'sendgrid.net'])
// Facebook integration
.withFacebookAppId('YOUR_FACEBOOK_APP_ID')
// SKAdNetwork (iOS)
.withSkAdNetworkEnabled(true)
.withWaitForTrackingAuthorizationWithTimeoutInterval(30)
// Push notifications
.withPushNotificationsLinkPaths([
['data', 'deeplink'],
['notification', 'data', 'url']
])
// Branded domains
.withBrandedDomains(['yourcompany.com', 'go.yourcompany.com']);
// Initialize the SDK
Singular.init(config);