Menu

Rewarded Video

  1. Implementation of Rewarded Video Abstract Methods and Ad Event Callbacks

1.1 Additional Abstract Methods Required for Rewarded Video

Abstract Method Parameter Description Return Value Purpose Required
isAdReady - boolean Used to determine whether the custom ad platform's Rewarded Video Ad is in a ready state. Yes
show Activity activity: The Activity context void Implement the logic for displaying the custom ad platform's Rewarded Video. Yes

Note: The parent class of the Adapter provides externally set mUserId and mCustomData member variables (i.e., the values of ATAdConst.KEY.USER_ID and ATAdConst.KEY.USER_CUSTOM_DATA set through the ATRewardVideoAd#setLocalExtra() method), which can be provided to the custom ad platform to implement the Server-to-Server reward method.

1.2 Rewarded Video Ad Event Callbacks

Use the CustomRewardedVideoEventListener member variable of CustomRewardVideoAdapter to implement ad event callbacks.

Callback Method Parameter Description Description
onRewardedVideoAdPlayStart - Callback to the developer when ad playback starts.
onRewardedVideoAdPlayEnd - Callback to the developer when ad playback ends.
onRewardedVideoAdPlayFailed String errorCode: Error code info String errorMsg: Detailed error info Callback to the developer when ad playback fails.
onRewardedVideoAdClosed - Callback to the developer when the ad page is closed.
onRewardedVideoAdPlayClicked - Callback to the developer when the ad is clicked.
onReward - Callback to the developer when a reward is distributed to the user.

Note: When using the member variable CustomRewardedVideoEventListener, null-check handling is required, because the Mediation SDK may internally reclaim this Listener object.

1.3 Sample Code

java Copy
public class FacebookRewardVideoAdapter extends CustomRewardVideoAdapter {

    RewardedVideoAd rewardedVideoAd;
    String mUnitid;
    String mPayload;

    /***
     * load ad
     */
    private void startLoad(final Context context) {

        final RewardedVideoAdListener rewardedVideoAdListener = new RewardedVideoAdListener() {
            @Override
            public void onError(Ad ad, AdError error) {
                if (mLoadListener != null) {
                    mLoadListener.onAdLoadError(error.getErrorCode() + "", "" + error.getErrorMessage());
                }
            }

            @Override
            public void onAdLoaded(Ad ad) {
                if (mLoadListener != null) {
                    mLoadListener.onAdCacheLoaded();
                }
            }

            @Override
            public void onAdClicked(Ad ad) {
                if (mImpressionListener != null) {
                    mImpressionListener.onRewardedVideoAdPlayClicked();
                }
            }

            @Override
            public void onLoggingImpression(Ad ad) {
                if (mImpressionListener != null) {
                    mImpressionListener.onRewardedVideoAdPlayStart();
                }
            }

            @Override
            public void onRewardedVideoCompleted() {
                if (mImpressionListener != null) {
                    mImpressionListener.onRewardedVideoAdPlayEnd();
                }

                if (mImpressionListener != null) {
                    mImpressionListener.onReward();
                }
            }

            @Override
            public void onRewardedVideoClosed() {
                if (mImpressionListener != null) {
                    mImpressionListener.onRewardedVideoAdClosed();
                }

            }
        };

        rewardedVideoAd = new RewardedVideoAd(context.getApplicationContext(), mUnitid);
        RewardedVideoAd.RewardedVideoAdLoadConfigBuilder adConfig = rewardedVideoAd
                .buildLoadAdConfig()
                .withAdListener(rewardedVideoAdListener)
                .withFailOnCacheFailureEnabled(true)
                .withRVChainEnabled(true);

        adConfig.withRewardData(new RewardData(mUserId, mUserData));

        if (!TextUtils.isEmpty(mPayload)) {
            adConfig.withBid(mPayload);
        }
        rewardedVideoAd.loadAd(adConfig.build());
    }

    @Override
    public void destory() {
        try {
            if (rewardedVideoAd != null) {
                rewardedVideoAd.setAdListener(null);
                rewardedVideoAd.destroy();
            }
        } catch (Exception e) {
        }
    }


    @Override
    public void loadCustomNetworkAd(Context context, Map<String, Object> serverExtras, Map<String, Object> localExtras) {

        if (serverExtras.containsKey("unit_id")) {
            mUnitid = (String) serverExtras.get("unit_id");
        } else {
            if (mLoadListener != null) {
                mLoadListener.onAdLoadError("", "facebook sdkkey is empty.");
        }
            return;
        }
        FacebookInitManager.getInstance().initSDK(context.getApplicationContext(), serverExtras);

        if (serverExtras.containsKey("payload")) {
            mPayload = serverExtras.get("payload").toString();
        }

        startLoad(context);
    }

    @Override
    public boolean isAdReady() {
        if (rewardedVideoAd == null || !rewardedVideoAd.isAdLoaded()) {
            return false;
        }
        if (rewardedVideoAd.isAdInvalidated()) {
            return false;
        }
        return true;
    }

    @Override
    public boolean setUserDataConsent(Context context, boolean isConsent, boolean isEUTraffic) {
        return false;
    }

    @Override
    public void show(Activity activity) {
        if (rewardedVideoAd != null) {
            rewardedVideoAd.show();
        }
    }

    @Override
    public String getNetworkSDKVersion() {
        return FacebookInitManager.getInstance().getNetworkVersion();
    }

    @Override
    public String getNetworkName() {
        return FacebookInitManager.getInstance().getNetworkName();
    }

    @Override
    public String getNetworkPlacementId() {
        return mUnitid;
    }
}
Previous
Native Ad
Next
Splash Ad
Last modified: 2026-07-08Powered by