📖 PrzeglądOverview

Moduł GDPR integruje Google User Messaging Platform (UMP) do zarządzania zgodami użytkowników na przetwarzanie danych i wyświetlanie reklam zgodnie z RODO/GDPR.The GDPR module integrates Google User Messaging Platform (UMP) for managing user consents for data processing and ad display in compliance with GDPR.

⚠️ Wymagane:Required: Skonfiguruj Funding Choices w AdMob Console przed użyciem.Configure Funding Choices in AdMob Console before use.

📚 API

requestAndShowIfRequired(activity, isUnderAge, debug?, onFinished)

Pobierz status i pokaż formularz jeśli wymagany.Get status and show form if required.

ParametryParameters:

  • activity: Activity - Activity do wyświetlenia formularzaActivity to display the form
  • isUnderAge: Boolean - Czy użytkownik poniżej wieku zgody (COPPA)Whether the user is underage (COPPA)
  • debug: DebugConfig? - Opcjonalna konfiguracja debugOptional debug configuration
  • onFinished: (Result) -> Unit - Callback z wynikiemCallback with result

showPrivacyOptions(activity, onDismiss)

Pokaż ekran zarządzania zgodami (Privacy Options).Show consent management screen (Privacy Options).

canRequestAds(context): Boolean

Czy można pokazywać reklamy wg UMP.Whether ads can be shown per UMP.

consentStatus(context): Int

Surowy status z UMP (UNKNOWN, REQUIRED, NOT_REQUIRED, OBTAINED).Raw status from UMP (UNKNOWN, REQUIRED, NOT_REQUIRED, OBTAINED).

isConsentObtained(context): Boolean

Czy zgoda została uzyskana.Whether consent was obtained.

isPrivacyOptionsRequired(context): Boolean

Czy UMP wymaga pokazania opcji prywatności.Whether UMP requires showing privacy options.

💡 UżycieUsage

Podstawowe użycieBasic Usage
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Sprawdź i pokaż formularz zgód jeśli wymagany
        ADict.GDPR.requestAndShowIfRequired(
            activity = this,
            isUnderAge = false
        ) { result ->
            if (result.canRequestAds) {
                // Można ładować reklamy
                loadAds()
            } else {
                // Brak zgody - pokaż wersję bez reklam
                showAdFreeContent()
            }

            result.error?.let { error ->
                Log.e("GDPR", "Error: ${error.message}")
            }
        }
    }

    // Przycisk "Zarządzaj prywatnością" w ustawieniach
    fun onPrivacySettingsClick() {
        ADict.GDPR.showPrivacyOptions(this) { error ->
            error?.let {
                Toast.makeText(this, "Nie można otworzyć ustawień", Toast.LENGTH_SHORT).show()
            }
        }
    }
}
Debug mode (testowanie)
// Tylko w debug!
if (BuildConfig.DEBUG) {
    ADict.GDPR.requestAndShowIfRequired(
        activity = this,
        isUnderAge = false,
        debug = GDPR.DebugConfig(
            // Hash urządzenia (z logcat przy pierwszym uruchomieniu)
            deviceHashedIds = listOf("ABCDEF0123456789"),
            // Wymuś geografię EEA (gdzie GDPR obowiązuje)
            forceGeographyEea = true
        )
    ) { result ->
        Log.d("GDPR", "Status: ${result.status}, canRequestAds: ${result.canRequestAds}")
    }
}

📦 Klasy danychData Classes

data class Result

  • statusIntStatus consentu (ConsentInformation.ConsentStatus)
  • canRequestAdsBooleanCzy można żądać reklamWhether ads can be requested
  • errorFormError?Błąd (jeśli wystąpił)Error (if occurred)

data class DebugConfig

  • deviceHashedIdsList<String>Hash ID urządzeń testowychHashed IDs of test devices
  • forceGeographyEeaBoolean?true=EEA, false=non-EEA, null=auto

🔗 IntegracjaIntegration z reklamami

Pełna integracjaFull Integration
class SplashActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // 1. Sprawdź GDPR consent
        ADict.GDPR.requestAndShowIfRequired(this) { result ->
            if (result.canRequestAds) {
                // 2. Zainicjalizuj Mobile Ads SDK
                MobileAds.initialize(this) {
                    // 3. Przejdź do głównej aktywności
                    startMainActivity()
                }
            } else {
                // Przejdź bez reklam
                startMainActivity()
            }
        }
    }
}

// W innych miejscach aplikacji
fun shouldShowAds(): Boolean {
    return ADict.GDPR.canRequestAds(context) && !isPremiumUser()
}

fun loadBannerAd() {
    if (!ADict.GDPR.canRequestAds(context)) {
        bannerContainer.visibility = View.GONE
        return
    }
    // Załaduj reklamę...
}