Cocos Creator 三端接入穿山甲 SDK

本文将详细讲解如何在 Cocos Creator(2.x / 3.x)项目中接入穿山甲(Pangle)广告 SDK ,并支持 Android / iOS / Web(三端)。内容包含:

  • 接入流程
  • 原生层封装
  • JS/TS 调用桥接
  • 激励视频 / 插屏 / Banner 示例
  • 架构设计建议

一、整体架构

1.1 三端接入结构

复制代码
          Cocos Creator (TS/JS)
                  │
          JSB / Bridge 层
        ┌───────────────┐
        │               │
   Android(Java)    iOS(Objective-C)
        │               │
        └──── 穿山甲 SDK(Pangle) ────┘

           Web 端(H5)
                │
           穿山甲 Web SDK

1.2 核心思路

  • 原生端:封装广告能力
  • Cocos:统一调用接口
  • 通过事件回调处理广告结果

二、准备工作

2.1 注册穿山甲平台

  • 创建应用
  • 创建广告位(激励视频 / Banner / 插屏)
  • 获取:
    • AppID
    • 广告位ID(CodeId)

三、Android 接入

3.1 导入 SDK

在 proj.android 中:

复制代码
implementation 'com.pangle.cn:ads-sdk:5.6.0.0'

3.2 初始化 SDK

java 复制代码
TTAdConfig config = new TTAdConfig.Builder()
    .appId("你的AppID")
    .useTextureView(true)
    .appName("YourGame")
    .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)
    .build();

TTAdSdk.init(context, config);

3.3 激励视频封装

java 复制代码
public class AdManager {

    public static void showRewardAd(Activity activity, String codeId) {
        AdSlot adSlot = new AdSlot.Builder()
                .setCodeId(codeId)
                .setSupportDeepLink(true)
                .setRewardName("金币")
                .setRewardAmount(100)
                .build();

        TTAdNative adNative = TTAdSdk.getAdManager().createAdNative(activity);

        adNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() {
            @Override
            public void onRewardVideoAdLoad(TTRewardVideoAd ad) {
                ad.showRewardVideoAd(activity);
            }

            @Override
            public void onError(int code, String msg) {
                sendToCocos("ad_error");
            }
        });
    }
}

3.4 回调到 Cocos

java 复制代码
public static void sendToCocos(String msg) {
    Cocos2dxJavascriptJavaBridge.evalString(
        String.format("window.onAdCallback('%s')", msg)
    );
}

四、iOS 接入

4.1 安装 SDK

ruby 复制代码
pod 'Ads-CN', '~> 5.6.0.0'

4.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 回调 JS

复制代码
NSString *js = @"window.onAdCallback('reward_success')";
se::ScriptEngine::getInstance()->evalString([js UTF8String]);

五、Web 端接入

5.1 引入 SDK

html 复制代码
<script src="https://sf16-muse-va.ibytedtos.com/obj/ad-tetris-site/pangle_sdk.js"></script>

5.2 使用示例

jsx 复制代码
pangle.init({
  appId: '你的AppID'
});

function showReward() {
  pangle.showRewardVideo({
    codeId: '广告位ID',
    onClose: (res) => {
      if (res.isEnded) {
        window.onAdCallback('reward_success');
      }
    }
  });
}

六、Cocos Creator 统一封装(TS)

6.1 广告管理器

tsx 复制代码
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 回调处理

tsx 复制代码
(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 架构建议

复制代码
AdManager(TS)
   ↓
NativeBridge
   ↓
Platform AdManager(Java / OC)

8.2 建议

  • 所有广告走统一入口
  • 加缓存(预加载广告)
  • 控制频率(避免封号)

九、总结

接入穿山甲 SDK 的核心就是三点:

  1. 原生层正确初始化
  2. JSB 通信打通
  3. 统一 TS 管理

完成后即可实现:

  • 激励视频
  • 插屏广告
  • Banner

并支持三端统一逻辑。

相关推荐
Industio_触觉智能3 天前
RK3506 Buildroot系统目录地图-上|7个关键符号链接与构建产物全解析
嵌入式硬件·sdk·智能硬件·固件·瑞芯微·系统编译·rk3506
todoitbo7 天前
启元机器人 Q1 SDK 接口实操:构建 aimdk_msgs 并用 ROS 2 本地 Mock 验证 Service 与 Topic
ai·机器人·二次开发·sdk·启元
兜里只有三分钱~8 天前
从 URDF 到 SDK:开发者视角拆解启元 T1/Q1 机器人架构
机器人·sdk·仿真·ros2·urdf
艾莉丝努力练剑10 天前
【AI大模型接入SDK】ChatServer问题修复
c++·学习·ai·大模型·sdk
艾莉丝努力练剑11 天前
【AI大模型接入SDK】ChatServer接口测试
网络·c++·人工智能·学习·ai·大模型·sdk
Industio_触觉智能13 天前
瑞芯微RK系列调试工具与量产测试手册-上|串口日志打通与JTAG兜底调试
linux·sdk·jtag·瑞芯微·调试工具·rk3576·量产调试
less_1213816 天前
鸿蒙 WPS Open SDK 二开复盘:从注册、打开到回传的完整能力链
服务器·sdk·harmonyos·wps·鸿蒙开发
承渊政道20 天前
启元Q1机器人SDK实操:跑通触摸消息,用ROS 2图形界面完成调试与模型展示
机器人·sdk·具身智能·应用开发·ros 2·启元q1
体验家20 天前
智能家居SDK反馈收集:体验家如何打通App与设备使用体验
智能家居·sdk·客户反馈
鸽芷咕22 天前
从环境搭建到敬礼动作:启元 Q1 SDK 全流程实战与 8 个实测坑排查手册
数据库·ai·机器人·sdk·启元q1