요약: CUID(고객 사용자 ID) 필드를 기준으로 인하우스 데이터와 앱스플라이어 어트리뷰션 데이터를 상호 참조합니다.
CUID 구현하기
고객 사용자 ID(CUID) 필드는 앱과 웹사이트 담당자가 설정한 고유한 사용자 식별자입니다.
- CUID는 앱스플라이어 API나 SDK를 통해 앱 보유사에서 앱스플라이어로 리포트됩니다.
- 앱스플라이어는 그에 따라 로데이터 CUID 필드를 채워넣습니다.
- CUID를 사용하여 앱스플라이어 어트리뷰션 데이터와 자사의 다른 데이터를 상호 참조하십시오.
- 예시: 두 개의 디바이스를 가진 사용자가 동일한 CUID("1234567")를 갖고 있습니다. 디바이스에서 이벤트를 수행할 때마다 CUID와 함께 기록됩니다. 이를 통해 광고주는 두 디바이스의 로데이터를 사용자의 전체 뷰로 통합할 수 있습니다.
- 정확도와 타겟팅을 향상하기 위해, CUID는 앱스플라이어 오디언스 및 유저 중심 어트리뷰션 솔루션에 사용됩니다.
CUID 디자인과 개인 정보
- 앱스플라이어는 앱과 앱 사용자의 개인 정보를 소중하게 여기고 존중합니다.
- 앱스플라이어는 앱스플라이어 플랫폼에 직접 식별 가능한 개인 정보를 수집하거나 전송하는 것을 허용하지 않습니다.
- 앱 사용자의 개인 정보를 보호하기 위해, 사용자를 직접 식별 가능한 정보를 제외하고 CUID를 디자인하십시오. 예를 들어, 사용자 이메일 주소, 이름, 전화 번호, 사회 보장 번호 등을 포함하지 않아야 합니다.
- 관련 읽기: 개인 식별 가능 정보(PII) 전송을 피하기 위한 구글 모범 사례
CUID가 설정될 때까지 SDK 시작 지연
CUID가 설정될 때까지 SDK 시작을 지연시킬 수 있습니다. 비즈니스 논리에 대한 추가 작업을 수행할 때 다음을 고려하십시오.
-
장점:
- 어트리뷰션 데이터는 항상 CUID와 연결됩니다.
- CUID를 사용하여, 어트리뷰션 데이터를 자사 시스템의 다른 데이터와 결합할 수 있습니다.
- 이를 통해 앱스플라이어에서 얻는 데이터를 더 정교하게 사용하고 처리할 수 있습니다.
-
단점:
- CUID가 설정될 때까지, 구매와 회원 가입을 포함한 사용자 이벤트가 앱스플라이어에 기록되지 않습니다. 이로 인해 불일치가 발생할 수 있으며 사기 감지에 영향을 미칠 수 있습니다(SDK 초기화 전에 반드시 식별할 필요는 없음).
참고: CUID가 설정될 때까지 SDK 시작이 지연되고 CUID가 설정되지 않으면 SDK는 어떤 데이터(인스톨 포함)도 리포트하지 않습니다.
CUID 설정
안드로이드 SDK 개발자 지침
고객 사용자 ID를 설정하려면 다음 코드를 사용하세요.
public void setCustomerUserId(String id);
사용 예:
AppsFlyerLib.getInstance().setCustomerUserId("myId");
고객 ID를 설정한 이후에만 인앱 이벤트 기록이 연결되어 보고되므로, 가능한 앱 활동 흐름 초기에 고객 사용자 ID 셋팅하는 것을 추천드립니다.
- 만약,
setCustomerUserId
가startTracking
을 호출하기 이전에 호출된다면, 인스톨 및 이벤트 로데이터 리포트에 CUID(Customer User ID) 정보가 포함되어 표시됩니다. - CUID(Customer User ID)를 나중에 설정하면, CUID는 CUID를 설정한 이후에 기록된 이벤트만 연결됩니다.
첫 번째 앱 실행 후 고객 사용자 ID 값이 다시 설정되지 않도록 하고 고객 사용자 ID를 얻기 위한 서버 호출을 줄이기 위해, 다음 구문을 사용하여 값이 비어 있는지 여부를 확인할 수 있습니다.
AppsFlyerProperties.getInstance().getString(AppsFlyerProperties.APP_USER_ID)
고객 사용자 ID (customerUserID)를 위해 SDK 초기화 지연시키기
customerUserID가 설정될 때까지 SDK 초기화를 지연시킬 수 있습니다.
고객 사용자 ID 호출할 때까지 SDK 초기화를 지연시키기 위해서는 다음을 수행하십시오:
AppsFlyerLib.getInstance().waitForCustomerUserId(true);
메서드를 init() 메서드 바로 앞에서 호출합니다. SDK 초기화의 나머지 부분은 변경되지 않아야 합니다.
일단 customerUserID가 부여되고 나면,
AppsFlyerLib.getInstance().setCustomerIdAndLogSession("customer_id", this);
SDK에 관련 고객 사용자 ID를 제공하고 SDK가 시작되도록 합니다.
코드는 다음과 같이 작성되어야 합니다.
public class AFApplication extends Application {
private static final String AF_DEV_KEY = "qrdZGj123456789";
@Override
public void onCreate() {
super.onCreate();
AppsFlyerConversionListener conversionDataListener =
new AppsFlyerConversionListener() {
...
};
AppsFlyerLib.getInstance().waitForCustomerUserId(true);
//경고! 위의 라인을 제거해도 효과가 취소되지 않습니다.
// CUID 대기를 중지하려면 이 항목으로 대체하십시오:
// AppsFlyerLib.getInstance().waitForCustomerUserId(false);
AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext());
AppsFlyerLib.getInstance().start(this);
// customerUserID를 얻는 코드를 구현하세요.
// ...
// 여기서 호출되는 모든 AppsFlyer SDK 코드는 무시됩니다.
//customerUserID를 사용할 수 있게 되면 다음의 API를 호출하세요.
AppsFlyerLib.getInstance().setCustomerIdAndLogSession("customer_id", this);
}
}
class AFApplication: Application() {
private val afDevKey = ""
override fun onCreate() {
super.onCreate()
val conversionDataListener = object: AppsFlyerConversionListener {
...
}
AppsFlyerLib.getInstance().waitForCustomerUserId(true);
//경고! 위의 라인을 제거해도 효과가 취소되지 않습니다.
// CUID 대기를 중지하려면 이 항목으로 대체하십시오.
// AppsFlyerLib.getInstance().waitForCustomerUserId(false);
AppsFlyerLib.getInstance().init(afDevKey, conversionDataListener, this)
AppsFlyerLib.getInstance().start(this)
// customerUserID를 얻는 코드를 구현하세요.
// ...
// 여기서 호출되는 모든 AppsFlyer SDK 코드는 무시됩니다.
//customerUserID를 사용할 수 있게 되면 다음의 API를 호출하세요.
AppsFlyerLib.getInstance().setCustomerIdAndLogSession("customer_id", this)
}
}
iOS SDK 개발자 지침
고객 사용자 ID를 설정하려면 다음 코드를 사용하세요.
[AppsFlyerLib shared].customerUserID = @"my user id";
AppsFlyerLib.shared().customerUserID = "my user id"
iOS에서는 앱을 시작할 때마다 매번 Customer User ID를 설정해야합니다. Customer User ID를 설정한 이후에만 인앱 이벤트 기록이 연결되어 보고되므로, 앱 사용 과정 초기에 CUID를 설정할 것을 추천드립니다
- 만약,
setCustomerUserId
가startTracking
을 호출하기 이전에 호출된다면, 인스톨 및 이벤트 로데이터 리포트에 CUID(Customer User ID) 정보가 포함되어 표시됩니다. - CUID(Customer User ID)를 나중에 설정하면, CUID는 CUID를 설정한 이후에 기록된 이벤트만 연결됩니다.
첫 번째 앱 실행 후 고객 사용자 ID 값이 다시 설정되지 않도록 하고 고객 사용자 ID를 얻기 위한 서버 호출을 줄이기 위해, 다음 구문을 사용하여 값이 비어 있는지 여부를 확인할 수 있습니다.
NSString *customerUserID = [AppsFlyerLib shared].customerUserID;
let customerUserID = AppsFlyerLib.shared().customerUserID
CUID가 설정될 때까지 SDK 동작을 지연시킬 수 있습니다. 앱 설치 및 이벤트 데이터에 고객 사용자 ID가 포함되는 것이 중요한 경우에 유용하게 사용될 수 있습니다.
다음 코드를 구현하십시오:
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSString *customUserId = [[NSUserDefaults standardUserDefaults] stringForKey:@"customerUserId"]; // CUID를 검색하는 사용자 지정 논리
if (customUserId != nil && ![customUserId isEqual: @""]) {
[AppsFlyerLib shared].customerUserID = customUserId; // Set CUID in AppsFlyer SDK for this session
[[AppsFlyerLib shared] start]; // Start
}
}
func applicationDidBecomeActive(_ application: UIApplication) {
let customUserId = UserDefaults.standard.string(forKey: "customUserId") // your logic to retrieve CUID
if(customUserId != nil && customUserId != ""){
AppsFlyerLib.shared().customerUserID = customUserId // Set CUID in AppsFlyer SDK for this session
AppsFlyerLib.shared().start() // Start
}
}
PBA(People-Based Attribution)
앱스플라이어의 유저 중심 어트리뷰션(PBA)을 통해, 웹과 모바일 캠페인 간 영향에 대한 넓은 관점을 가질 수 있으며, 웹-앱 사용자 전환 노력을 분석할 수 있습니다.
크로스 플랫폼 통찰과 애널리틱스를 가능하게 하려면, 모바일과 웹 환경에서 반드시 동일한 CUID를 설정하십시오.