Cocos Creator 3.8 接入Taku
提前你的申请账号https://app.takuad.com/SDK下载中心https://app.takuad.com/m/sdk/downloadTaku SDK接入指南 1.开屏广告 开屏广告容器 FrameLayout android:idid/splash_ad_container android:layout_widthmatch_parent android:layout_heightmatch_parent / 查找到容器 mSplashContainer findViewById(R.id.splash_ad_container); mSplashContainer.setVisibility(View.GONE); 开屏广告拉取 // 注lastTime需要替换为您的开屏广告超时时间单位毫秒 ATSplashAd splashAd new ATSplashAd(context, placementId, listner, lastTime); splashAd.loadAd(); 在合适的地方显示比如onAdLoaded splashAd.entryAdScenario(AdConst.SCENARIO_ID.SPLASH_AD_SCENARIO); mSplashContainer.setVisibility(View.VISIBLE); splashAd.show(appActivity, mSplashContainer); 在合适的时候移除或者隐藏比如onAdLoadTimeoutonNoAdErroronAdDismiss if (mSplashContainer ! null) { mSplashContainer.removeAllViews(); mSplashContainer.setVisibility(View.GONE); } 2.插屏广告 插屏广告拉取 //注意广告对象必须要全局引用如果广告对象是临时变量会导致广告加载过程中有可能被回收无法接收广告事件回调 ATInterstitial mInterstitialAd; private void loadInterstitialAd() { if (mInterstitialAd null) { mInterstitialAd new ATInterstitial(this, interstitialTakuPlacementID); } mInterstitialAd.load(); } 插屏广告监听 mInterstitialAd.setAdListener(new ATInterstitialListener() {xxx}); 广告拉取需要一定的时间差在合适的时候再显示 public static void showInterstitialAd() { mInterstitialAd.entryAdScenario(AdConst.SCENARIO_ID.INTERSTITIAL_AD_SCENARIO); if (mInterstitialAd.isAdReady()) { mInterstitialAd.show(appActivity, AdConst.SCENARIO_ID.INTERSTITIAL_AD_SCENARIO); } } 插屏广告需要手动关闭 3.原生广告 原生广告容器native_selfrender_view作为自渲染的容器模板的直接放native_ad_view里面 com.anythink.nativead.api.ATNativeView android:idid/native_ad_view android:layout_widthmatch_parent android:layout_heightwrap_content android:layout_alignParentBottomtrue android:layout_centerHorizontaltrue android:layout_marginBottom0dp android:visibilityvisible tools:ignorePxUsage include android:idid/native_selfrender_view layoutlayout/layout_native_self android:visibilityvisible / /com.anythink.nativead.api.ATNativeView 查找到容器先隐藏 findViewById(R.id.native_ad_view).setVisibility(View.GONE); findViewById(R.id.native_selfrender_view).setVisibility(View.GONE); 原生广告加载不能一直拉取拉取两三次没有广告的话就是没有了 private static void loadNativeAd() { //初始化广告加载对象 ATNative atNative new ATNative(context, your placement id, new ATNativeNetworkListener() { Override public void onNativeAdLoaded() { // 重置重试加载次数 retryAttempt 0; } Override public void onNativeAdLoadFail(AdError adError) { // 加载失败回调 // 我们建议您按照指数递增的方式延长重试间隔直到达到最大延迟时间本例为 8 秒或最大重试次数本例为 3 次 if (retryAttempt 3) return; retryAttempt; long delayMillis TimeUnit.SECONDS.toMillis((long) Math.pow(2, Math.min(3, retryAttempt))); new Handler().postDelayed(new Runnable() { Override public void run() { loadNativeAd(); } }, delayMillis); } }); //发起广告请求 atNative.makeAdRequest(); } 在合适的时候调用显示 public static void showNativeAd() { if (atNative null) { return; } if (!atNative.checkAdStatus().isReady()) { return; } if (mATNativeAdView null) { mATNativeAdView appActivity.findViewById(R.id.native_ad_view); //可在xml布局定义 } if (mSelfRenderView null) { mSelfRenderView mATNativeAdView.findViewById(R.id.native_selfrender_view); //可在xml布局定义 } //6.5.80及以上 atNative.entryAdScenario(AdConst.SCENARIO_ID.NATIVE_AD_SCENARIO); NativeAd nativeAd atNative.getNativeAd(); if (nativeAd ! null) { // 销毁上一次展示的广告对象 if (mNativeAd ! null) { mNativeAd.destory(); } mNativeAd nativeAd; mNativeAd.setNativeEventListener(new ATNativeEventListener() { Override public void onAdImpressed(ATNativeAdView view, ATAdInfo adInfo) {} Override public void onAdClicked(ATNativeAdView view, ATAdInfo adInfo) {} Override public void onAdVideoStart(ATNativeAdView view) {} Override public void onAdVideoEnd(ATNativeAdView view) {} Override public void onAdVideoProgress(ATNativeAdView view, int progress) {} }); mNativeAd.setAdDownloadListener(new ATAppDownloadListener() { Override public void onDownloadStart(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) { } Override public void onDownloadUpdate(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) { } Override public void onDownloadPause(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) { } Override public void onDownloadFinish(ATAdInfo adInfo, long totalBytes, String fileName, String appName) { } Override public void onDownloadFail(ATAdInfo adInfo, long totalBytes, long currBytes, String fileName, String appName) { } Override public void onInstalled(ATAdInfo adInfo, String fileName, String appName) { } }); mNativeAd.setDislikeCallbackListener(new ATNativeDislikeListener() { Override public void onAdCloseButtonClick(ATNativeAdView view, ATAdInfo entity) { exitNativePanel(); } }); if (!mNativeAd.isNativeExpress()) { ATNativePrepareInfo nativePrepareInfo new ATNativePrepareExInfo(); SelfRenderViewUtil.bindSelfRenderView(appActivity, mNativeAd.getAdMaterial(), mSelfRenderView, nativePrepareInfo); mNativeAd.renderAdContainer(mATNativeAdView, mSelfRenderView); mNativeAd.prepare(mATNativeAdView, nativePrepareInfo); mSelfRenderView.setVisibility(View.VISIBLE); } else { //模板渲染 mNativeAd.renderAdContainer(mATNativeAdView, null); } mATNativeAdView.setVisibility(View.VISIBLE); atNative.makeAdRequest(); } } 原生广告关闭按钮监听 private static void exitNativePanel() { if (mNativeAd ! null) { mNativeAd.destory(); } if (atNative ! null) { atNative.makeAdRequest(); } if (mATNativeAdView ! null) { mATNativeAdView.setVisibility(View.GONE); } if (mSelfRenderView ! null) { mSelfRenderView.setVisibility(View.GONE); } } 4.横幅广告 横幅拉取 mBannerView new ATBannerView(BannerAdActivity.this); mBannerView.setPlacementId(bannerTakuPlacementID); mBannerView.loadAd(); 代码写的容器我这样写是加到顶部的底部的可以自己百度一下 int width getResources().getDisplayMetrics().widthPixels;//定一个宽度值比如屏幕宽度 int height (int) (width / (320 / 50f));//按照比例转换高度的值 mBannerView.setLayoutParams(new FrameLayout.LayoutParams(width, height)); mRootLayout.addView(mBannerView); 广告监听 mBannerView.setBannerAdListener(new ATBannerListener() {xxxx}) 手动关闭 Override public void onBannerClose(ATAdInfo atAdInfo) { if (mBannerView ! null mBannerView.getParent() ! null) { ((ViewGroup) mBannerView.getParent()).removeView(mBannerView); } if (mBannerView ! null) { mBannerView.destroy(); mBannerView null; } } 5.激励视频广告 //注意广告对象必须要全局引用如果广告对象是临时变量会导致广告加载过程中有可能被回收无法接收广告事件回调 ATRewardVideoAd mRewardVideoAd; private void loadRewardVideoAd() { if (mRewardVideoAd null) { mRewardVideoAd new ATRewardVideoAd(this, rewardTakuPlacementID); mRewardVideoAd.setAdListener(new ATRewardVideoListener() { Override public void onRewardedVideoAdLoaded() { } Override public void onRewardedVideoAdFailed(AdError adError) { Log.e(TAG, onRewardedVideoAdFailed: adError.getFullErrorInfo()); } Override public void onRewardedVideoAdPlayStart(ATAdInfo adInfo) { mRewardVideoAd.load(); } Override public void onRewardedVideoAdPlayEnd(ATAdInfo atAdInfo) { } Override public void onRewardedVideoAdPlayFailed(AdError adError, ATAdInfo atAdInfo) { Log.e(TAG, onRewardedVideoAdPlayFailed: adError.getFullErrorInfo()); } Override public void onRewardedVideoAdClosed(ATAdInfo atAdInfo) { } Override public void onReward(ATAdInfo atAdInfo) { //建议在此回调中下发奖励一般在onRewardedVideoAdClosed之前回调 } Override public void onRewardedVideoAdPlayClicked(ATAdInfo atAdInfo) { } }); } String userid test_userid_001; String userdata test_userdata_001; Map localMap new HashMap(); localMap.put(ATAdConst.KEY.USER_ID, userid); localMap.put(ATAdConst.KEY.USER_CUSTOM_DATA, userdata); //Load时传自定义参数在广告源填充之后自定义参数会保存起来在展示时回传。适用场景:传入会话信息做防作弊类似 mRewardVideoAd.setLocalExtra(localMap); mRewardVideoAd.load(); } 展示的时候调用 private static void showRewardVideoAd(String message) { getReward message; mRewardVideoAd.entryAdScenario(AdConst.SCENARIO_ID.REWARD_VIDEO_AD_SCENARIO); if (mRewardVideoAd.isAdReady()) { Log.e(TAG, 游戏视频广告播放回调:\n); mRewardVideoAd.show(appActivity, AdConst.SCENARIO_ID.REWARD_VIDEO_AD_SCENARIO); } else { ToastUtils.showLong(激励广告准备状态异常强稍后重试); sendRewardToJs(getReward); } }import { _decorator, Component, native, sys } from cc; import { NATIVE } from cc/env; const { ccclass, property } _decorator; ccclass(GameRun) export class GameRun extends Component { // var result native.reflection.callStaticMethod(className, methodName, arg1, arg2, .....); /** * 在 native.reflection.callStaticMethod 方法中我们通过传入 Objective-C 的类名、方法名、参数就可以直接调用 * Objective-C 的静态方法并且可以获得 Objective-C 方法的返回值。 */ showSplashAd() { if (NATIVE sys.os sys.OS.ANDROID) { native.reflection.callStaticMethod(com/cocos/game/AppActivity, showSplashAd, ()V); } } showInterstitialAd() { if (NATIVE sys.os sys.OS.ANDROID) { native.reflection.callStaticMethod(com/cocos/game/AppActivity, showInterstitialAd, ()V); } } showNativeAd() { if (NATIVE sys.os sys.OS.ANDROID) { native.reflection.callStaticMethod(com/cocos/game/AppActivity, showNativeAd, ()V); } } hideNativeAd() { if (NATIVE sys.os sys.OS.ANDROID) { native.reflection.callStaticMethod(com/cocos/game/AppActivity, hideNativeAd, ()V); } } showBannerAd() { if (NATIVE sys.os sys.OS.ANDROID) { native.reflection.callStaticMethod(com/cocos/game/AppActivity, showBannerAd, ()V); } } showRewardVideoAd() { let message: string 广告奖励ID; if (NATIVE sys.os sys.OS.ANDROID) { native.reflection.callStaticMethod(com/cocos/game/AppActivity, showRewardVideoAd, (Ljava/lang/String;)V, message); } } }

相关新闻

小程序毕设选题推荐:基于 JavaWeb 的安阳特色文旅资讯、路线规划服务系统 面向游客的畅玩安阳信息交互平台实现【附源码、mysql、文档、调试+代码讲解+全bao等】

小程序毕设选题推荐:基于 JavaWeb 的安阳特色文旅资讯、路线规划服务系统 面向游客的畅玩安阳信息交互平台实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 14:38:29 阅读更多 →
小程序毕设选题推荐:安卓端日常健身训练打卡服务应用 健身运动数据统计与健康管理系统设计【附源码、mysql、文档、调试+代码讲解+全bao等】

小程序毕设选题推荐:安卓端日常健身训练打卡服务应用 健身运动数据统计与健康管理系统设计【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/24 2:39:48 阅读更多 →
小程序毕设选题推荐:基于 SpringBoot 的居家医疗健康助手系统家庭健康档案管理与就医辅助小程序 【附源码、mysql、文档、调试+代码讲解+全bao等】

小程序毕设选题推荐:基于 SpringBoot 的居家医疗健康助手系统家庭健康档案管理与就医辅助小程序 【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/24 12:44:03 阅读更多 →

最新新闻

AI工具PaperXie:3分钟生成学术答辩PPT的智能解决方案

AI工具PaperXie:3分钟生成学术答辩PPT的智能解决方案

