Jednym ze sposobów odblokowywania produktów i korzyści w aplikacji dla użytkowników jest tworzenie produktów z nagrodą, czyli elementów, które użytkownicy otrzymują po obejrzeniu reklamy wideo. Udostępniając produkty z nagrodą, umożliwiasz użytkownikom uzyskiwanie nagród i korzyści w aplikacji bez konieczności dokonywania bezpośrednich zakupów.
Ten dokument wyjaśnia, jak wdrożyć funkcje nagród za obejrzenie reklamy wideo. Proces ten ilustruje sekcja diagram przepływu pracy na tej stronie.
Identyfikowanie produktów z nagrodami w aplikacji
Nagrody za obejrzenie reklamy wideo mają wartość SkuType, a ich cena to INAPP.
Aby użytkownicy mogli obejrzeć wiele reklam i otrzymać wiele nagród, muszą korzystać z usług.
Zanim zaoferujesz użytkownikowi nagrodę za obejrzenie reklamy wideo, musisz uzyskać SkuDetails dla tego produktu. Aby to zrobić, wywołaj
querySkuDetailsAsync()
z SkuType.INAPP jako typem produktu.
Deklarowanie reklam dostosowanych do wieku
Aby ułatwić zachowanie zgodności z obowiązkami prawnymi dotyczącymi dzieci i użytkowników niepełnoletnich, w tym z ustawą o ochronie prywatności dzieci w internecie (COPPA) i Ogólnym rozporządzeniem o ochronie danych (RODO), aplikacja powinna deklarować, które reklamy w Stanach Zjednoczonych powinny być traktowane jako kierowane do dzieci, a które są kierowane do użytkowników, którzy nie osiągnęli obowiązującego wieku świadomego wyrażenia zgody w swoim kraju. W Centrum pomocy AdMob znajdziesz informacje o tym, kiedy należy oznaczać żądania reklam tagiem traktowania treści jako skierowanych do dzieci, a kiedy tagiem traktowania treści jako skierowanych do użytkowników, którzy nie osiągnęli wieku świadomego wyrażenia zgody, a także o skutkach takiego postępowania.
Podczas tworzenia klienta płatności w aplikacji zastanów się, czy żądania reklam z nagrodą powinny być traktowane jako skierowane do dzieci, czy do użytkowników, którzy nie osiągnęli wieku świadomego wyrażania zgody. Jeśli żądania reklam mają podlegać tym ograniczeniom, wywołaj metody setChildDirected() i setUnderAgeOfConsent(), przekazując do każdej z nich odpowiednie wartości.
Poniższy 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();
Wczytywanie reklam wideo
Zanim wyświetlisz użytkownikowi opcję obejrzenia reklamy wideo w celu otrzymania nagrody za obejrzenie reklamy wideo, musisz wczytać film. Aby to zrobić, utwórz obiekt RewardLoadParams i powiąż go z obiektem SkuDetails reprezentującym nagrodę za obejrzenie reklamy wideo. Następnie wywołaj metodę loadRewardedSku() klienta rozliczeniowego, przekazując do niej obiekt RewardLoadParams i obiekt RewardResponseListener.
Słuchacz RewardResponseListener otrzyma powiadomienie, gdy film zostanie wczytany. Słuchacz otrzymuje też powiadomienie, jeśli film jest niedostępny lub wystąpił inny błąd, np. przekroczenie limitu czasu serwera.
Aby utrzymać wydajność urządzenia podczas wczytywania filmów powiązanych z produktami z nagrodą w aplikacji, pamiętaj o tych sprawdzonych metodach:
- Wczytuj maksymalnie 3 kody SKU produktów z nagrodą za obejrzenie reklamy wideo jednocześnie.
- Spróbuj wczytać filmy za każdym razem, gdy użytkownik otworzy aplikację. Ten krok pomoże Ci sprawdzić, czy filmy są nadal wczytane i dostępne.
Decydując, kiedy wczytywać filmy, wybierz równowagę między wykorzystaniem przepustowości a szybkością reakcji aplikacji, która najlepiej pasuje do Twojego przypadku użycia:
- Filmy należy wczytywać najwcześniej po wywołaniu funkcji
getSkuDetails()w przypadku powiązanej nagrody za obejrzenie reklamy wideo. Aplikacja pozostaje bardzo responsywna, ale możesz marnować dane sieciowe na wczytywanie filmu, którego użytkownik nigdy nie obejrzy. - Najpóźniej wczytaj film, gdy użytkownik przejdzie na stronę, na której ma być wyświetlany. W takim przypadku aplikacja rzadko marnuje przepustowość, ale użytkownik może musieć poczekać kilka chwil, zanim przycisk odtwarzania filmu stanie się klikalny.
- Filmy należy wczytywać najwcześniej po wywołaniu funkcji
Poniższy fragment kodu pokazuje proces wczytywania reklamy wideo, która wyświetla się, zanim użytkownik otrzyma nagrodę za obejrzenie reklamy wideo:
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. } } }); }
Przyznawanie użytkownikom nagród za zakupy
Jeśli Biblioteka płatności w Google Play wczyta film powiązany z nagrodą za obejrzenie reklamy wideo, czyli jeśli RewardResponseListener otrzyma responseCode o wartości BillingResponse.OK, możesz uruchomić proces płatności.
Wyświetlanie reklam produktu z nagrodą rozpoczynasz, wywołując funkcję launchBillingFlow(), tak jak w przypadku wszystkich 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 mógł on uzyskać i używać produktu.
Skonsumuj zakup
Aby powiadomić klienta rozliczeniowego, że użytkownik otrzymał i wykorzystał produkt z nagrodą, obsłuż zakup w metodzie onPurchasesUpdated() odbiornika klienta rozliczeniowego. Pamiętaj, że zakupy z nagrodą muszą zostać wykorzystane.
Testowanie nagród za obejrzenie reklamy wideo
Aby sprawdzić, jak aplikacja wczytuje reklamy wideo i zapewnia użytkownikom produkty z nagrodą, skorzystaj z licencjonowanych testerów, którzy domyślnie otrzymują reklamy testowe zamiast prawdziwych. Aby dowiedzieć się, jak skonfigurować konta dla tych testerów, przeczytaj artykuł Testowanie aplikacji korzystającej z płatności w Google Play.
Inną metodą testowania jest użycie android.test.rewardidentyfikatora produktu. Ten konkretny produkt ma zarezerwowaną nazwę w Płatnościach w Google Play, więc nie musisz dodawać go do listy produktów w aplikacji w Konsoli Play.
Ostrzeżenie: podczas testowania nagród za obejrzenie reklamy wideo w aplikacji nie używaj prawdziwych produktów. W przeciwnym razie Twoje konto może zostać oznaczone jako spam lub konto służące do oszustw.
Po zakończeniu testowania zastąp android.test.reward identyfikatorami produktów, które faktycznie są produktami z nagrodą, zanim wdrożysz aplikację w wersji produkcyjnej dla użytkowników.
Diagram przepływu pracy w przypadku nagrody za obejrzenie reklamy wideo
Ten diagram sekwencji pokazuje, jak użytkownik, Twoja aplikacja i Biblioteka płatności w Google Play współpracują ze sobą, aby wyświetlić reklamę wideo i przyznać użytkownikowi dostęp do nagrody za obejrzenie reklamy wideo: