Dodawanie funkcji związanych z nagrodą

Jedną ze sposobów na odblokowanie produktów w aplikacji i związanych z nimi korzyści jest tworzenie produktów z nagrodą, czyli przedmiotów, które użytkownicy otrzymują po obejrzeniu reklamy wideo. Oferując nagrody za obejrzenie reklamy wideo, umożliwisz użytkownikom otrzymywanie nagród i korzyści w aplikacji bez konieczności dokonywania bezpośrednich zakupów.

Ten dokument wyjaśnia, jak wdrożyć funkcje reklam tego typu. Sekcja Schemat przepływu pracy na tej stronie ilustruje ten proces.

Identyfikowanie nagród za obejrzenie reklamy wideo w aplikacji

Reklamy wideo z nagrodą mają SkuType INAPP. Produkty muszą być wykorzystane, aby użytkownicy mogli obejrzeć wiele reklam i zdobyć kilka nagród.

Zanim będziesz mieć możliwość zaoferowania użytkownikowi nagrody za obejrzenie reklamy wideo, musisz uzyskać dla niego SkuDetails. Aby to zrobić, wywołaj querySkuDetailsAsync(), podając SkuType.INAPP jako typ produktu.

Deklarowanie reklam dostosowanych do wieku odbiorcy

Aby ułatwić zachowanie zgodności z przepisami prawa dotyczącymi dzieci i niepełnoletnich użytkowników, w tym z ustawą o ochronie prywatności dzieci w internecie (Children's Online Privacy Protection Act – COPPA) i Ogólnym rozporządzeniem o ochronie danych (RODO), w aplikacji musisz zadeklarować, które reklamy powinny być traktowane jako skierowane do dzieci w Stanach Zjednoczonych, a które są kierowane do użytkowników, którzy nie osiągnęli wieku świadomego wyrażenia zgody obowiązującego w danym kraju. W Centrum pomocy AdMob dowiesz się, kiedy należy tagować żądania reklamy pod kątem traktowania treści jako skierowanych do dzieci i kiedy należy otagować je pod kątem kierowania treści do użytkowników, którzy nie osiągnęli wieku samodzielnego wyrażania zgody, a także skutki takiego działania.

Podczas tworzenia klienta obsługującego płatności w aplikacji zastanów się, czy żądania reklamy z nagrodą powinny być traktowane jako skierowane do dzieci czy też do użytkowników, którzy nie osiągnęli wieku świadomego wyrażenia zgody. Jeśli w żądaniach reklamy powinny obowiązywać te ograniczenia, wywołaj metody setChildDirected() i setUnderAgeOfConsent(), przekazując odpowiednie wartości do każdej z nich.

Ten fragment kodu pokazuje, jak zadeklarować, że reklamy wideo powinny być odpowiednie dla dzieci lub użytkowników, którzy nie osiągnęli wieku świadomego wyrażenia zgody:

Kotlin

val billingClient = BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build()

Java

BillingClient billingClient =
    BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build();

Wczytaj reklamy wideo

Musisz załadować film, zanim udostępnisz użytkownikowi opcję obejrzenia reklamy wideo w celu otrzymania nagrody za produkt. Aby to zrobić, utwórz obiekt RewardLoadParams i powiąż go z obiektem SkuDetails, który reprezentuje nagrodę za obejrzenie reklamy wideo. Następnie wywołaj metodę loadRewardedSku() klienta rozliczeniowego, przekazując obiekt RewardLoadParams i obiekt RewardResponseListener.

Detektor RewardResponseListener otrzyma powiadomienie, gdy film się zakończy. Odbiorca jest też powiadamiany, gdy film będzie niedostępny lub wystąpi inny błąd, na przykład przekroczenie limitu czasu serwera.

Aby utrzymać wydajność urządzenia podczas wczytywania filmów powiązanych z nagrodą w aplikacji, pamiętaj o tych sprawdzonych metodach:

  • Wczytuj maksymalnie 3 kody SKU produktu z nagrodą naraz.
  • Spróbuj wczytywać filmy za każdym razem, gdy użytkownik otworzy aplikację. W ten sposób sprawdzisz, czy filmy są nadal wczytywane i dostępne.
  • Podczas podejmowania decyzji o wczytywaniu filmów wybierz odpowiednią równowagę między wykorzystaniem przepustowości a czasem reagowania aplikacji:

    • Najwcześniej załaduj filmy po wywołaniu funkcji getSkuDetails() w przypadku powiązanej nagrody za obejrzenie reklamy wideo. Aplikacja pozostaje bardzo elastyczna, ale może tracić dane sieciowe na wczytywanie filmu, którego użytkownik nigdy nie ogląda.
    • Maksymalnie wczytaj film, gdy użytkownik otworzy stronę, na której ma być wyświetlany. W takiej sytuacji aplikacja rzadko marnuje przepustowość, ale użytkownik musi chwilę poczekać, aż przycisk oglądania filmu stanie się klikalny.

Ten fragment kodu przedstawia proces wczytywania reklamy wideo, która jest odtwarzana przed otrzymaniem nagrody za obejrzenie reklamy wideo przez użytkownika:

Kotlin

if (skuDetails.isRewarded()) {
    val params = RewardLoadParams.Builder()
            .setSkuDetails(skuDetails)
            .build()
    mBillingClient.loadRewardedSku(params.build(),
            object : RewardResponseListener {
        override fun onRewardResponse(@BillingResponse responseCode : Int) {
            if (responseCode == BillingResponse.OK) {
                // Enable the reward product, or make
                // any necessary updates to the UI.
            }
        }
    })
}

Java

if (skuDetails.isRewarded()) {
    RewardLoadParams.Builder params = RewardLoadParams.newBuilder();
    params.setSkuDetails(skuDetails);
    mBillingClient.loadRewardedSku(params.build(),
        new RewardResponseListener() {
            @Override
            public void onRewardResponse(int responseCode) {
                if (responseCode == BillingResponse.OK) {
                      // Enable the reward product, or make
                      // any necessary updates to the UI.
                  }
            }
        });
}

Udostępnij użytkownikom nagrody za zakupy

Jeśli Biblioteka płatności w Google Play wczyta film powiązany z nagrodą – czyli gdy RewardResponseListener otrzyma responseCode w wysokości BillingResponse.OK, możesz rozpocząć proces płatności.

Reklamy wideo z nagrodą rozpoczynasz od wywołania launchBillingFlow(), podobnie jak w przypadku innych typów produktów w aplikacji. Mimo że użytkownik nie dokonuje bezpośredniego zakupu, aby otrzymać nagrodę za obejrzenie reklamy wideo, musisz włączyć proces płatności, aby użytkownik mógł uzyskać produkt i z niego korzystać.

Konsumpcja zakupu

Aby powiadomić klienta obsługującego płatności, że użytkownik otrzymał i zrealizował nagrodę za obejrzenie reklamy wideo, dokonaj zakupu za pomocą metody onPurchasesUpdated() odbiornika płatności klienta. Pamiętaj, że zakupy z nagrodą muszą zostać wykorzystane.

Testowanie nagród za obejrzenie reklamy wideo

Aby sprawdzić, jak Twoja aplikacja wczytuje reklamy wideo i udostępnia użytkownikom nagrody za obejrzenie reklamy wideo, skorzystaj z usług licencjonowanych testerów, którzy domyślnie otrzymują reklamy testowe zamiast prawdziwych aplikacji. Aby dowiedzieć się, jak skonfigurować konta dla tych testerów, przeczytaj artykuł Testowanie aplikacji Płatności w Google Play przez użytkowników.

Inną metodą testowania jest użycie identyfikatora produktu android.test.reward. Ten produkt to zarezerwowana nazwa w Płatnościach w Google Play, więc nie musisz dodawać go do listy produktów w aplikacji w Konsoli Play.

Uwaga: podczas testowania nagród za obejrzenie reklamy wideo w aplikacji nie używaj rzeczywistych produktów. Jeśli tego nie zrobisz, Twoje konto może zostać oznaczone jako spam lub fałszywe.

Po zakończeniu testów pamiętaj, aby przed wdrożeniem produkcyjnej wersji aplikacji u użytkowników zastąpić android.test.reward identyfikatorami produktów z nagrodą.

Schemat procesu obsługi nagrody za obejrzenie reklamy wideo

Poniższy diagram pokazuje, w jaki sposób użytkownik, aplikacja i Biblioteka płatności w Google Play współdziałają przy wyświetlaniu reklamy wideo i przyznawaniu użytkownikowi dostępu do nagrody za obejrzenie reklamy wideo:

Schemat sekwencji pokazujący protokół reklam wideo z nagrodą
Rysunek 1. Zakup nagrody za obejrzenie reklamy wideo za pomocą Płatności w Google Play