Podziel się opinią i pomóż nam opracować harmonogram rozwoju pakietu SDK do reklam mobilnych Google. Wypełnij roczną ankietę dotyczącą pakietu SDK do reklam mobilnych Google na 2023 r., aby została zakończona 5 maja 2023 roku.

Rozpocznij

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Zgodnie z polityką Google w zakresie zgody użytkownika z UE musisz udzielać odpowiednich informacji użytkownikom z Europejskiego Obszaru Gospodarczego (EOG) i Wielkiej Brytanii oraz uzyskać ich zgodę na stosowanie plików cookie lub innych środków do lokalnego przechowywania danych, jeśli jest to wymagane prawnie. Musisz też uzyskać ich zgodę na wyświetlanie danych osobowych (takich jak AdID). Polityka ta odzwierciedla wymagania UE zawarte w dyrektywie o prywatności i łączności elektronicznej oraz w Ogólnym rozporządzeniu o ochronie danych (RODO).

Aby pomóc wydawcom w wypełnieniu obowiązków, jakie nakłada na nich ta polityka, Google oferuje pakiet SDK User Messaging Platform (UMP). Zaktualizowaliśmy pakiet UMP SDK, aby był zgodny z najnowszymi standardami IAB. Wszystkie te konfiguracje można teraz wygodnie obsługiwać AdMob w sekcji Prywatność i wyświetlanie wiadomości.

Wymagania wstępne

Typy wiadomości dla użytkowników

Więcej informacji znajdziesz w artykuleTypy wiadomości od użytkowników. Szczegółowe instrukcje wdrażania poszczególnych typów wiadomości znajdziesz na pasku nawigacyjnym po lewej stronie.

Instalowanie za pomocą Gradle

Jeśli używasz pakietu SDK do reklam mobilnych Google w wersji 19.8.0 lub nowszej, do pakietu dołączony jest pakiet UMP SDK. Jeśli używasz starszej wersji pakietu SDK do reklam mobilnych, uwzględnij pakiet UMP w kompilacji build.gradle w ten sposób:

dependencies {
    // This dependency is automatically included by Google Mobile Ads SDK 19.8.0
    // or higher.
    implementation 'com.google.android.ump:user-messaging-platform:2.0.0'
}

Po wprowadzeniu zmian w kompilacji build.gradle musisz zsynchronizować projekt z plikami Gradle.

Następnie znajdź identyfikator aplikacji i dodaj do urządzenia AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.rewardedinterstitialexample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <!-- Sample app ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Określ, czy wiadomość ma być wyświetlana

Przy każdym uruchomieniu aplikacji należy poprosić o zaktualizowanie informacji z prośbą o zgodę użytkownika, korzystając z requestConsentInfoUpdate() tego ustawienia. Pozwala to określić, czy użytkownik musi wyrazić zgodę na wykorzystanie danych, jeśli jeszcze tego nie zrobił lub czy jego zgoda wygasła.

Jeśli jest to wymagane, prezentuj formularz, używając informacji zapisanych w obiekcie consentInformation.

Oto przykład, jak sprawdzić stan przy uruchomieniu aplikacji:

Java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.google.android.ump.ConsentForm;
import com.google.android.ump.ConsentInformation;
import com.google.android.ump.ConsentRequestParameters;
import com.google.android.ump.FormError;
import com.google.android.ump.UserMessagingPlatform;

public class MainActivity extends AppCompatActivity {
    private ConsentInformation consentInformation;
    private ConsentForm consentForm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Set tag for under age of consent. false means users are not under
        // age.
        ConsentRequestParameters params = new ConsentRequestParameters
            .Builder()
            .setTagForUnderAgeOfConsent(false)
            .build();

        consentInformation = UserMessagingPlatform.getConsentInformation(this);
        consentInformation.requestConsentInfoUpdate(
            this,
            params,
            new ConsentInformation.OnConsentInfoUpdateSuccessListener() {
                @Override
                public void onConsentInfoUpdateSuccess() {
                    // The consent information state was updated.
                    // You are now ready to check if a form is available.
                }
            },
            new ConsentInformation.OnConsentInfoUpdateFailureListener() {
                @Override
                public void onConsentInfoUpdateFailure(FormError formError) {
                    // Handle the error.
                }
            });
    }
}

Kotlin

Coming soon.

Wczytywanie formularza, jeśli jest dostępny

Przed wyświetleniem formularza musisz określić, czy jest on dostępny. Niedostępne formularze mogą wynikać z tego, że użytkownik włączył ograniczone śledzenie reklam lub jeśli otagowano je jako dotyczące wieku świadomego wyrażenia zgody.

Aby sprawdzić dostępność formularza, użyj opcjithe isConsentFormAvailable() method on the ConsentInformation instance utworzonej wcześniej.

Następnie dodaj kod towarzyszący, aby wczytać formularz:

Java

...
       consentInformation.requestConsentInfoUpdate(
           this,
           params,
           new ConsentInformation.OnConsentInfoUpdateSuccessListener() {
               @Override
               public void onConsentInfoUpdateSuccess() {
                   // The consent information state was updated.
                   // You are now ready to check if a form is available.
                   if (consentInformation.isConsentFormAvailable()) {
                       loadForm();
                   }
               }
           },
           new ConsentInformation.OnConsentInfoUpdateFailureListener() {
               @Override
               public void onConsentInfoUpdateFailure(FormError formError) {
                   // Handle the error.

               }
            });
    }

    public void loadForm() {

    }
}

