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. Oferując produkty z nagrodą, umożliwiasz użytkownikom uzyskiwanie nagród i korzyści w aplikacji bez konieczności dokonywania bezpośrednich zakupów.
Z tego dokumentu dowiesz się, jak wdrożyć funkcje związane z produktami z nagrodą. Proces ten ilustruje sekcja Diagram przepływu pracy na tej stronie.
Określanie produktów z nagrodą w aplikacji
Produkty z nagrodą mają SkuType w wysokości INAPP. Aby użytkownicy mogli obejrzeć wiele reklam i otrzymać wiele nagród, produkty muszą być wykorzystywane.
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 odpowiednich dla określonego 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 skierowane do dzieci, a które są kierowane do użytkowników, którzy nie osiągnęli obowiązującego w ich kraju wieku świadomego wyrażenia zgody. W Centrum pomocy AdMob znajdziesz informacje o tym, kiedy należy oznaczać żądania reklamy jako podlegające traktowaniu z ograniczeniami dotyczącymi kierowania do dzieci, a kiedy jako podlegające traktowaniu z ograniczeniami dotyczącymi użytkowników, którzy nie osiągnęli wieku 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 też do użytkowników, którzy nie osiągnęli wieku świadomego wyrażenia zgody. Jeśli żądania reklamy mają podlegać tym ograniczeniom, wywołaj metody setChildDirected() i setUnderAgeOfConsent(), przekazując do każdej z nich odpowiednie wartości.
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();
Wczytywanie reklam wideo
Zanim wyświetlisz użytkownikowi opcję obejrzenia reklamy wideo w celu otrzymania nagrody za obejrzenie reklamy wideo, musisz załadować film. 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.
Słuchacz RewardResponseListener otrzymuje 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 zachować 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 naraz.
- 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 się on wyświetlać. W takim przypadku aplikacja rzadko marnuje przepustowość, ale użytkownik może musieć poczekać kilka chwil, zanim przycisk umożliwiający obejrzenie 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 jest odtwarzana, 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ą rozpoczyna się przez wywołanie funkcji launchBillingFlow(), tak jak w przypadku wszystkich innych typów produktów w aplikacji. Nawet jeśli 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 produktów z nagrodą
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. Informacje o tym, jak skonfigurować konta dla tych testerów, znajdziesz w artykule 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 systemie płatności w Google Play, więc nie musisz dodawać go do listy produktów w aplikacji w Konsoli Play.
Ostrzeżenie: podczas testowania produktów z nagrodą w aplikacji nie używaj rzeczywistych produktów. W przeciwnym razie Twoje konto może zostać oznaczone jako spam lub konto służące do oszustw.
Po zakończeniu testowania pamiętaj, aby przed wdrożeniem aplikacji w wersji produkcyjnej dla użytkowników zastąpić android.test.reward identyfikatorami produktów, za które przyznawane są nagrody.
Diagram przepływu pracy z nagrodą za obejrzenie reklamy wideo
Poniższy 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: