uniapp 如何导入穿山甲sdk实现广告功能

在uniapp中如何正确导入穿山甲SDK来实现广告功能?我在官方文档中没有找到具体的集成步骤,尝试直接引入Android原生SDK时遇到兼容性问题。请问有没有详细的教程或可行的方案?需要特别注意哪些配置和权限设置?希望有经验的朋友能分享下具体的实现流程和常见问题的解决方法。

2 回复

在uniapp中导入穿山甲SDK,需先下载官方SDK,通过HBuilderX导入插件。在manifest.json中配置广告位ID,页面中调用plus.ad.createAd方法创建广告实例,并监听加载和展示事件。注意配置权限和隐私协议。


在 UniApp 中集成穿山甲 SDK 实现广告功能,需通过原生插件方式完成。以下是详细步骤和示例代码:

步骤一:获取穿山甲 SDK

  1. 访问穿山甲官网注册开发者账号,创建应用和广告位,获取 App ID 和代码位 ID。
  2. 下载 Android/iOS 原生 SDK(.aar 或 .framework 文件)。

步骤二:创建 UniApp 原生插件

  1. 在 UniApp 项目中创建 nativeplugins 目录,结构如下:

    nativeplugins/
    └── TTAdvPlugin/
        ├── android
        │   ├── libs(放置 .aar 文件)
        │   └── TTAdvModule.java(自定义模块)
        ├── ios
        │   ├── Frameworks(放置 .framework)
        │   └── TTAdvModule.m(自定义模块)
        └── package.json(插件配置)
    
  2. Android 配置示例(TTAdvModule.java):

public class TTAdvModule extends UniModule {
    private TTAdNative mTTAdNative;
    
    @UniJSMethod
    public void initSdk(UniJSCallback callback) {
        TTAdManager manager = TTAdSdk.init(context, new TTAdConfig.Builder()
            .appId("你的APP_ID")
            .build());
        mTTAdNative = manager.createAdNative(context);
        callback.invoke("SDK初始化成功");
    }
    
    @UniJSMethod
    public void showRewardVideo(UniJSCallback callback) {
        AdSlot adSlot = new AdSlot.Builder()
            .setCodeId("你的代码位ID")
            .build();
        mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() {
            @Override
            public void onError(int code, String message) {
                callback.invoke("广告加载失败:" + message);
            }
            @Override
            public void onRewardVideoAdLoad(TTRewardVideoAd ad) {
                ad.showRewardVideoAd(activity);
                callback.invoke("广告展示成功");
            }
        });
    }
}
  1. iOS 配置示例(TTAdvModule.m):
@implementation TTAdvModule
- (void)initSdk:(UniModuleKeepAliveCallback)callback {
    [TTAdSDKManager startWithAppId:@"你的APP_ID"];
    if(callback) callback(@"SDK初始化成功", NO);
}

- (void)showRewardVideo:(UniModuleKeepAliveCallback)callback {
    BURewardedVideoModel *model = [[BURewardedVideoModel alloc] init];
    BURewardedVideoAd *ad = [[BURewardedVideoAd alloc] initWithSlotID:@"你的代码位ID" rewardedVideoModel:model];
    [ad loadAdData];
    ad.rewardedVideoDidVisible = ^{
        if(callback) callback(@"广告展示成功", NO);
    };
}
@end

步骤三:注册插件配置(package.json)

{
  "name": "TTAdvPlugin",
  "id": "TTAdvPlugin",
  "version": "1.0.0",
  "description": "穿山甲广告插件",
  "_platforms": ["android", "ios"]
}

步骤四:在 UniApp 中调用

// 在 vue 页面中使用
const ttAdvModule = uni.requireNativePlugin('TTAdvPlugin');

export default {
  methods: {
    initSDK() {
      ttAdvModule.initSdk(res => {
        console.log(res);
      });
    },
    showAd() {
      ttAdvModule.showRewardVideo(res => {
        uni.showToast({ title: res });
      });
    }
  }
}

注意事项:

  1. 需在 manifest.json 中声明插件:
    "plugins": {
      "TTAdvPlugin": {
        "version": "1.0.0",
        "provider": "你的插件ID"
      }
    }
    
  2. Android 需配置权限和混淆规则
  3. iOS 需在 AppDelegate 中初始化 SDK
  4. 真机调试时需打包自定义基座

此方案实现了激励视频广告的集成,其他广告类型(开屏、插屏、横幅等)可参考穿山甲官方文档调整代码逻辑。

回到顶部