Menu

Rewarded Video Ad

1 Implementation of abstract methods for rewarded videos and callbacks for advertising events

1.1 Abstract methods that require additional implementation for rewarded videos

1.2 Advertising event callback for rewarded videos

Use the CustomRewardedVideoEventListener member variable of CustomRewardVideoAdapter to implement callbacks for advertising events

Callback methodParameter descriptionDescription
onRewardedVideoAdPlayStart-Execute a callback to the developer when the ad playback starts
onRewardedVideoAdPlayEnd-Execute a callback to the developer when the ad is played
onRewardedVideoAdPlayFailedString errorCode: Error code information String errorMsg: Detailed error messageExecute a callback to the developer when the ad playback fails
onRewardedVideoAdClosed-Execute a callback to the developer when the advertising page is closed
onRewardedVideoAdPlayClicked-Execute a callback to the developer when the ad is clicked
onReward-Execute callbacks to developers when issuing incentives to users

< strong>Note: When using the member variable CustomRewardedVideoEventListener, you need to perform null processing because the Listener object may be recycled inside the aggregation SDK

1.3 Sample code

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;
    }
}


Last modified: 2025-05-30Powered by