更新记录
1.1.5(2022-02-28)
修改广告错误提示信息等
1.1.3(2022-02-21)
增加支持banner广告
1.1.2(2022-02-09)
优化解决已知问题
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 14.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
UnityAds广告插件,Unity广告插件,海外广告插件(插件有问题请联系QQ:1684729125)
插件仅支持Android版本
使用该插件,需要在unity后台注册账号,新建项目等。
unity后台地址:https://dashboard.unity3d.com
启用广告时,请不要选择中介调解,请选择第一个选项,不是使用中介,只使用unity广告。
单个平台广告每天可播放的数量有限,播放一定次数后会无法获取广告,可使用集成多个平台切换播放广告
由于Uniapp插件市场规则,目前其他广告插件无法上架uniapp插件市场,有需要可联系作者,暂时开发完成的广告平台(Google AdMod、IronSource、Adcolony、Vungle、Applovin、Fyber、Facebook)
插件使用流程(详情请参考Demo)
- 在Unity官方网站上注册账号,创建项目,添加广告位等
- 引入插件后,在App原生插件配置中填写UnityAds_GameId(unity后台创建项目的GameId,monetization -> Ad Units -> Game IDs)
- 测试GameId可以使用:4570033,使用4570033作为GameId时,项目中的PlacementId都是可用的,可直接打基座包测试
- UnityAds_TestMode为是否开启测试模式(true,false),测试模式广告为unity官方测试广告。正式打包请关闭测试模式(false)
回调参数说明
参数 | 说明 | 示例 |
---|---|---|
code | 结果码 | 200 |
msg | 回调方法提示文案信息 | 'placementId cannot be empty' |
结果码参数说明
Code | 说明 |
---|---|
200 | 成功结果码(广告播放完成) |
1000 | game Id不能为空 |
1002 | placement Id不能为空 |
1003 | 加载广告失败 |
201 | 加载广告成功 |
1004 | 显示广告失败 |
1005 | 当前不在activity上,无法显示广告 |
1006 | 开始显示广告 |
1007 | 点击广告按钮 |
banner广告使用代码如下
- banner广告只能在nvue页面使用
- onBannerLoaded方法为banner加载完成回调方法
- onBannerClick方法为banner被点击回调方法
- onBannerFailedToLoad方法为banner加载失败回调方法
- banner使用的JS方法,请参考Demo
<unityBannerView
class="banner-view"
@onBannerLoaded="onBannerLoaded"
@onBannerClick="onBannerClick"
@onBannerFailedToLoad="onBannerFailedToLoad"
adWidth="320"
adHeight="50"
placementId="Banner_Android"
style="width:320;height:50"
></unityBannerView>
激励广告,插屏广告使用代码如下
<template>
<view class="container">
<view class="btn-ads">
<button class="btn-ads__video" @tap="doLoadRewardAds">加载激励广告</button>
<button class="btn-ads__video" @tap="doShowRewardAds">显示激励广告</button>
<button class="btn-ads__video" @tap="doLoadInterstitialAd">加载插屏广告</button>
<button class="btn-ads__video" @tap="doShowInterstitialAd">显示插屏广告</button>
</view>
</view>
</template>
<script>
// #ifdef APP
var RewardAd = uni.requireNativePlugin('GT-UnityAds_RewardAd');
var InterstitialAd = uni.requireNativePlugin('GT-UnityAds_InterstitialAd');
// #endif
export default {
data() {
return {
rewardAdPlacementId: 'Rewarded_Android', //激励广告位Id
interstitialAdPlacementId: 'Interstitial_Android', //插屏广告位Id
hasLoadRewardAd: false, //是否已加载激励广告
hasLoadInterstitialAd: false //是否已加载插屏广告
};
},
onLoad() {
let that = this;
// that.doLoadRewardAds();
},
methods: {
/**
* 加载激励广告,可提前加载广告
*/
doLoadRewardAds() {
let that = this;
// #ifndef APP
that.showToast('Please use this function in app.');
// #endif
// #ifdef APP
RewardAd.loadRewardAd(that.rewardAdPlacementId, ret => {
console.log('loadRewardAd result: ', ret);
if (ret.code == 201) {
that.hasLoadRewardAd = true;
} else {
that.hasLoadRewardAd = false;
}
});
// #endif
},
/**
* 显示激励广告
*/
doShowRewardAds() {
let that = this;
// #ifndef APP
that.showToast('Please use this function in app.');
// #endif
// #ifdef APP
uni.showLoading({
mask: true,
title: 'loading...'
});
if (!that.hasLoadRewardAd) {
RewardAd.loadRewardAd(that.rewardAdPlacementId, ret => {
console.log('loadRewardAd result: ', ret);
if (ret.code == 201) {
that.hasLoadRewardAd = true;
that.showRewardAds();
} else {
that.hasLoadRewardAd = false;
that.showToast(ret.msg, 'none', 1500);
}
});
} else {
that.showRewardAds();
}
// #endif
},
/**
* 显示激励广告
*/
showRewardAds() {
let that = this;
RewardAd.showRewardAd(that.rewardAdPlacementId, ret => {
console.log('showRewardAd result', ret);
if (ret.code == 1006) {
//开始显示广告
uni.hideLoading();
} else if (ret.code == 200) {
//广告播放完成
that.showToast('Advertisement broadcast completed!');
} else if (ret.code == 1007) {
//广告被点击了
console.log('the reward ad was clicked.');
} else { //其他状态
that.showToast(ret.msg);
console.log('error: ' + ret.msg);
}
});
},
/**
* 加载插屏广告,可提前加载广告
*/
doLoadInterstitialAd() {
let that = this;
// #ifndef APP
that.showToast('Please use this function in app.');
// #endif
// #ifdef APP
InterstitialAd.loadInterstitialAd(that.interstitialAdPlacementId, ret => {
console.log('loadInterstitialAd result: ', ret);
if (ret.code == 201) {
that.hasLoadInterstitialAd = true;
} else {
that.hasLoadInterstitialAd = false;
}
});
// #endif
},
/**
* 显示激励广告
*/
doShowInterstitialAd() {
let that = this;
// #ifndef APP
that.showToast('Please use this function in app.');
// #endif
// #ifdef APP
uni.showLoading({
mask: true,
title: 'loading...'
});
if (!that.hasLoadInterstitialAd) {
InterstitialAd.loadInterstitialAd(that.interstitialAdPlacementId, ret => {
console.log('loadInterstitialAd result: ', ret);
if (ret.code == 201) {
that.hasLoadInterstitialAd = true;
that.showInterstitialAd();
} else {
that.hasLoadInterstitialAd = false;
that.showToast(ret.msg, 'none', 1500);
}
});
} else {
that.showInterstitialAd();
}
// #endif
},
/**
* 显示激励广告
*/
showInterstitialAd() {
let that = this;
InterstitialAd.showInterstitialAd(that.interstitialAdPlacementId, ret => {
console.log('showInterstitialAd result', ret);
if (ret.code == 1006) {
//开始显示广告
uni.hideLoading();
} else if (ret.code == 200) {
//广告播放完成
that.showToast('Advertisement broadcast completed!');
} else if (ret.code == 1007) {
//广告被点击了
console.log('the interstitial ad was clicked.');
} else { //其他状态
that.showToast(ret.msg);
console.log('error: ' + ret.msg);
}
});
},
/**
* toast
*/
showToast(title = '', duration = 1500) {
uni.showToast({
title: title,
mask: true,
duration: duration,
icon: 'none'
});
},
}
};
</script>
<style lang="scss">
.container {
display: flex;
flex-direction: column;
max-width: 500px;
margin: 0 auto;
/* #ifdef APP*/
min-height: 100vh;
/* #endif */
/* #ifndef APP */
min-height: calc(100vh - 44px);
/* #endif */
background-color: #f9f9f9;
.btn-ads {
display: flex;
flex-wrap: wrap;
button {
margin-bottom: 20rpx;
background-color: #4891da;
color: #ffffff;
}
}
}
</style>