Cocos接入优量汇
By LayFz on Aug 8, 2024
Cocos 接入优量汇广告 SDK
在这个教程中,我将详细介绍如何在 Cocos 引擎中接入优量汇广告 SDK。优量汇是一款强大的广告平台,为开发者提供了丰富的广告资源和优质的广告体验。我们将分步介绍如何在 Cocos 项目中集成优量汇 SDK,包括环境配置、代码实现和测试等内容。
本教程使用的是腾讯聚合平台,聚合平台在2024-06-05作出修订,将不再维护聚合SDK

目录
前提条件
在开始之前,请确保你具备以下条件:
- 已安装 Cocos Creator 或 Cocos2d-x。
- 已创建一个 Cocos 项目。
注意事项:
-
由于Android平台更新迭代非常快,开发者很容易陷入版本冲突以及兼容问题,若要使用该教程,请使用推荐的的版本配置:
- Gradle:8.0.2
- Gradle Plugin:8.0.2
- Android NDK: 21.3.6528147
- Android SDK: 29
- Cocos Creator: 2.4.13
获取优量汇 SDK
- 访问优量汇官网:前往 优量汇 并登录你的账户。
- 下载 SDK:在开发者中心找到Android SDK,下载并解压缩。 聚合SDK已不提供下载,请联系作者获取,若有备份,忽略此条消息
集成 SDK
1. 集成 Android SDK
-
导入 SDK 文件:
- 将下载的 Android SDK 文件(
.aar或.jar文件)放入 Cocos 项目的assets目录下的Plugins/Android文件夹中。
- 将下载的 Android SDK 文件(
-
配置 Gradle 文件:
-
打开 Cocos 项目的
proj.android-studio/app/build.gradle文件。 -
在
dependencies部分添加优量汇 SDK 的依赖:implementation files('libs/your_sdk_file.aar')
-
-
更新 AndroidManifest.xml:
-
在
proj.android-studio/app/src/main/AndroidManifest.xml中添加优量汇所需的权限和服务:<!--相关权限声明 : SDK不强制校验下列权限(即:无下面权限sdk也可正常工作),但建议开发者申请下面权限,尤其是READ_PHONE_STATE权限--> <!--READ_PHONE_STATE权限用于允许SDK获取用户标识,针对单媒体的用户,允许获取权限的,投放定向广告;不允许获取权限的用户,投放通投广告,媒体可以选择是否把用户标识数据提供给优量汇,并承担相应广告填充和eCPM单价下降损失的结果。--> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 高于Android 7的系统上,如果应用的 targetSdkVersion >= 26 ,推荐增加权限声明(SDK将通过此权限触发App安装动作)--> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <!-- 高于Android 11的系统上,如果应用的 targetSdkVersion >= 30 ,推荐增加以下权限声明(SDK将通过此权限正常触发广告行为,并保证广告的正确投放。此权限需要在用户隐私文档中声明。)--> <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" /> <!--检测当前⽹络状态是2G、3G、4G还是WiFi--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!--联⽹权限--> <uses-permission android:name="android.permission.INTERNET" /> <!--读写存储权限--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!--获取MAC地址,⽤于标识⽤户--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!--定位权限,不强制要求--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />application部分:
<application android:name="org.cocos2dx.javascript.GDT.GDTApplication" android:allowBackup="true" android:label="@string/app_name" android:usesCleartextTraffic="true" tools:replace="android:allowBackup" android:icon="@mipmap/ic_launcher"> <!-- Tell Cocos2dxActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="cocos2djs" /> <activity android:name="org.cocos2dx.javascript.AppActivity" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden|screenSize|screenLayout|uiMode" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:launchMode="singleTask" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="org.cocos2dx.javascript.GDT.SplashActivity" android:configChanges="orientation|keyboardHidden|screenSize|screenLayout|uiMode" android:screenOrientation="portrait" /> <!-- targetSDKVersion >= 24时才需要添加这个provider。provider的authorities属性的值为${applicationId}.fileprovider,请开发者根据自己的${applicationId}来设置这个值,例如本例中applicationId为"com.qq.e.union.demo"。 --> <provider android:name="com.qq.e.comm.GDTFileProvider" android:authorities="${applicationId}.gdt.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/gdt_file_path" /> </provider> <!-- 如果使用激励视频/全屏视频功能,需要主动在AndroidManifest.xml里面声明MobRewardVideoActivity --> <activity android:name="com.baidu.mobads.sdk.api.MobRewardVideoActivity" android:configChanges="screenSize|orientation|keyboardHidden" android:launchMode="singleTask" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <provider android:name="com.baidu.mobads.sdk.api.BdFileProvider" android:authorities="${applicationId}.bd.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/bd_file_paths" /> </provider> <provider android:name="com.bytedance.sdk.openadsdk.TTFileProvider" android:authorities="${applicationId}.TTFileProvider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/tt_file_paths" /> </provider> <provider android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider" android:authorities="${applicationId}.TTMultiProvider" android:exported="false" /> </application>
-
-
目录结构:

将代码依次复制到自己的项目当中,并在AppConfig类中配置自己的参数
添加依赖
gradle文件依赖部分:
implementation fileTree(dir: 'arrs', include: ['*.aar'])
implementation 'com.qq.e.union:union:4.570.1440'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation "com.google.android.material:material:1.0.0"
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.tencent.bugly:crashreport:latest.release'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.1'
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.1'
implementation 'androidx.multidex:multidex:2.0.0'
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
在app目录下添加arrs文件夹,把聚合平台的包放进去即可
配置优量汇广告
1. 初始化 SDK
在 Cocos 项目的主脚本中,初始化优量汇 SDK:
// JavaScript 示例
onAD(sender, str) {
console.log("显示" + str + "广告");
if (str == "开屏") {
if (cc.sys.platform == cc.sys.ANDROID) {
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "showSplashAd", "()V");
}
} else if (str == "激励") {
if (cc.sys.platform == cc.sys.ANDROID) {
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "showRewardedVideoAd", "()V");
}
} else if (str == "插屏") {
if (cc.sys.platform == cc.sys.ANDROID) {
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "showInterstitial", "()V");
}
} else if (str == "信息") {
if (cc.sys.platform == cc.sys.ANDROID) {
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "showDrawAd", "()V");
}
} else if (str == "横幅") {
if (cc.sys.platform == cc.sys.ANDROID) {
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "showBanner", "()V");
}
} else if (str == "关闭信息") {
if (cc.sys.platform == cc.sys.ANDROID) {
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "hideDrawAd", "()V");
}
} else if (str == "关闭横幅") {
if (cc.sys.platform == cc.sys.ANDROID) {
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "hideBanner", "()V");
}
}
}
在你需要的地方直接调取就可以实现弹出广告了,以上就是cocos脚本在需要的地方调用方法就可以实现安卓平台的广告调用。