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

如何在奖励广告中添加onAdClick回调AdMob-Android,android,admob,ads,Android,Admob,Ads,我正在尝试在我的应用程序中实现广告。我查阅了官方文档,并在我的应用程序中插入了广告。它工作得很好 我也知道,如果有恶意用户一次又一次点击我的广告,admob将阻止我的admob帐户。为了保护这一点,我设置了3次点击的阈值,即如果用户试图在一天内点击我的广告超过3次,我将在接下来的48小时内不显示广告。因此,为了在间隙式广告中实现此功能,我在间隙式广告中使用onAdClick()回调 但是,当我尝试用奖励广告实现同样的事情时,我发现他们没有这样的回调,可以帮助我检测奖励广告上的点击 有人能帮我实现

我正在尝试在我的应用程序中实现广告。我查阅了官方文档,并在我的应用程序中插入了广告。它工作得很好

我也知道,如果有恶意用户一次又一次点击我的广告,admob将阻止我的admob帐户。为了保护这一点,我设置了3次点击的阈值,即如果用户试图在一天内点击我的广告超过3次,我将在接下来的48小时内不显示广告。因此,为了在间隙式广告中实现此功能,我在间隙式广告中使用onAdClick()回调

但是,当我尝试用奖励广告实现同样的事情时,我发现他们没有这样的回调,可以帮助我检测奖励广告上的点击


有人能帮我实现这个功能吗。还有别的办法吗?请帮我从这个场景中走出来。如果无法保护我的admob帐户免受恶意用户攻击,我可以做些什么?

方法1

这里有可用于奖励广告检查的遗留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谷歌推荐新的RewardedAPI…(尽管传统API仍然可以正常工作…)

为什么谷歌推荐新的奖励而不是传统

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

  • 它允许你缓存多个广告

  • 传统的API只允许您一次加载一个广告,在第一个广告完成之前,您无法加载第二个广告

  • 新的API允许您同时缓存多个广告。 在ad加载时访问奖励值。遗留实现 仅在授予用户权限时提供对奖励的访问 奖励

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

  • 方法2:

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

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

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

    很抱歉,但是当向用户显示广告时,总是调用onRewardedOpened()。它并没有要求实际点击广告。谷歌似乎对新奖励广告中的欺诈点击负责,这也是他们没有为开发者提供任何检查点击的方式的唯一原因。所以,我只是想让谷歌追踪欺诈行为,我将只关注我的主应用程序。我只是想知道,这种方法是否存在暂停admob帐户的风险?@Ankush我找到了另一种方法。。。对于这一点,我将更新我的答案与。。。20分钟后检查首先,我也检查了文档。正如文档中所述,当用户离开活动并打开任何其他应用程序时,将调用此方法。所以,如果用户按下home按钮,或者从通知中打开应用程序等,可以调用它。这不是解决问题的确切解决方案。其次,你是对的!谷歌建议我们使用新的API。这是因为,新API几乎没有旧API没有的函数。我还使用了它的一个功能(奖励广告服务器端验证),所以不能使用旧的API。虽然我没有检查单击通知,但..我检查了单击主页按钮,它没有触发OnlieftApplicationAnkush,我已再次更新我的答案检查一次。。。