Skip to main content

개요

사용자가 앱 내에서 서비스 이용약관, 개인정보 수집·이용, 마케팅 정보 수신 등에 대한 동의를 관리할 수 있도록 SDK에서 제공하는 API입니다. 고객사 앱은 SDK의 getConsent / setConsent / withdrawConsent 메서드를 통해 사용자의 동의 정보를 조회·저장·철회할 수 있습니다.

지원하는 동의 항목

필드Title비고
agreeTermsOfService서비스 이용약관 동의
agreePersonalInfoUseAndSharing개인정보 수집·이용 및 제3자 제공 동의
agreeMarketingInfoReceive마케팅 정보 수신 동의캐시백 및 광고 알림에 대한 수신 동의 입니다. 미동의시 알림이 나가지 않습니다.
agreeMarketingPersonalInfoUseAndSharing마케팅 목적 개인정보 수집·이용·제공 동의캐시백 및 광고 알림을 보내기 위해 서비스이용기록을 이용한다는 개인정보 동의 입니다. 미동의시 알림이 나가지 않습니다.
agreeNighttimeNotification야간(21:00~08:00) 알림 수신 동의미동의시 야간에 알림이 나가지 않습니다.
Consent API는 현재 설정된 userId를 키로 사용하여 동의 정보를 저장·조회합니다. 호출 전에 setUserId() 로 userId를 먼저 설정해 두는 것을 권장합니다. userId가 비어 있는 상태로 호출하면 실패 콜백이 호출됩니다.

Reference

method, callback, Data 등의 레퍼런스의 경우 다음 페이지를 참조하시면 됩니다.

사용 예시

0. 사전 설정

Consent API 호출 전에 setUserId() 로 userId를 설정해 두는 것을 권장합니다. Consent 정보는 이 userId를 키로 서버에 저장됩니다.
val moment = MomentSDK.getInstance(context)
moment.setUserId("test-user-id", object : MomentSDK.ResultCallback {
    override fun onSuccess() {
        // userId 설정 완료 후 consent API 호출
    }
    override fun onFailure(exception: MomentException) {}
})

1. 동의 상태 조회 (getConsent)

저장된 사용자 동의 상태를 조회하여 UI에 반영하는 예시입니다.
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}")
    }
})

2. 동의 저장 (setConsent)

사용자가 동의 화면에서 입력한 값을 서버에 저장하는 예시입니다. 5개 필드를 모두 지정해서 전달해야 합니다.
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) {
        // 서버에 반영된 최종 값으로 UI 재동기화
        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}")
    }
})
일부 항목만 변경하고 싶은 경우에도, 변경하지 않는 항목은 현재 값(예: getConsent 로 조회한 값 또는 UI에 표시되는 스위치 상태)을 그대로 다시 지정해 주어야 합니다. 지정하지 않은 필드는 false 로 저장됩니다.

3. 동의 철회 (withdrawConsent)

사용자가 모든 동의를 철회할 때(예: 회원 탈퇴, “모든 동의 해제” 버튼 등) 사용합니다. 모든 동의 필드가 false 로 저장됩니다.
moment.withdrawConsent(object : MomentSDK.ResultCallback {
    override fun onSuccess() {
        binding.swConsentTos.isChecked = false
        binding.swConsentPersonalInfo.isChecked = false
        binding.swConsentMarketingInfo.isChecked = false
        binding.swConsentMarketingPersonal.isChecked = false
        binding.swConsentNighttimeNoti.isChecked = false
    }

    override fun onFailure(exception: MomentException) {
        Log.e("Consent", "withdrawConsent failed: ${exception.errorCode}")
    }
})
withdrawConsentagreeTermsOfService 를 포함한 모든 동의를 철회합니다. 일부 동의만 해제하려면 setConsent 를 사용해 원하는 필드만 false 로 지정해 호출해 주세요.
사용자가 앱 내에서 서비스 이용약관, 개인정보 수집·이용, 마케팅 정보 수신 등에 대한 동의를 관리할 수 있도록 SDK에서 제공하는 API입니다. 고객사 앱은 SDK의 getConsent / setConsent / withdrawConsent 메서드를 통해 사용자의 동의 정보를 조회·저장·철회할 수 있습니다.

지원하는 동의 항목

필드Title비고
agreeTermsOfService서비스 이용약관 동의
agreePersonalInfoUseAndSharing개인정보 수집·이용 및 제3자 제공 동의
agreeMarketingInfoReceive마케팅 정보 수신 동의캐시백 및 광고 알림에 대한 수신 동의 입니다. 미동의시 알림이 나가지 않습니다.
agreeMarketingPersonalInfoUseAndSharing마케팅 목적 개인정보 수집·이용·제공 동의캐시백 및 광고 알림을 보내기 위해 서비스이용기록을 이용한다는 개인정보 동의 입니다. 미동의시 알림이 나가지 않습니다.
agreeNighttimeNotification야간(21:00~08:00) 알림 수신 동의미동의시 야간에 알림이 나가지 않습니다.
Consent API는 현재 설정된 userId를 키로 사용하여 동의 정보를 저장·조회합니다. 호출 전에 setUserId() 로 userId를 먼저 설정해 두는 것을 권장합니다. userId가 비어 있는 상태로 호출하면 실패 콜백이 호출됩니다.

Reference

method, callback, Data 등의 레퍼런스의 경우 다음 페이지를 참조하시면 됩니다.

사용 예시

0. 사전 설정

Consent API 호출 전에 setUserId() 로 userId를 설정해 두는 것을 권장합니다. Consent 정보는 이 userId를 키로 서버에 저장됩니다.
val moment = MomentSDK.getInstance(context)
moment.setUserId("test-user-id", object : MomentSDK.ResultCallback {
    override fun onSuccess() {
        // userId 설정 완료 후 consent API 호출
    }
    override fun onFailure(exception: MomentException) {}
})

1. 동의 상태 조회 (getConsent)

저장된 사용자 동의 상태를 조회하여 UI에 반영하는 예시입니다.
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}")
    }
})

2. 동의 저장 (setConsent)

사용자가 동의 화면에서 입력한 값을 서버에 저장하는 예시입니다. 5개 필드를 모두 지정해서 전달해야 합니다.
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) {
        // 서버에 반영된 최종 값으로 UI 재동기화
        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}")
    }
})
일부 항목만 변경하고 싶은 경우에도, 변경하지 않는 항목은 현재 값(예: getConsent 로 조회한 값 또는 UI에 표시되는 스위치 상태)을 그대로 다시 지정해 주어야 합니다. 지정하지 않은 필드는 false 로 저장됩니다.

3. 동의 철회 (withdrawConsent)

사용자가 모든 동의를 철회할 때(예: 회원 탈퇴, “모든 동의 해제” 버튼 등) 사용합니다. 모든 동의 필드가 false 로 저장됩니다.
moment.withdrawConsent(object : MomentSDK.ResultCallback {
    override fun onSuccess() {
        binding.swConsentTos.isChecked = false
        binding.swConsentPersonalInfo.isChecked = false
        binding.swConsentMarketingInfo.isChecked = false
        binding.swConsentMarketingPersonal.isChecked = false
        binding.swConsentNighttimeNoti.isChecked = false
    }

    override fun onFailure(exception: MomentException) {
        Log.e("Consent", "withdrawConsent failed: ${exception.errorCode}")
    }
})
withdrawConsentagreeTermsOfService 를 포함한 모든 동의를 철회합니다. 일부 동의만 해제하려면 setConsent 를 사용해 원하는 필드만 false 로 지정해 호출해 주세요.