如何在奖励广告中添加 onAdClick 回调? - AdMob - Android

How to add onAdClick callback in rewarded-ads? - AdMob - Android

我正在尝试在我的应用程序中植入广告。我浏览了官方文档并在我的应用程序中实现了插页式广告。它工作正常。 As Described Here

据我所知,如果有恶意用户一次又一次点击我的广告,admob 会阻止我的 admob 帐户。因此,为了保护这一点,我设置了 3 次点击的阈值,即如果用户尝试在一天内点击我的广告超过 3 次,我将在接下来的 48 小时内不展示广告。因此,为了使用插页式广告实现此功能,我在插页式广告中使用了 onAdClick() 回调。 As shown here

但是,当我尝试对奖励广告实施相同的操作时,我发现它们没有这样的回调可以帮助我检测奖励广告的点击。 See here.

谁能帮我实现这个功能。有没有其他方法?请帮助我摆脱这种情况。如果不可能,我可以做些什么来保护我的 admob 帐户免受恶意用户的侵害?

方法一

有旧版 API 可用于激励广告点击此处了解更多信息...Rewarded Video Ads (Legacy API)

那么它是如何工作的呢?检查下面的代码

public class MainActivity extends AppCompatActivity {


    private RewardedVideoAd mRewardedVideoAd;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mRewardedVideoAd= MobileAds.getRewardedVideoAdInstance(this);

        mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917",new AdRequest.Builder().build());     // You need to pass your rewared video ad Id here...

        mRewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener() {
            @Override
            public void onRewardedVideoAdLoaded() {

            }

            @Override
            public void onRewardedVideoAdOpened() {

            }

            @Override
            public void onRewardedVideoStarted() {

            }

            @Override
            public void onRewardedVideoAdClosed() {

            }

            @Override
            public void onRewarded(RewardItem rewardItem) {
                //Reward your user here....
                Toast.makeText(MainActivity.this, "Congrats you got reward", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdLeftApplication() {
                //User clicked on ad here write your caching code here....
                Toast.makeText(MainActivity.this, "Clicked on Ad", Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onRewardedVideoAdFailedToLoad(int i) {

            }

            @Override
            public void onRewardedVideoCompleted() {

            }
        });



        findViewById(R.id.my_button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mRewardedVideoAd.isLoaded()) {
                    mRewardedVideoAd.show();
                } else {
                    Toast.makeText(MainActivity.this, "Please Wait..", Toast.LENGTH_SHORT).show();
                }
            }
        });


    }
}

优点 使用此方法:它完成您的工作,您可以在点击广告时获得回调

Cons Google 推荐新的 RewardedAPI ..(尽管旧版 API 仍然可以正常工作....)

为什么 Google 推荐新的奖励API 而不是旧版?

新的奖励 API 是对传统 API 的改进,因为

  1. 它允许您缓存多个广告。

  2. 传统奖励 API 一次只能加载一个广告,在第一个广告完成之前不能加载第二个广告。

  3. 新的奖励 API 让您可以同时缓存多个广告。 在广告加载时访问奖励值。遗留实施 仅在需要授予用户时才提供对奖励的访问权限 奖励。

  4. 对于使用来自 AdMob UI 的奖励值的应用程序,此改进使您能够在用户观看广告之前向他们展示他们的奖励。初始化中介伙伴。如果您使用奖励中介,新奖励 API 支持在第一次广告加载之前初始化中介适配器。遗产奖励 API 不会初始化适配器,并且中介适配器更有可能在会话的第一个请求时超时。从遗留奖励中迁移 API?确保将中介适配器更新到最新版本,因为适配器也必须迁移。

方法二:

由于新的奖励 API 没有任何针对广告点击事件的回调,我建议您缓存用户请求广告的总次数...限制他们的次数可以请求广告

例如:24小时内他们只能请求3次

优点:如上所述 Google 出于某些原因推荐它 缺点:它不能解决您的问题...