Initialize

0. GDPR (General Data Protection Regulation)

GDPR은 μœ λŸ½μ—°ν•©(μ΄ν•˜ 'EU')의 κ°œμΈμ •λ³΄ 보호 λ²•λ ΉμœΌλ‘œ μ„œλΉ„μŠ€ μ œκ³΅μžλŠ” EU μ‚¬μš©μžμ˜ κ°œμΈμ •λ³΄ λ˜λŠ” 그에 μ€€ν•˜λŠ” 정보에 λŒ€ν•œ μˆ˜μ§‘ 및 ν™œμš©μ— λŒ€ν•΄ μ‚¬μš©μžμ—κ²Œ λ™μ˜ μ—¬λΆ€λ₯Ό 확인받아야 ν•©λ‹ˆλ‹€. GDPR κ·œμ • μ€€μˆ˜ 및 κ·œμ •μ— λ”°λ₯Έ κ΄‘κ³ λ„€νŠΈμ›Œν¬ λ™μž‘μ— ν•„μš”ν•œ μ ˆμ°¨μž…λ‹ˆλ‹€.

1. Initialize & GDPR Content UI

μ΄ˆκΈ°ν™” μ‹œ EU μ‚¬μš©μžμ˜ GDPR λ™μ˜ μ—¬λΆ€λ₯Ό λ°›μ•„ μ²˜λ¦¬ν•  수 μžˆλŠ” κ΄€λ ¨ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. Main Activity의 onCreateμ—μ„œ κ΄‘κ³  κ΄€λ ¨ μ½”λ“œλ₯Ό μš”μ²­ν•˜κΈ° 전에 μ΄ˆκΈ°ν™” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

  • "<ADX_APP_ID>"에 ADXμ—μ„œ λ°œκΈ‰λ°›μ€ ADX App IDλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

  • SDK μ΄ˆκΈ°ν™”λŠ” μ•± μ‹€ν–‰ μ‹œ ν•œ 번만 ν˜ΈμΆœν•˜μ—¬ μ£Όμ‹œκ³ , κ΄‘κ³  μš”μ²­μ€ μ΄ˆκΈ°ν™”κ°€ μ™„λ£Œλœ 후에 이뀄져야 ν•©λ‹ˆλ‹€.

    • onCompletedκ°€ 호좜 된 ν›„, κ΄‘κ³ λ₯Ό μš”μ²­ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  • GdprType은 μ•„λž˜ ν•­λͺ© 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜μ—¬ μž…λ ₯ν•©λ‹ˆλ‹€.

GDPR νƒ€μž…

μ„€λͺ…

POPUP_LOCATION

지역에 따라 λ™μ˜ νŒμ—… 호좜 (EU μ§€μ—­)

POPUP_DEBUG

μ§€μ—­ 상관없이 λ™μ˜ νŒμ—… 호좜 ν…ŒμŠ€νŠΈ (DEBUG)

DIRECT_NOT_REQUIRED

λ™μ˜ μ—¬λΆ€κ°€ ν•„μš”μ—†λŠ” μ§€μ—­ (EU μ™Έ μ§€μ—­)

DIRECT_DENIED

μ‚¬μš©μžκ°€ κ°œμΈμ •λ³΄ ν™œμš© 및 μˆ˜μ§‘ κ±°λΆ€

DIRECT_CONFIRM

μ‚¬μš©μžκ°€ κ°œμΈμ •λ³΄ ν™œμš© 및 μˆ˜μ§‘ λ™μ˜

Case 1. EEA μ‚¬μš©μžμ˜ GDPR λ™μ˜ ν™”λ©΄ 제곡

유럽 경제 μ§€μ—­ (European Economic Area) μ‚¬μš©μžμ—κ²Œ λ™μ˜ μ—¬λΆ€λ₯Ό 선택할 수 μžˆλ„λ‘ λ™μ˜ 화면을 μ œκ³΅ν•©λ‹ˆλ‹€.

  • ADXConfigurationμ—μ„œ GdprType을 POPUP_LOCATION둜 μ„€μ •ν•˜μ‹œλ©΄, μ‚¬μš©μžμ˜ 접속 ꡭ가에 따라 EU μ‚¬μš©μžλŠ” GDPR λ™μ˜ Consent UIλ₯Ό 톡해 λ™μ˜ μ—¬λΆ€λ₯Ό κ²°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • GdprType을 POPUP_DEBUG둜 μ„€μ • μ‹œ 접속 ꡭ가와 상관없이 Consent UIλ₯Ό ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

