#android #admob
#Android #admob
Вопрос:
Я борюсь с admob rewarded ads
интеграцией. Я пробовал использовать учебные пособия Google, но не смог добиться того, чего хочу.
Пожалуйста, предложите мне какой-нибудь хороший tutorial
(предпочтительный видеоурок) для интеграции admob rewarded
рекламы в Android.
Комментарии:
1. вот видеоурок: youtu.be/TIiY1VIIQwg (взято отсюда: firebase.google.com/docs/admob/android/rewarded-video )
2. Следуйте этой статье — developine.com /…
Ответ №1:
public class YourActivity extends AppCompatActivity implements RewardedVideoAdListener
RewardedVideoAd mAd = MobileAds.getRewardedVideoAdInstance(this);
mAd.setRewardedVideoAdListener(this);
loadRewardedVideo();
private void loadRewardedVideo() {
mAd.loadAd(getString("YOUR_AD_UNIT_ID"),
new AdRequest.Builder()
.build());
}
Вот слушатель:
@Override
public void onRewardedVideoAdLoaded() {
Log.i(TAG, "Rewarded: onRewardedVideoAdLoaded");
try {
if (mAd.isLoaded()) {
mAd.show();
}
} catch (NullPointerException e) {
e.printStackTrace();
}
}
@Override
public void onRewardedVideoAdOpened() {
Log.i(TAG, "Rewarded: onRewardedVideoAdOpened");
}
@Override
public void onRewardedVideoStarted() {
Log.i(TAG, "Rewarded: onRewardedVideoStarted");
}
@Override
public void onRewardedVideoAdClosed() {
Log.i(TAG, "Rewarded: onRewardedVideoAdClosed");
}
@Override
public void onRewarded(RewardItem rewardItem) {
Log.i(TAG, "Rewarded: onRewarded! currency: " rewardItem.getType() " amount: "
rewardItem.getAmount());
}
@Override
public void onRewardedVideoAdLeftApplication() {
Log.i(TAG, "Rewarded: onRewardedVideoAdLeftApplication ");
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
Log.i(TAG, "Rewarded: onRewardedVideoAdFailedToLoad: " i);
}
Комментарии:
1. Это работает, но, когда открывается видеореклама с вознаграждением, она показывает исключение ниже: просочилось окно MainActivity
Ответ №2:
public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener {
private RewardedVideoAd mAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");
// Use an activity context to get the rewarded video instance.
mAd = MobileAds.getRewardedVideoAdInstance(this);
mAd.setRewardedVideoAdListener(this);
loadRewardedVideoAd();
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mAd.isLoaded()) {
mAd.show();
}
}
});
}
@Override
public void onResume() {
mAd.resume(this);
super.onResume();
}
@Override
public void onPause() {
mAd.pause(this);
super.onPause();
}
@Override
public void onDestroy() {
mAd.destroy(this);
super.onDestroy();
}
private void loadRewardedVideoAd() {
mAd.loadAd("ca-app-pub-3940256099942544/5224354917",
new AdRequest.Builder().build());
}
@Override
public void onRewardedVideoAdLoaded() {
}
@Override
public void onRewardedVideoAdOpened() {
}
@Override
public void onRewardedVideoStarted() {
}
@Override
public void onRewardedVideoAdClosed() {
}
@Override
public void onRewarded(RewardItem rewardItem) {
}
@Override
public void onRewardedVideoAdLeftApplication() {
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
}
Ответ №3:
Рекламные объявления с вознаграждением — это популярный формат рекламы, который дает пользователям возможность посмотреть видео или подключиться к воспроизводимой рекламе в обмен на вознаграждение в приложении.
Импортируйте Firebase Ads SDK
Чтобы показывать рекламу в нашем приложении, мы должны сначала внедрить Admob sdk в наше приложение, для этого.
Перейдите в раздел Gradle Scripts -> build.gradle (модуль: приложение) и импортируйте зависимости ниже, а затем нажмите «синхронизировать сейчас» вверху:
dependencies {
// adding Admob SDK
implementation 'com.google.firebase:firebase-ads:20.3.0'
}
Загрузите объект с вознаграждением
import com.google.android.gms.ads.rewarded.RewardedAd;
public class MainActivity extends Activity {
private RewardedAd mRewardedAd;
private final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
AdRequest adRequest = new AdRequest.Builder().build();
RewardedAd.load(this, "ca-app-pub-3940256099942544/5224354917",
adRequest, new RewardedAdLoadCallback() {
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
// Handle the error.
Log.d(TAG, loadAdError.getMessage());
mRewardedAd = null;
}
@Override
public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
mRewardedAd = rewardedAd;
Log.d(TAG, "Ad was loaded.");
}
});
}
}
Показать объявление
Когда вы показываете рекламу с вознаграждением, вы будете использовать объект OnUserEarnedRewardListener для обработки событий вознаграждения.
Activity activityContext = MainActivity.this;
mRewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
// Handle the reward.
Log.d(TAG, "The user earned the reward.");
int rewardAmount = rewardItem.getAmount();
String rewardType = rewardItem.getType();
}
});
} else {
Log.d(TAG, "The rewarded ad wasn't ready yet.");
}
Для получения дополнительной информации / исходного кода
https://github.com/Shiv-Shambhu/Admob-Rewarded-Ads-Android
Комментарии:
1. И как обработать событие, когда пользователь закрыл событие до того, как получил вознаграждение?
Ответ №4:
import android.util.Log
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import com.google.android.gms.ads.*
import com.google.android.gms.ads.rewarded.RewardedAd
import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback
class GoogleAdsActivity : AppCompatActivity() {
private var mRewardedAd: RewardedAd? = null
private var totalRewardAmount = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_google_ads)
val sharedPreferences = getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE)
totalRewardAmount = sharedPreferences.getInt("totalRewardAmount", 0)
findViewById<TextView>(R.id.totalRewardedAmountText).text = totalRewardAmount.toString()
loadRewardedAds()
findViewById<Button>(R.id.rewarded_adsBtn).setOnClickListener {
showRewardedAds()
}
}
}
private fun loadRewardedAds() {
val adRequest = AdRequest.Builder().build()
RewardedAd.load(
this,
getString(R.string.rewardedAdsId),
adRequest,
object : RewardedAdLoadCallback() {
override fun onAdFailedToLoad(adError: LoadAdError) {
Log.d("TAG", adError.message)
mRewardedAd = null
}
override fun onAdLoaded(rewardedAd: RewardedAd) {
Log.d("TAG", "Ad was loaded.")
mRewardedAd = rewardedAd
}
})
}
private fun showRewardedAds() {
if (mRewardedAd != null) {
mRewardedAd?.fullScreenContentCallback = object : FullScreenContentCallback() {
override fun onAdDismissedFullScreenContent() {
Log.d("TAG", "Ad was dismissed.")
// Don't forget to set the ad reference to null so you
// don't show the ad a second time.
mRewardedAd = null
loadRewardedAds()
}
override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
Log.d("TAG", "Ad failed to show.")
// Don't forget to set the ad reference to null so you
// don't show the ad a second time.
mRewardedAd = null
}
override fun onAdShowedFullScreenContent() {
Log.d("TAG", "Ad showed fullscreen content.")
// Called when ad is dismissed.
}
}
mRewardedAd?.show(this) {
val rewardAmount = it.amount
Log.d("rewardAmount", rewardAmount.toString())
totalRewardAmount = rewardAmount
val sharedPreferences =
getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE)
sharedPreferences.edit().putInt("totalRewardAmount", totalRewardAmount)
.apply()
Log.d("TAG", rewardAmount.toString())
findViewById<TextView>(R.id.totalRewardedAmountText).text =
totalRewardAmount.toString()
}
} else {
Toast.makeText(this, "Ads is not loaded", Toast.LENGTH_LONG).show()
}
}
// Todo: Rewarded Ads
Ответ №5:
Use this Id for Testing : - ca-app-pub-4824494878097656/8403117409
package com.safal.bhatia;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.reward.RewardItem;
import com.google.android.gms.ads.reward.RewardedVideoAd;
import com.google.android.gms.ads.reward.RewardedVideoAdListener;
public class Demo extends AppCompatActivity implements RewardedVideoAdListener {
private RewardedVideoAd mRewardedVideoAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo);
rewardAds();
}
private void rewardAds() {
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
mRewardedVideoAd.setRewardedVideoAdListener(this);
loadRewardedVideoAd();
}
private void loadRewardedVideoAd() {
mRewardedVideoAd.loadAd("ca-app-pub-4824494878097656/8403117409",//use this id for testing
new AdRequest.Builder().build());
}
@Override
public void onRewarded(RewardItem reward) {
Toast.makeText(this, "Download to Earn" reward.getType() " amount: "
reward.getAmount(), Toast.LENGTH_SHORT).show();
// Reward the user.
}
@Override
public void onRewardedVideoAdLeftApplication() {
Toast.makeText(this, "onRewardedVideoAdLeftApplication",
Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdClosed() {
Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdFailedToLoad(int errorCode) {
Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdLoaded() {
Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
if (mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.show();
}
}
@Override
public void onRewardedVideoAdOpened() {
Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoStarted() {
Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show();
}
}
Комментарии:
1. Используйте этот идентификатор для тестирования: — ca-app-pub-4824494878097656/8403117409