如何在 Android 中集成 Admob 激励广告?

How to integrate Admob Rewarded Ads in Android?

我正在为 admob rewarded ads 集成而苦苦挣扎。我尝试了 google 教程,但无法实现我想要的。

请向我推荐任何好的 tutorial(最好是视频教程)以在 android 中集成 admob rewarded 广告。

    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);

}
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) {

}
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();
    }

}

激励广告是一种流行的广告格式,让用户有机会观看视频或参与可播放的广告以换取应用内的奖励。

导入 Firebase 广告 SDK

要在我们的应用中展示广告,我们必须首先在我们的应用中实施 Admob SDK。

转到 Gradle Scripts -> build.gradle (Module: app) 部分并导入下面的依赖项,然后单击顶部显示的“立即同步”:

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.");
}

更多Info/Source代码 https://github.com/Shiv-Shambhu/Admob-Rewarded-Ads-Android

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