OPPO小游戏广告接入[小白上手]

版本说明

Cocos Creator – 2.4.5

相关参考链接

激励视频

playVideoAd(function callback);

加载并播放激励视频广告

参数

function callback

监听激励视频完成的回调方法

参数

boolean res

是否要发放激励视频奖励

示例代码

oppo.getApp().playVideoAd((res) => {
    if (res) {
        //给予用户激励视频奖励
    }
});

原生广告

getNativeData(function callback);

获取一组原生广告数据

参数

function callback

原生广告数据获取的回调方法

参数

object data

原生广告数据

loadImageInNode(string imageUrl,cc.Node node , cc.Size safeSize)

在一个指定节点上加载一个图片,如果节点上有精灵组件直接使用,如果没有精灵组件就创建一个新的精灵组件来使用

参数

string imageUrl

要加载的图片的实际url地址

参数

cc.Node node

展示图片的节点

参数

cc.Size safeSize

安全区域,如果设置了安全区域,图片会在这个安全区域内不拉伸的前提下自动适配

nativeReportAdShow(object data)

原生广告上报展示

参数

object data

从getNativeData方法中中获取的data

nativeReportAdClick(object data)

原生广告上报点击

参数

object data

从getNativeData方法中中获取的data

示例代码

oppo.getApp().getNativeData((data) => {
    if (data) {//确保拿到了原生广告数据
        //上报原生广告展示
        oppo.getApp().nativeReportAdShow(data);
        let imageUrl: string = '';
        //优选icon图片次选imgUrlList数组中图片
        if (data.icon) {
            imageUrl = data.icon;
        } else {
            imageUrl = data.imgUrlList[0];
        }
        //加载原生广告图片
        oppo.getApp().loadImageInNode(imageUrl, this.image, this.image.getContentSize());
        this.nativeData = data;
    } else {
        //获取原生广告数据失败
    }
});

横幅广告

showBannerAd();

显示广告

hideBannerAd();

隐藏广告

全部代码

const { ccclass, property } = cc._decorator;
@ccclass
export default class oppo extends cc.Component {
    static _app: oppo | null = null;
    static getApp() {
        if (!oppo._app) {
            oppo._app = new oppo();
        }
        return oppo._app;
    }
    videoId: string = '';
    nativeId: string = '';
    bannerId: string = '';
    nativeObject: any = null;
    nativeCallback: Function = null;
    nativeDataCopy: any = null;
    /**
     * 获取一组原生广告数据
     * @param callback 当原生广告数据加载完成时调用的回调
     */
    getNativeData<T extends Function>(callback: T) {
        let qg = window['qg'];
        if (callback) this.nativeCallback = callback;
        let data = false;
        if (!this.nativeObject) {
            this.nativeObject = qg.createNativeAd({
                adUnitId: this.nativeId
            });
            this.nativeObject.onLoad((res) => {
                if (res.adList[0]) data = res.adList[0];
                this.nativeCallback && this.nativeCallback(data);
                this.nativeDataCopy = data;
            });
            this.nativeObject.onError((err) => {
                console.error(err);
                data = false;
                this.nativeCallback && this.nativeCallback(data);
            });
        }
        this.nativeObject.load().catch(() => {
            if (this.nativeDataCopy) {
                return (this.nativeDataCopy);
            } else {
                return (false);
            }
        });
    }
    /**
     * 原生广告上报展示
     * @param object 从getNativeData中获取的data
     */
    nativeReportAdShow(object: any): void {
        let adId = object.adId;
        this.nativeObject && this.nativeObject.reportAdShow({ adId: adId });
    }
    /**
     * 原生广告上报点击
     * @param object 从getNativeData中获取的data
     */
    nativeReportAdClick(object: any): void {
        let adId = object.adId;
        this.nativeObject && this.nativeObject.reportAdClick({ adId: adId });
    }
    videoObject: any = null;
    videoCallback: Function = null;
    /**
     * 播放激励视频广告
     * @param callback 视频广告相应后调用的回调
     */
    playVideoAd<T extends Function>(callback: T) {
        let qg = window['qg'];
        if (callback) this.videoCallback = callback;
        if (!this.videoObject) {
            this.videoObject = qg.createRewardedVideoAd({
                adUnitId: this.videoId
            });
            this.videoObject.onError((err) => {
                console.error(err);
                //视频广告失败时调用oppo原生弹窗提示
                qg.showToast({
                    title: '暂无视频广告,请稍后再试',
                    icon: 'none',
                });
                this.videoCallback && this.videoCallback(false);
            });
            this.videoObject.onLoad(() => {
                this.videoObject.show();
            });
            this.videoObject.onClose((res) => {
                this.videoCallback && this.videoCallback(res.isEnded);
            });
        }
        this.videoObject.load();
    }
    /**
     * 在一个指定节点上加载一个图片,如果节点上有精灵组件直接使用,如果没有精灵组件就创建一个新的精灵组件来使用
     * @param imageUrl 外部图片链接地址
     * @param node 要加载图片的节点
     * @param safeSize 安全区域,如果设置了安全区域,图片会在这个安全区域内不拉伸的前提下自动适配
     */
    loadImageInNode(imageUrl: string, node: cc.Node, safeSize?: cc.Size) {
        cc.assetManager.loadRemote(imageUrl, function (err, texture: cc.Texture2D) {
            let sprite: cc.Sprite = null;
            node.getComponent(cc.Sprite) ? sprite = node.getComponent(cc.Sprite) : sprite = node.addComponent(cc.Sprite);
            sprite.sizeMode = cc.Sprite.SizeMode.RAW;
            var spriteFrame = new cc.SpriteFrame(texture);
            sprite.spriteFrame = spriteFrame;
            if (safeSize) {
                let safeParameter: number = safeSize.width / safeSize.height;
                let imageParameter: number = node.width / node.height;
                if (safeParameter > imageParameter) {
                    let height = node.height;
                    node.height = safeSize.height;
                    node.width *= safeSize.height / height;
                } else if (safeParameter < imageParameter) {
                    let width = node.width;
                    node.width = safeSize.width;
                    node.height *= safeSize.width / width;
                } else {
                    node.width = safeSize.width;
                    node.height = safeSize.height;
                }
            }
        });
    }
    bannerObject: any = null;
    /**
     * 展示banner广告
     */
    showBannerAd() {
        let qg = window['qg'];
        if (!this.bannerObject) {
            this.bannerObject = qg.createBannerAd({
                adUnitId: this.bannerId
            });
            this.bannerObject.onError((err) => {
                console.error(err);
            });
            //第一次展示banner时延时1秒
            this.scheduleOnce(() => {
                this.bannerObject.show();
            }, 1);
        } else {
            this.bannerObject.show();
        }
    }
    /**
     * 隐藏banner广告
     */
    hideBannerAd() {
        let qg = window['qg'];
        if (this.bannerObject) {
            this.bannerObject.hide();
        }
    }
}

给TA打赏
共{{data.count}}人
人已打赏
程序代码计算机基础

Cocos Creator 打包vivo小游戏时,从后台切换回游戏,播放过的音效会重新播放的解决办法

2021-7-12 22:22:47

计算机基础

一个模板刷遍所有字符串句子题目!(归纳总结+分类模板+题目分析)

2021-7-14 19:42:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索