// ADX μ΄ˆκΈ°ν™” κ΄€λ ¨ μ„€μ •
ADXConfiguration adxConfiguration = new ADXConfiguration.Builder()
                        .setAppId("<ADX_APP_ID>")
                        .setGdprType(ADXConfiguration.GdprType.POPUP_LOCATION)
                        .setTestDeviceIds(Arrays.asList("")) // UMP Test Device
                        .build();

ADXSdk.getInstance().initialize((Activity) this, adxConfiguration, new ADXSdk.OnInitializedListener() {
        @Override
        public void onCompleted(boolean result, ADXGDPR.ADXConsentState adxConsentState) {
                // κ΄‘κ³  μ΄ˆκΈ°ν™” μ™„λ£Œ
        }
});

μ• λ“œλͺΉ UMP의 GDPR λ™μ˜ 화면을 ν…ŒμŠ€νŠΈ λͺ©μ μœΌλ‘œ ν™•μΈν•˜λ €λ©΄, μ•„λž˜ 두 κ°€μ§€ 섀정이 ν•„μš”ν•©λ‹ˆλ‹€.

1) μ• λ“œλͺΉ λŒ€μ‰¬λ³΄λ“œ (https://apps.admob.com)둜 μ΄λ™ν•œ λ‹€μŒμ— μ•„λž˜ GDPR λ©”μ‹œμ§€ μž‘μ„± κ°€μ΄λ“œ λ‚΄μš©μ„ λ”°λΌμ„œ λ©”μ‹œμ§€ μž‘μ„±κ³Ό κ²Œμ‹œλ₯Ό μ™„λ£Œν•˜μ‹­μ‹œμ˜€. https://support.google.com/admob/answer/10113207?hl=ko


2) 둜그 좜λ ₯μ—μ„œ μ•„λž˜μ˜ κΈ°κΈ° IDλ₯Ό ν™•μΈν•©λ‹ˆλ‹€. 이 μ‹λ³„μž λ¬Έμžμ—΄μ„ ADXConfiguration 객체 생성 μ‹œ μ‚¬μš©ν•˜λŠ” setTestDeviceIds νŒŒλΌλ―Έν„°μ— μž…λ ₯ν•˜κ³ , setGdprType νŒŒλΌλ―Έν„°μ—λŠ” POPUP_DEBUGλ₯Ό μž…λ ₯ν•˜μ—¬ μ£Όμ‹­μ‹œμ˜€. Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.

<UMP GDPR λ™μ˜ ν™”λ©΄>

Case 2. 직접 λ™μ˜ μ—¬λΆ€ μ„€μ •

유럽 경제 μ§€μ—­ (European Economic Area) μ‚¬μš©μžκ°€ μ—†κ±°λ‚˜ μ•± 내에 νšŒμ›κ°€μž…μ΄λ‚˜ GDPRμ—μ„œ μ •ν•˜λŠ” κ°œμΈμ •λ³΄μ— μ€€ν•˜λŠ” 정보λ₯Ό μˆ˜μ§‘ν•˜κ³  μžˆμœΌμ‹œλ‹€λ©΄ ν•œκ΅­μ—μ„œ ν‘Έμ‹œμ•Œλ¦Ό λ™μ˜, κ°œμΈμ •λ³΄μ²˜λ¦¬λ°©μΉ¨μ— λŒ€ν•΄ λ™μ˜μ ˆμ°¨λ₯Ό μ§„ν–‰ν•˜λŠ” 것과 같이 λ”°λ‘œ 직접 λ™μ˜μ ˆμ°¨λ₯Ό μ§„ν–‰ 및 μ²˜λ¦¬ν•΄μ£Όμ…”μ•Ό ν•©λ‹ˆλ‹€.

  • EU μ™Έ μ§€μ—­μœΌλ‘œ λ™μ˜ μ—¬λΆ€κ°€ ν•„μš” μ—†λŠ” 경우, ADXConfigurationμ—μ„œ GdprType을 DIRECT_NOT_REQUIRED둜 μ„€μ •ν•΄μ£Όμ„Έμš”.

  • EU μ§€μ—­μœΌλ‘œ 직접 λ™μ˜ 절차λ₯Ό μ§„ν–‰ν•˜μ‹œλŠ” 경우, λ™μ˜μ ˆμ°¨ 결과에 따라 GdprType을 μ„€μ •ν•΄μ£Όμ„Έμš” .

    • μ‚¬μš©μžκ°€ κ°œμΈμ •λ³΄ ν™œμš© 및 μˆ˜μ§‘ λ™μ˜ν•œ μƒνƒœ: DIRECT_CONFIRM

    • μ‚¬μš©μžκ°€ κ°œμΈμ •λ³΄ ν™œμš© 및 μˆ˜μ§‘ κ±°λΆ€ν•œ μƒνƒœ: DIRECT_DENIED

// ADX μ΄ˆκΈ°ν™” κ΄€λ ¨ μ„€μ •
ADXConfiguration adxConfiguration = new ADXConfiguration.Builder()
                        .setAppId("<ADX_APP_ID>")
                        .setGdprType(ADXConfiguration.GdprType.DIRECT_CONFIRM)
                        .build();

ADXSdk.getInstance().initialize((Activity) this, adxConfiguration, new ADXSdk.OnInitializedListener() {
        @Override
        public void onCompleted(boolean result, ADXGDPR.ADXConsentState adxConsentState) {
                // κ΄‘κ³  μ΄ˆκΈ°ν™” μ™„λ£Œ
        }
});

2. Native Ad μ΄ˆκΈ°ν™”

λ™μΌν•œ Activityμ—μ„œ μ΄ˆκΈ°ν™” ν•¨μˆ˜μ™€ Native Ad ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” 경우

μ΄ˆκΈ°ν™” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κΈ° 전에 AdxNativeAdFactory의 init()κ³Ό setAdxViewBinder() λ₯Ό μ΄ˆκΈ°ν™” ν•¨μˆ˜λ³΄λ‹€ λ¨Όμ € ν˜ΈμΆœν•΄μ•Όν•©λ‹ˆλ‹€. μ΄ˆκΈ°ν™” ν•¨μˆ˜ 호좜 ν›„ OnInitializedListener의 onCompleted λ‚΄μ—μ„œ AdxNativeAdFactory.preloadAd()λ₯Ό ν˜ΈμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€.

AdxNativeAdFactory.init(this);

AdxNativeAdFactory.setAdxViewBinder("<NATIVE_AD_UNIT_ID>", new AdxViewBinder.Builder(R.layout.layout_media_native_ad)
        .mediaViewContainerId(R.id.mediaContainerId)
        .iconImageId(R.id.adIconId)
        .titleId(R.id.titleId)
        .adChoiceContainerId(R.id.adChoicesContainerId)
        .callToActionId(R.id.callToActionId)
        .build());

Native Ad κ΅¬ν˜„ 방법은 ν•΄λ‹Ή νŽ˜μ΄μ§€λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”.

3. ConsentState

GDPR λ™μ˜ 여뢀에 λŒ€ν•΄ 4개의 μƒνƒœκ°’μ„ κ°€μ§‘λ‹ˆλ‹€.

μƒνƒœ

μ„€λͺ…

ADXConsentStateUnknown

λ™μ˜ μ—¬λΆ€κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μ‚¬μš©μžλ‘œ 호좜 μƒνƒœλ‘œ κ°œμΈν™” κ΄‘κ³ κ°€ λ…ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ADXConsentStateNotRequired

λ™μ˜ μ—¬λΆ€κ°€ ν•„μš”μ—†λŠ” μ§€μ—­ (EU μ™Έ μ§€μ—­)

κ°œμΈν™” κ΄‘κ³ κ°€ λ…ΈμΆœλ©λ‹ˆλ‹€.

ADXConsentStateDenied

μ‚¬μš©μžκ°€ κ°œμΈμ •λ³΄ ν™œμš© 및 μˆ˜μ§‘μ„ κ±°λΆ€ν•œ μƒνƒœ

κ°œμΈν™” κ΄‘κ³ κ°€ λ…ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ADXConsentStateConfirm

μ‚¬μš©μžκ°€ κ°œμΈμ •λ³΄ ν™œμš© 및 μˆ˜μ§‘μ„ λ™μ˜ν•œ μƒνƒœ

κ°œμΈν™” κ΄‘κ³ κ°€ λ…ΈμΆœλ©λ‹ˆλ‹€.

λ™μ˜ μ—¬λΆ€λ₯Ό 확인/λ³€κ²½ ν•˜μ‹œλŠ” 경우 ADXGdprManager의 μ•„λž˜ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ£Όμ‹œκΈ° λ°”λžλ‹ˆλ‹€.

// ADXGdprManager에 μ„€μ •λœ μ‚¬μš©μžμ˜ λ™μ˜ 정보λ₯Ό ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.
ADXGdprManager.getResultGDPR(this);

// 직접 λ™μ˜ μ—¬λΆ€λ₯Ό λ³€κ²½ν•©λ‹ˆλ‹€.
ADXGdprManager.saveResultGDPR(this, ADXConsentState);

4. GDPR λ™μ˜ν™”λ©΄ μž¬λ…ΈμΆœ

GDPR λ™μ˜ 화면을 μ‚¬μš©μžμ—κ²Œ μž¬λ…ΈμΆœν•˜μ—¬ λ™μ˜ 여뢀에 λŒ€ν•œ μƒνƒœ 값을 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ADXSdk.getInstance().showGDPRForm((Activity) this, new ADXSdk.OnPrivacyOptionsFormListener() {
    @Override
    public void onCompleted(boolean result) {
    }
});
  • λ²„νŠΌ 클릭과 같은 μ‚¬μš©μž μž…λ ₯ μ΄λ²€νŠΈμ— μ˜ν•΄μ„œλ§Œ μœ„μ˜ λ©”μ†Œλ“œλ₯Ό 호좜 ν•˜μ‹­μ‹œμ˜€. μ‚¬μš©μž μž…λ ₯ 이벀트 없이 ν˜ΈμΆœν•  경우 μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

  • 유럽 경제 μ§€μ—­ (European Economic Area) 지역이 아닐 경우, GDPR λ™μ˜ 화면이 μž¬λ…ΈμΆœ μ•ˆ 될 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

  • GDPR λ™μ˜ 여뢀에 λŒ€ν•œ 정보가 이미 μ‘΄μž¬ν•  경우, 유럽 경제 μ§€μ—­ (European Economic Area) 지역이 μ•„λ‹ˆλ”λΌλ„ GDPR λ™μ˜ 화면이 λ…ΈμΆœλ  수 μžˆμŠ΅λ‹ˆλ‹€.

  • SDK 2.6.0 버전뢀터 μ§€μ›λ©λ‹ˆλ‹€.

5. Privacy Policy

AD(x)의 Privacy Policy λ¬Έμ„œ URL은 ADXGDPR의 getPrivacyURL()을 ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©ν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

ADXGdprManager.getPrivacyURL();

6. 디버깅 둜그 ν™œμ„±ν™”

QA μ§„ν–‰ μ‹œ 연동 및 λ―Έλ””μ—μ΄μ…˜ 정상 λ™μž‘ 확인을 μœ„ν•΄ μ΄ˆκΈ°ν™” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κΈ° 전에 μ•„λž˜μ™€ 같이 μΆ”κ°€λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

ADXLogUtil.setLogEnable(true);

7. 아동 λŒ€μƒ μ„€μ •

COPPA에 따라 μ½˜ν…μΈ λ₯Ό 아동 λŒ€μƒμœΌλ‘œ μ²˜λ¦¬ν•˜λ„λ‘ μ§€μ •ν•΄μ•Ό ν•˜κ±°λ‚˜ 유럽 경제 μ§€μ—­ (EEA)에 κ±°μ£Όν•˜λŠ” λ™μ˜ μ—°λ Ή 미만의 μ‚¬μš©μžλ₯Ό λŒ€μƒμœΌλ‘œ ν•˜λŠ” μ„œλΉ„μŠ€μ˜ 경우 μ΄ˆκΈ°ν™” ν•¨μˆ˜ ν˜ΈμΆœν•˜κΈ° 전에 μ• λ“œλͺΉμ˜ νƒ€κ²ŸνŒ… 섀정을 ν•΄μ•Ό ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ μ• λ“œλͺΉ νƒ€κ²ŸνŒ…(https://developers.google.com/admob/android/targeting?hl=ko) 톡해 확인 ν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

Last updated

Was this helpful?