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/jsNativeSingular';
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/jsNativeSingular';
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
Singular컨피규어 클립보드 어트리뷰션 속성
iOS에 클립보드 어트리뷰션을 활성화합니다. 활성화하면 SDK가 클립보드에서 어트리뷰션 데이터를 확인합니다. 이 기능은 withClipboardAttribution() 메서드를 사용하여 활성화할 수 있습니다.
서명
clipboardAttribution: boolean
사용 예시
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/jsNativeSingular';
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/jsNativeSingular';
const config: SingularConfig = {
apikey: 'API_KEY',
secret: 'SECRET',
oaidCollection: true // Enables OAID Collection
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withOAIDCollection();
전환 값 업데이트 핸들러
Singular 컨피규어 전환값 업데이트 핸들러 속성
SKAdNetwork 전환 값이 업데이트될 때 호출되는 콜백 핸들러를 설정합니다. iOS에서 전환 값 변경을 추적할 때 유용합니다.
서명
conversionValueUpdatedHandler: (conversionValue: number) => void
사용 예시
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/jsNativeSingular';
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
Singular 컨피규어 컨버전스 값 업데이트 핸들러 속성
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/jsNativeSingular';
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/jsNativeSingular';
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/jsNativeSingular';
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');
장치 어트리뷰션 콜백 핸들러
베타 기능 - 디바이스 어트리뷰션 데이터를 사용할 수 있을 때 호출할 콜백 함수를 설정합니다.
SingularConfig.deviceAttributionCallbackHandler 속성
디바이스 어트리뷰션 데이터를 사용할 수 있을 때 호출되는 콜백 핸들러를 설정합니다. 이를 통해 어트리뷰션 데이터가 확인되는 즉시 어트리뷰션 데이터에 액세스할 수 있습니다.
서명
deviceAttributionCallbackHandler: (attributes: Record<string, any>) => void
사용 예시
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/jsNativeSingular';
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/jsNativeSingular';
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입니다.
서명
enableLogging: boolean
사용 예
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/jsNativeSingular';
const config: SingularConfig = {
apikey: 'API_KEY',
secret: 'SECRET',
loggingEnabled: true
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withLoggingEnabled();
espDomains
SingularConfig.espDomains 속성
이메일 어트리뷰션에 사용할 ESP(이메일 서비스 제공업체) 도메인을 설정합니다. 이를 통해 어트리뷰션 추적에 고려할 이메일 도메인을 지정할 수 있습니다.
서명
espDomains: Array<string>
사용 예시
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/jsNativeSingular';
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/jsNativeSingular';
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');
글로벌 프로퍼티
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/jsNativeSingular';
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/jsNativeSingular';
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/jsNativeSingular';
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);
manualSkanConversionManagement
SingularConfig.manualSkanConversionManagement 속성
수동 SKAdNetwork 전환 값 관리를 활성화합니다. 활성화하면 전환 값을 수동으로 업데이트해야 합니다. 기본값은 false입니다.
서명
manualSkanConversionManagement: boolean
사용 예시
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/jsNativeSingular';
const config: SingularConfig = {
apikey: 'API_KEY',
secret: 'SECRET',
manualSkanConversionManagement: true
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withManualSkanConversionManagement();
푸시 알림 링크 경로
SingularConfig.pushNotificationsLinkPaths 속성
푸시 알림 페이로드에서 딥링크를 추출하기 위한 사용자 지정 경로를 구성합니다. 이를 통해 알림 페이로드에서 딥링크가 위치한 위치를 지정할 수 있습니다.
서명
pushNotificationsLinkPaths: Array<Array<string>>
사용 예
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/jsNativeSingular';
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/jsNativeSingular';
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/jsNativeSingular';
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');
세션타임아웃
Singular 컨피규어 세션 타임아웃 속성
세션 시간 제한을 초 단위로 설정합니다. 앱이 백그라운드로 전환된 후 사용자 세션이 지속되는 시간을 결정합니다. 기본값은 -1입니다(기본 시간 제한 60초 사용).
서명
sessionTimeout: number
사용 예시
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/jsNativeSingular';
import { NativeEventEmitter } from 'react-native';
const config: SingularConfig = {
apikey: 'API_KEY',
secret: 'SECRET',
sessionTimeoutInSec: 120 // 2 minutes
};
import { SingularConfig } from 'singular-react-native';
const config = new SingularConfig('API_KEY', 'SECRET')
.withSessionTimeoutInSec(120); // 2 minutes
짧은 링크 해결 시간 제한
Singular 컨피규어 단축 링크 해결 시간 제한 속성
짧은 링크 확인을 위한 시간 제한을 초 단위로 설정합니다. 이 값은 SDK가 짧은 링크가 해결될 때까지 기다리는 시간을 결정합니다. 기본값은 10초입니다.
서명
shortLinkResolveTimeout: number
사용 예
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/jsNativeSingular';
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
Singular 컨피규어 Singular링크 핸들러 속성
Singular 링크(딥링크)에 대한 콜백 핸들러를 설정합니다. 이 콜백은 딥링크가 확인될 때 호출되어 애플리케이션에서 딥링크 데이터를 처리할 수 있도록 합니다.
서명
singularLinkHandler: (params: Record<string, any>) => void
사용 예시
// TurboModule direct API (React Native 0.76+ New Architecture)
import NativeSingular from 'singular-react-native/jsNativeSingular';
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/jsNativeSingular';
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);
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/jsNativeSingular';
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/jsNativeSingular';
import { NativeEventEmitter } from 'react-native';
// Create comprehensive configuration
const config: SingularConfig = {
apikey: 'YOUR_API_KEY',
secret: 'YOUR_SECRET',
// Basic options
sessionTimeoutInSec: 120,
loggingEnabled: 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);