Cocos Creator 三端接入穿山甲 SDK

张开发
2026/4/11 20:50:28 15 分钟阅读

分享文章

Cocos Creator 三端接入穿山甲 SDK
本文将详细讲解如何在Cocos Creator2.x / 3.x项目中接入穿山甲Pangle广告 SDK并支持Android / iOS / Web三端。内容包含接入流程原生层封装JS/TS 调用桥接激励视频 / 插屏 / Banner 示例架构设计建议一、整体架构1.1 三端接入结构Cocos Creator (TS/JS) │ JSB / Bridge 层 ┌───────────────┐ │ │ Android(Java) iOS(Objective-C) │ │ └──── 穿山甲 SDKPangle ────┘ Web 端H5 │ 穿山甲 Web SDK1.2 核心思路原生端封装广告能力Cocos统一调用接口通过事件回调处理广告结果二、准备工作2.1 注册穿山甲平台创建应用创建广告位激励视频 / Banner / 插屏获取AppID广告位IDCodeId三、Android 接入3.1 导入 SDK在proj.android中implementation com.pangle.cn:ads-sdk:5.6.0.03.2 初始化 SDKTTAdConfigconfignewTTAdConfig.Builder().appId(你的AppID).useTextureView(true).appName(YourGame).titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK).build();TTAdSdk.init(context,config);3.3 激励视频封装publicclassAdManager{publicstaticvoidshowRewardAd(Activityactivity,StringcodeId){AdSlotadSlotnewAdSlot.Builder().setCodeId(codeId).setSupportDeepLink(true).setRewardName(金币).setRewardAmount(100).build();TTAdNativeadNativeTTAdSdk.getAdManager().createAdNative(activity);adNative.loadRewardVideoAd(adSlot,newTTAdNative.RewardVideoAdListener(){OverridepublicvoidonRewardVideoAdLoad(TTRewardVideoAdad){ad.showRewardVideoAd(activity);}OverridepublicvoidonError(intcode,Stringmsg){sendToCocos(ad_error);}});}}3.4 回调到 CocospublicstaticvoidsendToCocos(Stringmsg){Cocos2dxJavascriptJavaBridge.evalString(String.format(window.onAdCallback(%s),msg));}四、iOS 接入4.1 安装 SDKpodAds-CN,~ 5.6.0.04.2 初始化BUAdSDKManager *manager [BUAdSDKManager sharedManager]; manager.appID 你的AppID; [manager startWithAsyncCompletionHandler:nil];4.3 激励视频BURewardedVideoAd *rewardedVideoAd [[BURewardedVideoAd alloc] initWithSlotID:codeId]; rewardedVideoAd.delegate self; [rewardedVideoAd loadAdData];播放[rewardedVideoAd showAdFromRootViewController:self];4.4 回调 JSNSString *js window.onAdCallback(reward_success); se::ScriptEngine::getInstance()-evalString([js UTF8String]);五、Web 端接入5.1 引入 SDKscriptsrchttps://sf16-muse-va.ibytedtos.com/obj/ad-tetris-site/pangle_sdk.js/script5.2 使用示例pangle.init({ appId: 你的AppID }); function showReward() { pangle.showRewardVideo({ codeId: 广告位ID, onClose: (res) { if (res.isEnded) { window.onAdCallback(reward_success); } } }); }六、Cocos Creator 统一封装TS6.1 广告管理器class AdManager { static showReward() { if (cc.sys.isNative) { if (cc.sys.os cc.sys.OS_ANDROID) { jsb.reflection.callStaticMethod( org/cocos2dx/javascript/AppActivity, showRewardAd, (Ljava/lang/String;)V, codeId ); } else if (cc.sys.os cc.sys.OS_IOS) { jsb.reflection.callStaticMethod( AppController, showRewardAd:, codeId ); } } else { window.showReward(); } } }6.2 回调处理(window as any).onAdCallback function(msg: string) { switch (msg) { case reward_success: console.log(发放奖励); break; case ad_error: console.log(广告失败); break; } }七、常见问题7.1 广告不显示检查 AppID检查广告位 ID是否开启测试模式7.2 iOS 无回调delegate 未设置控制器未持有对象7.3 Android 崩溃混淆未配置权限缺失网络、存储八、最佳实践8.1 架构建议AdManagerTS ↓ NativeBridge ↓ Platform AdManagerJava / OC8.2 建议所有广告走统一入口加缓存预加载广告控制频率避免封号九、总结接入穿山甲 SDK 的核心就是三点原生层正确初始化JSB 通信打通统一 TS 管理完成后即可实现激励视频插屏广告Banner并支持三端统一逻辑。

更多文章