1. 项目概述:AI如何拯救毕业论文答辩PPT 又到一年毕业季,凌晨三点的大学宿舍里,总能看到对着电脑屏幕抓狂的身影。去年我指导学弟修改答辩PPT时,发现90%的本科生都存在相同问题:要么把论文全文粘贴到幻灯片上&#xff…

2026/7/24 16:43:01 阅读更多 →
中国制造开源权重模型部署指南:从环境配置到生产实践

中国制造开源权重模型部署指南:从环境配置到生产实践

1. 先搞清楚“中国制造开源权重模型”到底指什么 看到“前沿开源权重模型仅由中国制造”这个标题,很多人的第一反应可能是“这是不是又一个国产大模型”。但实际接触过这类项目的人会告诉你,重点不在“国产”,而在“开源权重”和“制造方式”…

2026/7/24 16:43:01 阅读更多 →
如何用G-Helper彻底替代Armoury Crate:华硕笔记本终极轻量控制指南

如何用G-Helper彻底替代Armoury Crate:华硕笔记本终极轻量控制指南

如何用G-Helper彻底替代Armoury Crate:华硕笔记本终极轻量控制指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook,…

2026/7/24 16:43:01 阅读更多 →
月之暗面与阿里联合AI模型技术解析与实践指南

月之暗面与阿里联合AI模型技术解析与实践指南

