更新记录
1.2.0(2023-09-26)
1、升级SDK版本至22.3.0 2、解决部分手机运行异常问题
1.1.0(2023-01-10)
1、解决android高版本系统打开应用崩溃问题。
1.0.0(2022-02-18)
发布谷歌广告插件
查看更多平台兼容性
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原生插件配置”->”云端插件“列表中删除该插件重新选择
Google广告插件,谷歌广告,AdMob,Google AdMob,(插件有问题请联系QQ:1684729125)
插件新增支持Native原生广告,Banner广告,开屏广告
插件仅支持Android版本
AdMod后台地址:https://apps.admob.com
由于Uniapp插件市场规则,目前其他广告插件无法上架uniapp插件市场,有需要可联系作者,暂时开发完成的广告平台(Google AdMod、IronSource、Adcolony、Vungle、Applovin、Fyber、Facebook)
务必用测试广告进行测试,否则,可能会导致您的帐号被暂停。
- Android 激励广告测试专用广告单元ID:ca-app-pub-3940256099942544/5224354917
- Android 插页式广告测试专用广告单元ID:ca-app-pub-3940256099942544/1033173712
- Android APP开屏广告测试专用广告单元ID:ca-app-pub-3940256099942544/3419835294
- Android Banner广告测试专用广告单元ID:ca-app-pub-3940256099942544/6300978111
- Android 原生广告测试专用广告单元ID:ca-app-pub-3940256099942544/2247696110
插件使用流程(详情请参考Demo)
- 在AdMod官方网站创建项目,添加广告位等
- 引入插件后,在App原生插件配置中填写ApplicationId
- 所有广告都建议提前加载,在业务逻辑需要的时候再显示广告。广告播放完成后,下次展示广告前需再次调用加载广告方法。
回调参数说明
参数 | 说明 | 示例 |
---|---|---|
code | 结果码 | 1002 |
msg | 回调方法提示文案信息 | 'adUnitId cannot be empty' |
rewardAmount | 奖励数量(激励广告) | 10 |
rewardType | 奖励类型(激励广告) | coins |
结果码参数说明
Code | 说明 |
---|---|
200 | 成功结果码(广告播放完成) |
1002 | adUnitId 不能为空 |
1003 | 加载广告失败 |
201 | 加载广告成功 |
1004 | 显示广告失败 |
1005 | 当前不在activity上,无法显示广告 |
1006 | 开始显示广告 |
1008 | 广告未加载完毕 |
1009 | 广告奖励结果(激励广告) |
开屏广告
//引入插件
const AppOpenAd = uni.requireNativePlugin('GT-GoogleAdMod_AppOpenAd');
//使用插件
AppOpenAd.loadAppOpenAd("ca-app-pub-3940256099942544/3419835294", res => {
console.log('AppOpenAd loadAppOpenAd result: ', res);
if (res.code == 201) {
AppOpenAd.showAppOpenAd(ret => {
console.log('AppOpenAd showAppOpenAd result: ', ret);
if (ret.code == 200) {
uni.showToast({
icon: 'none',
mask: true,
title: '开屏展示完成:' + res.msg
})
}
});
} else {
uni.showToast({
icon: 'none',
mask: true,
title: '开屏广告加载失败:' + res.msg
})
}
})
Banner广告,需要在Nvue页面使用
//view使用
<google-banner-view
class="pangle-banner-view"
@onAdLoaded="onAdLoaded"
@onAdClicked="onAdClicked"
@onAdFailedToLoad="onAdFailedToLoad"
type="2"
adId="ca-app-pub-3940256099942544/6300978111"
:style="{ width: 320, height: 320 }"
></google-banner-view>
//事件监听
onAdLoaded() {
console.log('banner广告加载成功');
},
onAdClicked() {
console.log('点击banner广告');
},
onAdFailedToLoad(fail) {
console.log('banner广告加载失败', fail.detail);
console.log('error code: ' + fail.detail.errorCode);
console.log('error message: ' + fail.detail.errorMessage);
}
Banner广告 type说明 (banner大小)
type | banner大小 |
---|---|
1 | 320x50 横幅 手机和平板电脑 BANNER |
2 | 320x100 大型横幅广告 手机和平板电脑 LARGE_BANNER |
3 | 300x250 IAB 中矩形 手机和平板电脑 MEDIUM_RECTANGLE |
4 | 468x60 IAB 全尺寸横幅 平板电脑 FULL_BANNER |
5 | 728x90 IAB 页首横幅广告 平板电脑 LEADERBOARD |
6 | 屏幕宽度 x 32或50或90 智能横幅 手机和平板电脑 SMART_BANNER |
Banner广告,Native原生广告回调方法说明
回调方法 | 方法说明 |
---|---|
onAdLoaded | 广告加载成功 |
onAdFailedToLoad | 广告加载失败,回调方法有错误信息,详情参考上面代码或demo |
onAdImpression | 广告显示 |
onAdClicked | 广告被点击 |
onAdOpened | 广告点击后打开 |
onAdClosed | 广告点击打开后再关闭 |
Native原生广告,需要在Nvue页面使用,回调方法和Banner一样,参考上面说明
//view使用
<google-native-view class="pangle-native-view"
@onAdLoaded="onAdLoaded"
@onAdClicked="onAdClicked"
@onAdFailedToLoad="onAdFailedToLoad"
adId="ca-app-pub-3940256099942544/2247696110"
:style="{ width: 320, height: 450 }">
</google-native-view>
激励广告、插屏广告。详细代码参考demo。
<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-PLUS
var RewardAd = uni.requireNativePlugin('GT-GoogleAdMod_RewardAd');
var InterstitialAd = uni.requireNativePlugin('GT-GoogleAdMod_InterstitialAd');
// #endif
export default {
data() {
return {
rewardAdPlacementId: 'ca-app-pub-3940256099942544/5224354917', //激励广告测试Id
interstitialAdPlacementId: 'ca-app-pub-3940256099942544/1033173712', //插屏广告测试Id
hasLoadRewardAd: false, //是否已加载激励广告
hasLoadInterstitialAd: false //是否已加载插屏广告
};
},
onLoad() {
let that = this;
// that.doLoadRewardAds();
},
methods: {
/**
* 加载激励广告,可提前加载广告
*/
doLoadRewardAds() {
let that = this;
that.showLoading();
RewardAd.loadRewardAd(that.rewardAdPlacementId, ret => {
console.log('loadRewardAd result: ', ret);
uni.hideLoading();
if (ret.code == 201) {
that.hasLoadRewardAd = true;
} else {
that.hasLoadRewardAd = false;
}
});
},
/**
* 显示激励广告
*/
doShowRewardAds() {
let that = this;
if (!that.hasLoadRewardAd) {
console.log('Please load the advertisement first.');
return
} else {
RewardAd.showRewardAd(ret => {
console.log('showRewardAd result', ret);
that.hasLoadRewardAd = false;
if (ret.code == 1006) {
//开始显示广告
} else if (ret.code == 200) {
//广告播放完成,关闭广告页面后执行
that.showToast('Advertisement broadcast completed!');
} else if (ret.code == 1008) {
//广告未加载
console.log('Please load the advertisement first.');
that.showToast(ret.msg);
} else if (ret.code == 1009) {
//广告奖励结果,后台设置奖励信息,广告播放完成后执行,插屏广告没有该状态
console.log('The user earned the reward '+ ret.rewardAmount +' '+ ret.rewardType);
} else { //其他状态
that.showToast(ret.msg);
console.log('error: ' + ret.msg);
}
});
}
},
/**
* 加载插屏广告,可提前加载广告
*/
doLoadInterstitialAd() {
let that = this;
that.showLoading();
InterstitialAd.loadInterstitialAd(that.interstitialAdPlacementId, ret => {
console.log('loadInterstitialAd result: ', ret);
uni.hideLoading()
if (ret.code == 201) {
that.hasLoadInterstitialAd = true;
} else {
that.hasLoadInterstitialAd = false;
}
});
},
/**
* 显示激励广告
*/
doShowInterstitialAd() {
let that = this;
if (!that.hasLoadInterstitialAd) {
console.log('Please load the advertisement first.');
that.showToast('Please load the advertisement first.');
return
} else {
InterstitialAd.showInterstitialAd(ret => {
console.log('showInterstitialAd result', ret);
that.hasLoadInterstitialAd = false;
if (ret.code == 1006) {
//开始显示广告
} else if (ret.code == 200) {
//广告播放完成,关闭广告页面后执行
that.showToast('Advertisement broadcast completed!');
} else if (ret.code == 1008) {
//广告未加载
console.log('Please load the advertisement first.');
that.showToast(ret.msg);
} else { //其他状态
that.showToast(ret.msg);
console.log('error: ' + ret.msg);
}
});
}
},
showToast(title = '', duration = 1500) {
uni.showToast({
title: title,
mask: true,
duration: duration,
icon: 'none'
});
},
showLoading(title = 'loading') {
uni.showLoading({
title:title,
mask:true,
})
},
}
};
</script>