更新记录

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 - 11.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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)

务必用测试广告进行测试,否则,可能会导致您的帐号被暂停。

  1. Android 激励广告测试专用广告单元ID:ca-app-pub-3940256099942544/5224354917
  2. Android 插页式广告测试专用广告单元ID:ca-app-pub-3940256099942544/1033173712
  3. Android APP开屏广告测试专用广告单元ID:ca-app-pub-3940256099942544/3419835294
  4. Android Banner广告测试专用广告单元ID:ca-app-pub-3940256099942544/6300978111
  5. Android 原生广告测试专用广告单元ID:ca-app-pub-3940256099942544/2247696110

插件使用流程(详情请参考Demo)

  1. 在AdMod官方网站创建项目,添加广告位等
  2. 引入插件后,在App原生插件配置中填写ApplicationId
  3. 所有广告都建议提前加载,在业务逻辑需要的时候再显示广告。广告播放完成后,下次展示广告前需再次调用加载广告方法。

回调参数说明

参数 说明 示例
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>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用Google SDK会采集数据,详情可参考:https://apps.admob.com

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

本插件含有广告,支持激励广告、插屏广告类型,展示频率有开发者自行控制

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问