菜单

激励视频

1激励视频抽象方法实现以及广告事件回调

1.1 激励视频需要额外实现的抽象方法

抽象方法参数说明返回值作用是否必须实现
isAdReady-boolean用于判断自定义广告平台的激励视频广告是否已经是准备完成的状态
showActivity activity:Activity的上下文void实现展示自定义广告平台激励视频的逻辑

注意:其中Adapter的父类提供了外部设置的mUserId和mCustomData的成员变量(即通过ATRewardVideoAd#setLocalExtra()方法设置的ATAdConst.KEY.USER_ID、ATAdConst.KEY.USER_CUSTOM_DATA的值),可以提供给自定义的广告平台实现Server to servcer的激励方式

1.2 激励视频的广告事件回调

使用CustomRewardVideoAdapter的CustomRewardedVideoEventListener成员变量实现广告事件的回调

回调方法参数说明说明
onRewardedVideoAdPlayStart-广告播放开始时执行回调给开发者
onRewardedVideoAdPlayEnd-广告播放结束时执行回调给开发者
onRewardedVideoAdPlayFailedString errorCode: 错误码信息 String errorMsg: 详细错误信息广告播放失败时执行回调给开发者
onRewardedVideoAdClosed-广告页面关闭时执行回调给开发者
onRewardedVideoAdPlayClicked-广告被点击时执行回调给开发者
onReward-给用户下发激励时执行回调给开发者

注意:使用成员变量CustomRewardedVideoEventListener时候需要做判空处理,因为聚合SDK内部有可能会回收该Listener对象

1.3 示例代码

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


最近修改: 2025-05-30Powered by