如何知道用户是否观看过广告?

时间:2016-04-07 19:02:10

标签: android

所以我让用户观看视频插页式广告(我在admob中设置),以获取我的应用中的一个点。我希望用户观看完整的广告以获得重点,我该如何实现?我试过这个:

 mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                giveUserPoint();
                }
            }
        });

但是用户甚至不必使用此广告来观看我的广告。使用此代码,用户只需退出广告,即可调用onAdClosed。如何知道用户是否完全看过我的广告?

有没有办法隐藏X按钮,直到广告结束?

谢谢,

Ruchir

2 个答案:

答案 0 :(得分:0)

TL; DR:将@Override onRewarded与奖励视频广告一起使用

为此,您不应使用常规的视频插页式广告。相反,请使用Android的奖励视频广告:

https://developers.google.com/admob/android/rewarded-video

从文档中

  

要获得有关奖励视频生命周期事件的通知,您必须实施   RewardedVideoAdListener。奖励广告监听器是使用   setRewardedVideoAdListener()方法。此监听器是自动的   通知您正在调解的所有网络的事件。对于   例如,您会收到通知,告知用户观看某个用户会获得奖励   通过RewardedVideoAdListener的onRewarded()方法播放视频。

因此,只需几个步骤即可实现所需的功能。让我分解一下。

第一步:创建奖励广告实例:

 // Use an activity context to get the rewarded video instance.
        mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
        mRewardedVideoAd.setRewardedVideoAdListener(this);

第二步:加载奖励广告:

private void loadRewardedVideoAd() {
    mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917",
            new AdRequest.Builder().build());
}

第三步:使用回调方法奖励用户:

@Override
public void onRewarded(RewardItem reward) {
    Toast.makeText(this, "onRewarded! currency: " + reward.getType() + "  amount: " +
            reward.getAmount(), Toast.LENGTH_SHORT).show();
    // Reward the user.
}

在您的问题中,您指出用户可以简单地退出广告以利用奖励。您可以使用其他回调方法来跟踪/阻止这种情况,这些方法可以准确告诉您用户如何与您的广告互动:

@Override
public void onRewarded(RewardItem reward) {
    Toast.makeText(this, "onRewarded! currency: " + 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();
}

@Override
public void onRewardedVideoAdOpened() {
    Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show();
}

@Override
public void onRewardedVideoStarted() {
    Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show();
}

@Override
public void onRewardedVideoCompleted() {
    Toast.makeText(this, "onRewardedVideoCompleted", Toast.LENGTH_SHORT).show();
}

第四步:现在您已经完全准备好广告,只需显示它

if (mRewardedVideoAd.isLoaded()) {
    mRewardedVideoAd.show();
}

答案 1 :(得分:0)

您可以使用setImmersiveMode隐藏X按钮,但是4秒钟后,也会出现“跳过此视频”按钮,这将阻止观看整个视频。但我猜这是基于冥想。并非所有视频都具有此选项。

https://developers.google.com/android/reference/com/google/android/gms/ads/reward/RewardedVideoAd#setImmersiveMode(boolean)