RudderStack은 오픈소스 고객 데이터 플랫폼(CDP)으로 기업이 고객 데이터를 수집, 연동하고 다양한 대상으로 라우팅할 수 있도록 지원합니다. 고객 데이터 파이프라인을 관리할 수 있는 중앙 집중식 플랫폼을 제공하여 조직이 웹사이트, 모바일 앱, 서버, 클라우드 서비스 등 다양한 소스에서 데이터를 손쉽게 수집할 수 있도록 합니다.
Singular SDK는 표준 "Device-Mode" 또는 "Cloud-Mode" 연동 옵션으로는 이용할 수 없는 다양한 기능을 제공합니다.
Rudderstack을 Singular와 함께 사용할 때 모든 Singular 기능을 활용하려면 하이브리드 방식으로 연동하는 것이 권장됩니다.
하이브리드 방식은 다음으로 구성됩니다:
- Singular SDK 구현 을 Rudderstack과 독립적으로 진행하여, Singular SDK가 세션 추적, 추가 SDK 프레임워크 지원(React Native, Unity 등), SkAdNetwork, 딥링크 및 디퍼드 딥링크, 그리고 고급 기능을 처리하도록 합니다.
- Rudderstack에서 Singular Destination에 대해 "Cloud-Mode" 옵션을 활성화합니다. 이를 통해 모든 Rudderstack 모바일 트랙 이벤트가 Singular의 Destination으로 전송됩니다.
아래 지침은 Rudderstack으로 Singular 하이브리드 구현을 구성하는 방법을 보여줍니다.
| 가이드 대상 | 엔지니어링 팀 |
| 사전 요구사항 | 이 문서는 이미 Rudderstack Mobile SDK가 앱에 연동되어 있음 을 전제로 합니다. |
이 연동을 사용하려면 Rudderstack의 Mobile SDK를 사용해야 합니다.
Singular SDK는 다음 항목을 지원합니다:
- 설치 어트리뷰션
- SkAdNetwork 지원
- Google Install Referrer 지원
- META Install Referrer 지원
- Apple Search Ads 어트리뷰션
- 커스텀 인앱 이벤트 추적
- 매출 추적
- Custom User ID
- Global Properties 지원
- 개인정보 보호 옵션
Rudderstack "Cloud-Mode" 연동은 다음 항목을 지원합니다:
- 커스텀 인앱 이벤트 추적
- 매출 추적
- Custom User ID
하이브리드 구성
-
Singular SDK 연동
Singular SDK를 Rudderstack과 독립적으로 구현합니다. SDK 옵션 및 프레임워크는 여기 에서 확인하세요.
-
Rudderstack - Singular Destination 활성화 (Cloud-Mode)
가이드를 여기 에서 따라 진행하세요.
중복 세션 이벤트 방지: 하이브리드 방식에서는 Singular SDK가 이미 세션 추적을 관리합니다. Rudderstack - Singular Destination(Cloud-Mode)을 구성할 때 "Session Event Name" 연결 설정을 하지 말고, Application Installed , Application Opened , Application Updated 라이프사이클 이벤트를 Rudderstack을 통해 Singular로 전송하지 마세요. 이렇게 하면 Rudderstack이 Singular SDK와 병렬로 세션 이벤트를 전송하여 Singular에서 중복 세션 이벤트가 발생합니다.
권장 추가 설정
하이브리드 방식을 사용할 때는 Rudderstack AnonymousId와 Rudderstack User ID를 Singular의 SDK로 전달하는 것이 권장됩니다.
SDK 문서에 있는 이러한 선택적 기능들을 특별히 유의하여 구현하세요. 사용하는 프레임워크에 따라 단계가 약간 다를 수 있습니다.
Global Properties 구현
Rudderstack AnonymousId 를 Singular Global Property로 전달합니다. 이렇게 하면 Rudderstack AnonymousId가 SDK의 기기 수준 데이터와 연결됩니다.
Singular SDK 초기화 시점에 Singular Config 객체에 이 값을 제공하면, UserId를 알 수 없는 경우에도 Singular가 설치 포스트백을 Rudderstack으로 전송할 수 있습니다.Singular는 Rudderstack AnonymousId 및/또는 Rudderstack UserId 값을 사용하여 앱 설치 에 대한 어트리뷰션 정보만 Rudderstack에 제공할 수 있습니다. 이 설정 방법의 예시로 Singular의 Global Properties [ iOS ][ Android ] 를 참고하세요.
Global Property는 Singular SDK를 초기화할 때 키 rudderstack_anonymous_id 와 Rudderstack SDK에서 가져온 Rudderstack anonymousId 값으로 구성해야 합니다. Rudderstack AnonymousID는 다음 메서드를 사용하여 Rudderstack SDK에서 가져올 수 있습니다 [iOS] [Android] .[RSClient getInstance].anonymousId;
Singular SDK Config 예시
- (SingularConfig *)getConfig {
// Get the 3rd-party identifiers to set in Global Properties:
// If 3rd-party SDKs are providing any identifiers to Singular, the
// respective SDK must be initialized before Singular.
NSString* thirdPartyKey = @"rudderstack_anonymous_id";
NSString* thirdPartyValue = [RSClient getInstance].anonymousId;
// Singular Config Options
SingularConfig* config = [[SingularConfig alloc]
initWithApiKey:APIKEY andSecret:SECRET];
...
// Using Singular Global Properties feature to capture 3rd-party identifiers
[config setGlobalProperty:thirdPartyKey
withValue:thirdPartyValue overrideExisting:YES];
...
return config;}
// (Optional) Get 3rd-party identifiers to set in Global Properties:
// If 3rd-party SDKs are providing any identifiers to Singular, the
// respective SDK must be initialized before Singular.
String thirdPartyKey = new String("rudderstack_anonymous_id");
String thirdPartyValue = new String(RudderClient.getInstance()?.anonymousId);
// Singular Config Options
SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET")
.withGlobalProperty(thirdPartyKey, thirdPartyValue, true);
Custom User ID 구현
Rudderstack UserId를 Singular Custom User ID 메서드로 전달합니다. 이렇게 하면 Rudderstack UserId가 SDK의 기기 수준 데이터와 연결됩니다. Singular SDK 초기화 시점에 Singular Config 객체에 이 값을 제공하면, Singular가 설치 포스트백에 UserId를 담아 Rudderstack으로 전송할 수도 있습니다. Singular 연동에 사용하는 SDK 프레임워크 문서에서 자세한 내용을 확인하세요. 예시: [ iOS ][ Android ]
또한 UserID는 Singular SDK에서 네이티브로 트리거되는 모든 인앱 이벤트와 연결됩니다.
수신된 "Cloud-Mode" 이벤트의 경우, Singular는 Custom User ID 를 Rudderstack User ID 값에 매핑했습니다.