콘텐츠로 이동
동의 화면으로 연동하기 (launchUI)

동의 연동 API

앱 자체 플로우에서 받은 동의를 SDK로 반영하기 (동의 연동 API · ConsentAPI)

동의 연동 API(ConsentAPI)동의 화면 제공형(ConsentUI) 구성을 사용하는 고객사에게만 추가로 제공되는 옵션입니다.

가입 플로우 등 고객사 앱의 자체 화면에서 페어리 서비스 동의를 함께 받는 경우, getConsent / setConsent 메서드로 동의 정보를 조회·저장할 수 있습니다. 페어리 UI를 통한 동의 수집 경로(launchUI)도 그대로 유지됩니다.

필드 Title 비고
agreeTermsOfService 서비스 이용약관 동의
agreePersonalInfoUseAndSharing 개인정보 수집·이용 및 제3자 제공 동의
agreeMarketingInfoReceive 마케팅 정보 수신 동의 캐시백 및 광고 알림에 대한 수신 동의입니다. 미동의 시 알림이 나가지 않습니다.
agreeMarketingPersonalInfoUseAndSharing 마케팅 목적 개인정보 수집·이용·제공 동의 캐시백 및 광고 알림을 보내기 위해 서비스이용기록을 이용한다는 개인정보 동의입니다. 미동의 시 알림이 나가지 않습니다.
agreeNighttimeNotification 야간(21:00~08:00) 알림 수신 동의 미동의 시 야간에 알림이 나가지 않습니다.

앱 자체 동의 플로우(가입 등)에서 아래 순서로 호출합니다.

sequenceDiagram
    participant Host as 고객사 앱
    participant SDK
    participant Server as 페어리 서버

    Note over Host: 고객사 앱 내 동의 flow (가입 등)
    Host->>SDK: setUserId(userId, callback)
    SDK-->>Host: onSuccess

    Host->>SDK: getConsent(callback)
    SDK->>Server: 사용자 동의 상태 조회
    Server-->>SDK: UserConsent
    SDK-->>Host: onSuccess(UserConsent)

    Host->>SDK: setConsent(userConsent, callback)
    SDK->>Server: 동의 upsert
    Server-->>SDK: 저장된 최종 동의
    SDK-->>Host: onSuccess(UserConsent)

동의 연동 API 호출 전에 setUserId() 로 userId를 설정합니다.

val moment = MomentSDK.getInstance(context)
moment.setUserId("test-user-id", object : MomentSDK.ResultCallback {
override fun onSuccess() {
// userId 설정 완료 후 동의 연동 API 호출
}
override fun onFailure(exception: MomentException) {}
})
moment.getConsent(object : MomentSDK.CallbackWithResult<GetUserConsentResponse> {
override fun onSuccess(result: GetUserConsentResponse) {
binding.swConsentTos.isChecked = result.agreeTermsOfService
binding.swConsentPersonalInfo.isChecked = result.agreePersonalInfoUseAndSharing
binding.swConsentMarketingInfo.isChecked = result.agreeMarketingInfoReceive
binding.swConsentMarketingPersonal.isChecked = result.agreeMarketingPersonalInfoUseAndSharing
binding.swConsentNighttimeNoti.isChecked = result.agreeNighttimeNotification
}
override fun onFailure(exception: MomentException) {
Log.e("Consent", "getConsent failed: ${exception.errorCode}")
}
})
val request = SubmitUserConsentRequest.newBuilder()
.setAgreeTermsOfService(true)
.setAgreePersonalInfoUseAndSharing(true)
.setAgreeMarketingInfoReceive(binding.swConsentMarketingInfo.isChecked)
.setAgreeMarketingPersonalInfoUseAndSharing(binding.swConsentMarketingPersonal.isChecked)
.setAgreeNighttimeNotification(binding.swConsentNighttimeNoti.isChecked)
.build()
moment.setConsent(request, object : MomentSDK.CallbackWithResult<SubmitUserConsentResponse> {
override fun onSuccess(result: SubmitUserConsentResponse) {
binding.swConsentTos.isChecked = result.agreeTermsOfService
binding.swConsentPersonalInfo.isChecked = result.agreePersonalInfoUseAndSharing
binding.swConsentMarketingInfo.isChecked = result.agreeMarketingInfoReceive
binding.swConsentMarketingPersonal.isChecked = result.agreeMarketingPersonalInfoUseAndSharing
binding.swConsentNighttimeNoti.isChecked = result.agreeNighttimeNotification
}
override fun onFailure(exception: MomentException) {
Log.e("Consent", "setConsent failed: ${exception.errorCode}")
}
})

사용자 탈퇴 등으로 모든 동의를 철회해야 하는 경우 withdrawUserConsentAndStop() 을 호출합니다. 모든 동의가 철회되고 인식 서비스도 함께 종료됩니다.

moment.withdrawUserConsentAndStop(object : MomentSDK.ResultCallback {
override fun onSuccess() {}
override fun onFailure(exception: MomentException) {
Log.e("Consent", "withdrawUserConsentAndStop failed: ${exception.errorCode}")
}
})

method, callback, data 등 상세 레퍼런스는 Android API 문서를 참조하세요.