Kotlin

Coming soon.

Aby wczytać formularz, użyj polecenia the static loadConsentForm() method on the UserMessagingPlatform class.

Java

public void loadForm() {
    // Loads a consent form. Must be called on the main thread.
    UserMessagingPlatform.loadConsentForm(
        this,
        new UserMessagingPlatform.OnConsentFormLoadSuccessListener() {
            @Override
            public void onConsentFormLoadSuccess(ConsentForm consentForm) {
                MainActivity.this.consentForm = consentForm;
            }
        },
        new UserMessagingPlatform.OnConsentFormLoadFailureListener() {
            @Override
            public void onConsentFormLoadFailure(FormError formError) {
                // Handle the error
            }
        }
    );
}

Kotlin

Coming soon.

W razie potrzeby pokaż formularz

Po określeniu dostępności i wczytaniu formularza użyj metodyshow() w instancjiConsentForm , aby go przedstawić.

Użyj obiektuconsentInformation z poprzedniego okresu, aby sprawdzićconsent status i zaktualizować metodęloadForm() :

Java

public void loadForm() {
    UserMessagingPlatform.loadConsentForm(
        this,
        new UserMessagingPlatform.OnConsentFormLoadSuccessListener() {
            @Override
            public void onConsentFormLoadSuccess(ConsentForm consentForm) {
                MainActivity.this.consentForm = consentForm;
                if(consentInformation.getConsentStatus() == ConsentInformation.ConsentStatus.REQUIRED) {
                    consentForm.show(
                        MainActivity.this,
                            new ConsentForm.OnConsentFormDismissedListener() {
                                @Override
                                public void onConsentFormDismissed(@Nullable FormError formError) {
                                    // Handle dismissal by reloading form.
                                    loadForm();
                                }
                            });

                }

            }
        },
        new UserMessagingPlatform.OnConsentFormLoadFailureListener() {
            @Override
            public void onConsentFormLoadFailure(FormError formError) {
                /// Handle Error.
            }
        }
   );
}

Kotlin

Coming soon.

Jeśli chcesz wykonać jakąś czynność po dokonaniu przez użytkownika wyboru lub zamknięciu formularza, umieść tę logikę w module obsługi wypełniania lub wywołania zwrotnego formularza.

Testowanie

Wymuś położenie geograficzne

Pakiet UMP SDK umożliwia przetestowanie działania aplikacji w taki sposób, jakby urządzenie znajdowało się w Europejskim Obszarze Gospodarczym lub Wielkiej Brytanii przy użyciu the setDebugGeography method on ConsentDebugSettings.Builder.

Aby korzystać z funkcji debugowania, musisz podać zaszyfrowany identyfikator urządzenia testowego w ustawieniach debugowania aplikacji. Jeśli wywołasz funkcjęrequestConsentInfoUpdate() bez ustawienia tej wartości, po uruchomieniu aplikacja zapisze wymagany identyfikator.

Java

ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this)
    .setDebugGeography(ConsentDebugSettings
    .DebugGeography
    .DEBUG_GEOGRAPHY_EEA)
    .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
    .build();

ConsentRequestParameters params = new ConsentRequestParameters
    .Builder()
    .setConsentDebugSettings(debugSettings)
    .build();

consentInformation = UserMessagingPlatform.getConsentInformation(this);
consentInformation.requestConsentInfoUpdate(this, params,
    new ConsentInformation.OnConsentInfoUpdateSuccessListener() {
        @Override
        public void onConsentInfoUpdateSuccess() {
            // The consent information state was updated.
            // You are now ready to check if a form is available.
        }
    },
    new ConsentInformation.OnConsentInfoUpdateFailureListener() {
        @Override
        public void onConsentInfoUpdateFailure(FormError formError) {
            // Handle the error.
        }
    });

Kotlin

Coming soon.

W narzędziu DebugGeographymożesz wymusić mapowanie geograficzne na jedną z tych opcji:

Debugowanie geograficzne Opis
DEBUG_GEOGRAPHY_DISABLED Debugowanie geograficzne debugowania jest wyłączone.
DEBUG_GEOGRAPHY_EEA Dane geograficzne są wyświetlane na potrzeby debugowania na podstawie danych takich jak w EOG.
DEBUG_GEOGRAPHY_NOT_EEA Dane geograficzne są wyświetlane na potrzeby debugowania urządzenia jako spoza EOG.

Pamiętaj, że ustawienia debugowania działają tylko na urządzeniach testowych. Nie trzeba dodawać emulatorów do listy identyfikatorów urządzeń, ponieważ testy mają już domyślnie włączone.

Testowanie aplikacji za pomocą pakietu SDK UMP może okazać się przydatne do zresetowania stanu pakietu SDK, co zapewnia symulację pierwszego działania użytkownika. SDK udostępnia do tego metodę reset() .

Java

consentInformation.reset();

Kotlin

consentInformation.reset()

Musisz też wywołać metodę reset() , jeśli postanowisz całkowicie usunąć pakiet UMP SDK z projektu.