版本说明
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();
}
}
}