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

Posted

技术标签:

【中文标题】如何在奖励广告中添加 onAdClick 回调? - AdMob - 安卓【英文标题】:How to add onAdClick callback in rewarded-ads? - AdMob - Android 【发布时间】:2020-05-25 06:47:02 【问题描述】:

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

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

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

谁能帮我实现这个功能。有没有替代的方法?请帮助我摆脱这种情况。如果无法保护我的 admob 帐户免受恶意用户的侵害?

【问题讨论】:

Ankush 我已经更新了我的答案再次检查一次... 【参考方案1】:

方法一

有可用于激励广告的旧 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();
                
            
        );


    

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

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

为什么 Google 推荐新的 RewardedAPI 而不是旧版?

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

    它允许您缓存多个广告。

    旧的激励 API 仅允许您一次加载一个广告,并且在第一个广告完成之前无法加载第二个广告。

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

    对于使用来自 AdMob 用户界面的奖励值的应用,这项改进使您可以在用户观看广告之前向他们展示他们的奖励。初始化调解伙伴。如果您使用奖励中介,则新的奖励 API 支持在首次广告加载之前初始化中介适配器。传统的奖励 API 不初始化适配器,并且中介适配器更有可能在会话的第一个请求时超时。从旧的奖励 API 迁移?确保将您的中介适配器更新到最新版本,因为适配器也必须迁移。

方法二:

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

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

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

【讨论】:

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

以上是关于如何在奖励广告中添加 onAdClick 回调? - AdMob - 安卓的主要内容,如果未能解决你的问题,请参考以下文章

奖励产品是不是将应用标记为“包含广告”? [关闭]

应用购买中的“移除广告”应该删除奖励广告以及横幅广告和插页式广告吗?

如何在 adMobPro 中显示加载的奖励视频?

Unity + Admob奖励广告:活动没有解雇

在React Native中多次显示AdMob奖励广告。

奖励广告在 Android 中无法正常运行