激励广告

激励广告

此章节将演示如何请求在React Native环境下请求与展示激励广告

激励广告是用户通过观看短视频,获取应用内奖励(游戏的复活,任务奖励,游戏金币)等,具体场景由开发者定义。

激励广告请求

调用ZJAndroid.loadRewardedAd(posId: string, userId: string, callback: AdCallback, isPreload: boolean = false, extra: string = '', isVolumeOn: boolean = true)方法请求激励广告。

请求参数说明

param类型说明
posIdstring广告位ID
userIdstring唯一用户ID,用于排查问题(必传)
callbackAdCallback广告回调
isPreloadboolean是否为预加载,默认false
预加载时需要主动展示,非预加载时会自动展示
extrastring透传信息
isVolumeOnboolean是否开启声音,默认true

AdCallback 事件说明

Event参数说明
ZJEvent.LOAD_ERRORerrCode:number, errMsg:string广告加载失败
errCode:错误码,非错误事件为0
errMsg:错误信息,非错误事件为空字符串
ZJEvent.SHOW_ERRORerrCode:number, errMsg:string广告展示失败
errCode:错误码,非错误事件为0
errMsg:错误信息,非错误事件为空字符串
ZJEvent.SHOW/广告展示成功
ZJEvent.CLICK/广告点击
ZJEvent.REWARD_VERIFY/广告发奖
ZJEvent.CLOSE/广告关闭

激励广告展示

提示

激励广告为耗时操作,建议在增加时增加一个加载提示对话框

MyApp/pages/RewardedScreen.tsx
/**
 * 加载并展示激励广告
 */
function loadRewardedAd() {
    setIsLoading(true);
    // 加载并展示时,不会回调加载成功
    ZJAndroid.loadRewardedAd('J9378481911', uid, (event, errCode, errMsg) => {
        let log = '';
        switch (event) {
            case ZJEvent.LOAD_ERROR:
                setIsLoading(false);
                log = `激励广告加载失败 [${errCode}|${errMsg}]`;
                break;
            case ZJEvent.SHOW_ERROR:
                log = `激励广告展示失败 [${errCode}|${errMsg}]`;
                break;
            case ZJEvent.SHOW:
                setIsLoading(false);
                log = '激励广告展示成功';
                break;
            case ZJEvent.CLICK:
                log = '激励广告点击';
                break;
            case ZJEvent.REWARD_VERIFY:
                log = '激励广告发奖';
                break;
            case ZJEvent.CLOSE:
                log = '激励广告关闭';
                break;
            default:
                log = `未知事件:${event}`;
                break;
        }
        console.log(log);
        ToastAndroid.show(log, ToastAndroid.SHORT);
    })
}

激励广告预加载

激励广告支持预加载,开发者可以先请求好广告,再在合适的时机调用展示方法,请求时需要配置isPreloadtrue,并在准备展示前调用ZJAndroid.isRewardedAdValid()方法判断广告是否有效。 若缓存的广告已失效,需要重新请求广告。

激励广告预加载示例

MyApp/pages/RewardedScreen.tsx
/**
 * 预加载激励广告
 */
function preloadRewardedAd() {
    ZJAndroid.loadRewardedAd('J9378481911', uid, (event, errCode, errMsg) => {
        let log = '';
        switch (event) {
            case ZJEvent.LOAD_ERROR:
                log = `激励广告加载失败 [${errCode}|${errMsg}]`;
                isRewardedAdValid(false);
                break;
            case ZJEvent.LOAD:
                log = `激励广告加载成功`;
                // 加载成功后,可以在合适的时机主动展示
                isRewardedAdValid(true);
                break;
        }
        console.log(log);
        ToastAndroid.show(log, ToastAndroid.SHORT);
    }, true)
}

/**
 * 展示预加载的激励广告
 */
function showRewardedAd() {
    if (ZJAndroid.isRewardedAdValid()) {
        let log = '';
        ZJAndroid.showRewardedAd((event, errCode, errMsg) => {
            switch (event) {
                case ZJEvent.SHOW_ERROR:
                    log = `激励广告展示失败 [${errCode}|${errMsg}]`;
                    break;
                case ZJEvent.SHOW:
                    log = '激励广告展示成功';
                    break;
                case ZJEvent.CLICK:
                    log = '激励广告点击';
                    break;
                case ZJEvent.REWARD_VERIFY:
                    log = '激励广告发奖';
                    break;
                case ZJEvent.CLOSE:
                    log = '激励广告关闭';
                    isRewardedAdValid(false);
                    break;
                default:
                    log = `未知事件:${event}`;
                    break;
            }
            console.log(log);
            ToastAndroid.show(log, ToastAndroid.SHORT);
        });
    } else {
        let log = '预加载的激励广告已失效,需要重新请求';
        console.log(log);
        ToastAndroid.show(log, ToastAndroid.SHORT);
    }
}