Jedną z metod odblokowywania produktów i korzyści w aplikacji jest tworzenie produktów z nagrodą, czyli elementów, które użytkownicy otrzymują po obejrzeniu reklamy wideo. Dzięki udostępnianiu produktów z nagrodą użytkownicy mogą uzyskiwać nagrody i korzyści w aplikacji bez konieczności dokonywania bezpośrednich zakupów.
Z tego dokumentu dowiesz się, jak zaimplementować funkcje dotyczące produktów z nagrodą. Na stronie w sekcji diagram przepływu pracy znajdziesz ilustrację tego procesu.
Identyfikowanie produktów z nagrodą w aplikacji
Nagrody za obejrzenie reklamy wideo mają SkuType
INAPP
.
Aby użytkownicy mogli obejrzeć więcej niż 1 reklamę i otrzymać więcej nagród, produkty muszą zostać wykorzystane.
Zanim zaczniesz oferować użytkownikom produkt z nagrodą, musisz uzyskać dla niego licencję SkuDetails
. Aby to zrobić, wywołaj funkcję querySkuDetailsAsync()
, podając typ produktu SkuType.INAPP
.
Deklarowanie reklam dostosowanych do wieku
Aby ułatwić Ci przestrzeganie zobowiązań prawnych związanych z dziećmi i niepełnoletnimi użytkownikami, w tym ustawy o ochronie prywatności dzieci w internecie (COPPA) i Ogólnego rozporządzenia o ochronie danych (RODO), Twoja aplikacja powinna określać, które reklamy powinny być traktowane jako kierowane do dzieci w Stanach Zjednoczonych, a które do użytkowników, którzy nie osiągnęli wieku wymaganego do wyrażenia zgody w ich kraju. W Centrum pomocy AdMob znajdziesz informacje o tym, kiedy należy oznaczać żądania reklamy jako dotyczące treści skierowanych do dzieci, a kiedy jako dotyczące treści dla użytkowników poniżej wieku świadomego wyrażenia zgody, a także o efektach takiego działania.
Podczas tworzenia klienta płatności 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 samodzielnego wyrażania zgody. Jeśli żądania reklamy mają być ograniczone tymi ograniczeniami, 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();
Wczytywanie reklam wideo
Zanim wyświetlisz użytkownikowi opcję obejrzenia reklamy wideo, aby uzyskać nagrodę, musisz wczytać film. Aby to zrobić, utwórz obiekt RewardLoadParams
i powiązać go z obiektem SkuDetails
, który reprezentuje produkt z nagrodą. Następnie wywołaj metodę loadRewardedSku()
klienta rozliczeniowego, przekazując obiekt RewardLoadParams
i obiekt RewardResponseListener
.
Gdy film zostanie załadowany, zostanie powiadomiony odbiorca RewardResponseListener
. Słuchacz zostanie też powiadomiony, 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:
- Ładuj maksymalnie 3 kody SKU produktów z nagrodami naraz.
- Spróbuj wczytać filmy, gdy użytkownik otworzy aplikację. Dzięki temu sprawdzisz, czy filmy są nadal wczytane i dostępne.
Decydując, kiedy wczytywać filmy, wybierz balans między wykorzystaniem przepustowości a szybkością działania aplikacji, który najlepiej odpowiada Twoim potrzebom:
- Filmy należy załadować najpóźniej po wywołaniu funkcji
getSkuDetails()
powiązanej z reklamą wideo z nagrodą. Aplikacja nadal będzie bardzo responsywna, ale możesz marnować dane sieci na wczytywanie filmu, którego użytkownik nigdy nie obejrzy. - Film należy załadować najpóźniej, gdy użytkownik przejdzie na stronę, na której ma się on wyświetlić. W takim przypadku aplikacja rzadko marnuje przepustowość, ale użytkownik może musieć chwilę poczekać, zanim przycisk obejrzenia filmu stanie się klikalny.
- Filmy należy załadować najpóźniej po wywołaniu funkcji
Ten fragment kodu demonstruje proces wczytywania reklamy wideo, która jest odtwarzana, zanim użytkownik otrzyma produkt z nagrodą:
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ępnianie użytkownikom zakupów z nagrodą
Jeśli Biblioteka płatności w Google Play wczyta film powiązany z produktem z nagrodą, czyli jeśli RewardResponseListener
otrzyma responseCode
z BillingResponse.OK
, możesz uruchomić proces płatności.
Reklamy w produktach z nagrodą są wyświetlane po wywołaniu metody launchBillingFlow()
, podobnie jak w przypadku wszystkich innych typów produktów w aplikacji. Chociaż użytkownik nie dokonuje bezpośredniego zakupu, aby otrzymać produkt z nagrodą, musisz włączyć proces płatności, aby mógł uzyskać dostęp do produktu i z niego korzystać.
Wykorzystanie zakupu
Aby powiadomić klienta rozliczeniowego, że użytkownik otrzymał i wydał produkt z nagrodą, zarządzaj zakupem w metodzie onPurchasesUpdated()
klienta rozliczeniowego. Pamiętaj, że zakupy z nagrodą muszą być wykorzystane.
Testowanie nagród za obejrzenie reklamy wideo
Aby przetestować, jak Twoja aplikacja wczytuje reklamy wideo i udostępnia użytkownikom produkty z nagrodą, skorzystaj z usług licencjonowanych testerów, którzy domyślnie zamiast prawdziwych reklam widzą reklamy testowe. Aby dowiedzieć się, jak skonfigurować konta dla tych testerów, przeczytaj artykuł Użytkownik testuje aplikację Google Play Billing.
Inną metodą testowania jest użycie identyfikatora produktu android.test.reward
. Ten produkt jest nazwą zarezerwowaną w płatnościach w Google Play, więc nie musisz go dodawać do listy produktów w aplikacji w Konsoli Play.
Uwaga: podczas testowania produktów z nagrodami w aplikacji nie używaj rzeczywistych produktów. W przeciwnym razie Twoje konto może zostać oznaczone jako konto spamowe lub fałszywe.
Po zakończeniu testów upewnij się, że przed wdrożeniem aplikacji w wersji produkcyjnej dla użytkowników końcowych zastąpisz identyfikatory android.test.reward
identyfikatorami produktów z reklamami z nagrodą.
Diagram procesu tworzenia produktów z nagrodą
Ten schemat sekwencji pokazuje, jak użytkownik, aplikacja i Biblioteka płatności w Google Play współpracują ze sobą, aby wyświetlić reklamę wideo i udostępnić użytkownikowi dostęp do produktu z nagrodą: