EU 지역에 앱을 출시하고 광고를 띄울려면 개인정보 수집 선택, 알림을 위한 GDPR 메시지를 만들어야한다.
구글 애드몹의 메뉴에서 개인 정보 보호 및 메시지 페이지에 가면 아래와 같은 안내가 나온다.
유럽 규정 메시지 만들기를 클릭하면 아래와 같은 화면에서 여러가지 설정을 할 수 있다.
먼저 앱을 연결한다.
그리고 동의하지 않음은 웬만하면 사용 안함으로 설정하고 닫기도 사용 안함으로 설정한다.
동의, 옵션 관리, 광고 파트너 화면을 자신이 원하는대로 수정하면 되는데 여기서 여러 경험자들의 의견을 바탕으로 몇 가지 유의 사항을 정리하고자한다.
1. don't consent 비활성화한다.
2. 팝업에서 옵션 값이 sharedpreferences에 저장되므로 전체 동의를 안했으면 광고를 못 띄운다. 전체 동의를 안 했으면 계속 동의하도록 안내해야한다.
3. 언어를 모두 활성화한다.
다음 앱 내 설정이다.
1. UMP SDK 라이브러리 추가
- Gradle에 의존성 추가
build.gradle (Module: app) 파일에 다음과 같이 UMP SDK 의존성을 추가한다.
dependencies {
implementation ("com.google.android.ump:user-messaging-platform:최신버전")
}
2. 동의 요청 파라미터 생성 및 동의 정보 업데이트
- ConsentRequestParameters 객체를 생성하여 동의 요청에 필요한 파라미터를 설정한다.
- 이후 ConsentInformation 객체를 통해 현재 동의 상태를 업데이트한다.
import com.google.android.ump.ConsentRequestParameters;
import com.google.android.ump.UserMessagingPlatform;
import com.google.android.ump.ConsentInformation;
import com.google.android.ump.FormError;
ConsentRequestParameters params = new ConsentRequestParameters.Builder().build();
ConsentInformation consentInformation = UserMessagingPlatform.getConsentInformation(context);
consentInformation.requestConsentInfoUpdate(
activity,
params,
new ConsentInformation.OnConsentInfoUpdateSuccessListener() {
@Override
public void onConsentInfoUpdateSuccess() {
// 동의 정보 업데이트 성공 시 처리
if (consentInformation.isConsentFormAvailable()) {
loadConsentForm(); // 동의 폼 로드 및 표시
}
}
},
new ConsentInformation.OnConsentInfoUpdateFailureListener() {
@Override
public void onConsentInfoUpdateFailure(FormError formError) {
// 오류 처리: 네트워크 문제 등
}
}
);
3. 동의 폼 로드 및 표시
- 사용자의 동의를 받기 위해 동의 폼을 로드하고, 필요 시 이를 표시한다.
import com.google.android.ump.ConsentForm;
private void loadConsentForm() {
UserMessagingPlatform.loadConsentForm(
context,
new ConsentForm.OnConsentFormLoadSuccessListener() {
@Override
public void onConsentFormLoadSuccess(ConsentForm consentForm) {
// 동의 폼이 성공적으로 로드되면 사용자에게 표시합니다.
consentForm.show(
activity,
new ConsentForm.OnConsentFormDismissedListener() {
@Override
public void onConsentFormDismissed(FormError formError) {
// 사용자가 동의 폼을 닫은 후의 처리
// 사용자가 동의했는지 여부에 따라 광고 요청 설정 변경
}
}
);
}
},
new ConsentForm.OnConsentFormLoadFailureListener() {
@Override
public void onConsentFormLoadFailure(FormError formError) {
// 동의 폼 로드 실패 처리
}
}
);
}
4. 광고 요청 시 개인화/비개인화 광고 설정
- 사용자가 동의하지 않은 경우 (또는 아직 동의 여부가 결정되지 않은 경우), 비개인화 광고(non-personalized ads)를 요청해야 한다.
- 이를 위해 광고 요청 시 추가 파라미터 "npa": "1"을 설정한다.
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.admob.AdMobAdapter;
import android.os.Bundle;
Bundle extras = new Bundle();
extras.putString("npa", "1"); // "1"이면 비개인화 광고 요청
AdRequest adRequest = new AdRequest.Builder()
.addNetworkExtrasBundle(AdMobAdapter.class, extras)
.build();
// 이후 adRequest를 사용하여 광고 로드
5. 개인정보처리방침 업데이트
- 앱의 개인정보처리방침에 어떠한 데이터를 수집하는지, 어떻게 사용하는지 설명하고 광고 네트워크(AdMob 포함)의 데이터 처리 방식에 대해서도 명확하게 설명해야한다.
- 그리고 Google의 개인정보 보호 정책 링크도 포함시키는 것이 좋다.
6. 테스트 및 배포 전 검증
- 유럽(EU) 지역 VPN 등을 써서 실제 동의 플로우가 제대로 작동하는지 테스트한다.
- 동의 여부에 따라 개인화/비개인화 광고가 올바르게 표시되는지 확인한다.
7. 로직
- 기본적인 틀은 동일하게 완성하더라도 로직은 각자의 앱에 맞게 작성해야한다. 예를 들어 개인정보 수집 동의를 안해서 리워드 광고를 띄우지 못하게 된 경우 해당 내용을 사용자의 경험을 해치지 않는 선에서 안내하는 게 좋다.
참고 자료
- https://support.google.com/admob/answer/6128543
- https://developers.google.com/admob/android/privacy?hl=ko
- https://support.google.com/admob/answer/10113207
AdMob 정책 및 제한사항 - Google AdMob 고객센터
도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요
support.google.com
시작하기 | Android | Google for Developers
이 페이지는 Cloud Translation API를 통해 번역되었습니다. 시작하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Google 사용자 메시지 플랫폼 (UMP) SDK는 개인
developers.google.com
앱용 유럽 규정 메시지 작성 - Google AdMob 고객센터
도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요
support.google.com
'어플리케이션, 앱 (Application) > 안드로이드 (Android)' 카테고리의 다른 글
안드로이드 jetpack compose 공부 정리 3일차 (코틀린, 함수와 클래스) (0) | 2025.05.29 |
---|---|
안드로이드 앱 생명주기 (Activity Lifecycle) (0) | 2025.03.19 |
안드로이드 앱 애드몹 광고를 이용한 수익화 방향 (애드몹 리워드 광고 단가) (0) | 2025.03.18 |
findViewById()를 버리고 ViewBinding을 쓰자 (0) | 2025.03.17 |
안드로이드 jetpack compose 공부 정리 2일차 (코틀린, android 14 이후 버전) (0) | 2025.03.12 |