更新记录

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 - 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原生插件配置”->”云端插件“列表中删除该插件重新选择


UnityAds广告插件,Unity广告插件,海外广告插件(插件有问题请联系QQ:1684729125)

插件仅支持Android版本

使用该插件,需要在unity后台注册账号,新建项目等。

unity后台地址:https://dashboard.unity3d.com

启用广告时,请不要选择中介调解,请选择第一个选项,不是使用中介,只使用unity广告。

单个平台广告每天可播放的数量有限,播放一定次数后会无法获取广告,可使用集成多个平台切换播放广告

由于Uniapp插件市场规则,目前其他广告插件无法上架uniapp插件市场,有需要可联系作者,暂时开发完成的广告平台(Google AdMod、IronSource、Adcolony、Vungle、Applovin、Fyber、Facebook)

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

  1. 在Unity官方网站上注册账号,创建项目,添加广告位等
  2. 引入插件后,在App原生插件配置中填写UnityAds_GameId(unity后台创建项目的GameId,monetization -> Ad Units -> Game IDs)
  3. 测试GameId可以使用:4570033,使用4570033作为GameId时,项目中的PlacementId都是可用的,可直接打基座包测试
  4. 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>

隐私、权限声明

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

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

插件使用UnityAds SDK会采集数据,详情可参考:https://dashboard.unity3d.com/

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

本插件含有广告,支持视频,bannwe广告类型,展示频率有开发者自行控制

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