如果你最近关注AI大模型的发展,可能会注意到一个有趣的现象:国内AI公司月之暗面(Moonshot AI)与阿里巴巴联合发布的新模型,在多项评测中表现出了接近甚至部分超越美国顶尖模型的实力。这不仅仅是又一个大模型的发布&am…

2026/7/24 16:43:01 阅读更多 →
React Native 项目的性能劣化排查:从 Flipper 到自定义性能面板

React Native 项目的性能劣化排查:从 Flipper 到自定义性能面板

React Native 项目的性能劣化排查:从 Flipper 到自定义性能面板 一、性能劣化的隐蔽性:一个真实项目的困境 某电商平台的 React Native 应用在上线 18 个月后,用户反馈启动时间从初版的 1.8 秒劣化至 4.7 秒,列表滑动帧率从 60fps…

2026/7/24 16:43:01 阅读更多 →
没有本体语义平台托底的企业大脑,只是个会搜文档的大模型

没有本体语义平台托底的企业大脑,只是个会搜文档的大模型

这两年"企业大脑"这个词很热,不少企业都在建。但建着建着发现一个问题:很多所谓的"企业大脑",用起来和给大模型接个企业知识库没什么两样。问简单问题能答,一问业务的深水区——比如这批物料延期会不会影响下…

2026/7/24 16:42:00 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