我已经为使用PRO特性实现了RewardedVideoAd。
当我在整个应用程序中使用RewardedVideoAd 1时(在一个屏幕中),那么它就完美地工作了。但是,当我多次使用(在多个屏幕中)时,RewardedVideoAd回调监听器是两个屏幕之间的不匹配。
让我解释一下整个场景
RewardedVideoAd。在成功完成这段视频后,我得到了奖励。所以问题是,上一次我在屏幕上看了一个视频-C。因此,所有回调都将转到屏幕-C,而不是屏幕-A。
我还在所有屏幕上实现了以下代码。
@Override
public void onResume() {
mRewardedVideoAd.resume(this);
super.onResume();
}
@Override
public void onPause() {
mRewardedVideoAd.pause(this);
super.onPause();
}
@Override
public void onDestroy() {
mRewardedVideoAd.destroy(this);
super.onDestroy();
}发布于 2019-10-12 04:12:40
我也面临着同样的问题。在我的例子中,当我要去活动A到B时,我的活动A在后台,活动B在前台,现在当我回到活动A时,我没有得到RewardedVideoAds的回调。
我以简单的方式解决了这个问题,当我回到Activity时,我在OnResume方法中设置了侦听器。
@Override
public void onResume() {
super.onResume();
Log.i(TAG, "onResume Call.");
if (rewardedVideoAd != null) {
rewardedVideoAd.setRewardedVideoAdListener(this);
rewardedVideoAd.resume(activity);
}
}注意,对于这个解决方案,您必须从活动B中删除这两行。
@Override
public void onDestroy() {
super.onDestroy();
Log.e(TAG, "onDestroy: ");
rewardedVideoAd.destroy(activity);
rewardedVideoAd.setRewardedVideoAdListener(null);
}发布于 2019-10-10 06:42:12
我认为它与这个问题有关,奖励视频广告永不消亡。如果它的问题相同,则可以作为解决此问题的解决方案:
在调用RewardedVideoAd之前,您应该显式地取消对侦听器的设置,因为破坏不会为您做到这一点。
发布于 2019-10-11 09:53:43
我已经制作了一个通用模块来展示RewardedVideoAd.you可以尝试这样做。我想这能解决你的问题。
把你的项目放在班级下面。
AdRewardedHandler.java
public class AdRewardedHandler {
private static final String TAG = "AdRewardedHandler";
private Context context;
private static AdRewardedHandler adRewardedHandler;
private RewardedVideoAd rewardedVideoAd;
private RewardedAdListener rewardedAdListener;
private boolean isFailedToLoad = false;
public static AdRewardedHandler getInstance() {
if (adRewardedHandler == null) {
adRewardedHandler = new AdRewardedHandler();
}
return adRewardedHandler;
}
public void initializeRewardedHandler(Context context) {
this.context = context;
rewardedVideoAd = MobileAds.getRewardedVideoAdInstance(context);
loadRewardedVideoAd();
}
public void setAdHandlerListener(RewardedAdListener rewardedAdListener1) {
this.rewardedAdListener = rewardedAdListener1;
}
public boolean isAdLoaded() {
if (rewardedVideoAd != null) {
return rewardedVideoAd.isLoaded();
} else {
return false;
}
}
public void loadRewardedVideoAd() {
rewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917",new AdRequest.Builder().build());
rewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener() {
@Override
public void onRewardedVideoAdLoaded() {
Log.i(TAG, "onRewardedVideoAdLoaded: ");
if (rewardedAdListener != null) {
rewardedAdListener.onRewardedVideoAdLoaded();
}
}
@Override
public void onRewardedVideoAdOpened() {
Log.i(TAG, "onRewardedVideoAdOpened: ");
if (rewardedAdListener != null) {
rewardedAdListener.onRewardedVideoAdOpened();
}
}
@Override
public void onRewardedVideoStarted() {
Log.i(TAG, "onRewardedVideoStarted: ");
if (rewardedAdListener != null) {
rewardedAdListener.onRewardedVideoStarted();
}
}
@Override
public void onRewardedVideoAdClosed() {
Log.i(TAG, "onRewardedVideoAdClosed: ");
if (rewardedAdListener != null) {
rewardedAdListener.onRewardedVideoAdClosed();
if (!isAdLoaded()) {
loadRewardedVideoAd();
}
}
}
@Override
public void onRewarded(RewardItem var1) {
Log.i(TAG, "onRewarded: " + var1);
if (rewardedAdListener != null) {
rewardedAdListener.onRewarded(var1);
}
}
@Override
public void onRewardedVideoAdLeftApplication() {
Log.i(TAG, "onRewardedVideoAdLeftApplication: ");
if (rewardedAdListener != null) {
rewardedAdListener.onRewardedVideoAdLeftApplication();
}
}
@Override
public void onRewardedVideoAdFailedToLoad(int var1) {
Log.i(TAG, "onRewardedVideoAdFailedToLoad: " + var1);
if (!isFailedToLoad) {
isFailedToLoad = true;
if (!isAdLoaded()) {
loadRewardedVideoAd();
}
}
if (rewardedAdListener != null) {
rewardedAdListener.onRewardedVideoAdFailedToLoad(var1);
}
}
@Override
public void onRewardedVideoCompleted() {
Log.i(TAG, "onRewardedVideoCompleted: ");
if (rewardedAdListener != null) {
rewardedAdListener.onRewardedVideoCompleted();
if (!isAdLoaded()) {
loadRewardedVideoAd();
}
}
}
});
}
public void showRewardedAd(RewardedAdListener rewardedAdListener1) {
setAdHandlerListener(rewardedAdListener1);
Log.i(TAG, "showRewardedAd: ");
try {
if (rewardedVideoAd != null && rewardedVideoAd.isLoaded()) {
rewardedVideoAd.show();
}
} catch (Throwable th) {
th.printStackTrace();
}
}
public void onResume() {
Log.i(TAG, "onResume: Resume Call :");
if (rewardedVideoAd != null) {
rewardedVideoAd.resume(context);
}
}
public void onPause() {
Log.i(TAG, "onPause: Pause Call : ");
if (rewardedVideoAd != null) {
rewardedVideoAd.pause(context);
}
}
public void onDestroy() {
Log.i(TAG, "onDestroy: Destroy Call :");
}
public interface RewardedAdListener {
void onRewardedVideoAdLoaded();
void onRewardedVideoAdOpened();
void onRewardedVideoStarted();
void onRewardedVideoAdClosed();
void onRewarded(RewardItem var1);
void onRewardedVideoAdLeftApplication();
void onRewardedVideoAdFailedToLoad(int var1);
void onRewardedVideoCompleted();
}
}在您的应用程序文件中放置以下行。
AdRewardedHandler.getInstance().initializeRewardedHandler(this);现在,最后如何使用
public class YourActivity extends AppCompatActivity implements AdRewardedHandler.RewardedAdListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AdRewardedHandler.getInstance().setAdHandlerListener(this);
if (!AdRewardedHandler.getInstance().isAdLoaded()) {
AdRewardedHandler.getInstance().loadRewardedVideoAd();
}
}
public void showRewardedVideoAd() {
// showRewardedAd
AdRewardedHandler.getInstance().showRewardedAd(this);
}
@Override
public void onResume() {
AdRewardedHandler.getInstance().onResume();
super.onResume();
}
@Override
public void onPause() {
AdRewardedHandler.getInstance().onPause();
super.onPause();
}
@Override
public void onRewardedVideoAdLoaded() {
Log.i(TAG, "onRewardedVideoAdLoaded: ");
}
@Override
public void onRewardedVideoAdOpened() {
Log.i(TAG, "onRewardedVideoAdOpened: ");
}
@Override
public void onRewardedVideoStarted() {
Log.i(TAG, "onRewardedVideoStarted: ");
}
@Override
public void onRewardedVideoAdClosed() {
Log.i(TAG, "onRewardedVideoAdClosed: ");
}
@Override
public void onRewardedVideoAdLeftApplication() {
Log.i(TAG, "onRewardedVideoAdLeftApplication: ");
}
@Override
public void onRewardedVideoAdFailedToLoad(int var1) {
Log.i(TAG, "onRewardedVideoAdFailedToLoad: " + var1);
}
@Override
public void onRewardedVideoCompleted() {
Log.i(TAG, "onRewardedVideoCompleted: ");
}
}https://stackoverflow.com/questions/58201891
复制相似问题