菜单

SDK 导入与初始化

💡Tips

  • TaKu React Native SDK 同时支持 AndroidiOS 平台,兼容 Paper(旧架构)新架构(TurboModule + Fabric)。版本要求:react-native >= 0.68
  • 全局配置方法(日志、渠道、个性化广告、隐私合规等)建议在 ATSDK.init() 之前调用。
  • SDK 通过 RN autolinking 自动接入原生模块,绝大多数场景无需手动改原生工程;iOS 仍需执行 pod install
  • 接入前建议先跑通工程内置的 Demo

1. 源码集成

将源码拷入工程,在宿主 package.jsonlink: / file: 引用,并配置 react-native.config.js autolink,可以从这里下载Demo

2. 配置 iOS 工程

2.1 前提准备

  • 最新版本的 Xcode
  • 已安装最新版本的 CocoaPods
  • iOS 最低部署目标为 13.0

2.2 安装原生依赖

SDK 通过 podspec 声明 iOS 端原生依赖(AnyThink iOS SDK 及各广告网络适配器),autolinking 会自动引用,无需手动修改 Podfile 中的 SDK 依赖项。在工程的 ios/ 目录执行:

bash 复制代码
cd ios
pod install --repo-update

如非首次操作,遇到依赖解析问题可先删除 Podfile.lock 后重试。

2.3 更新 Info.plist

参考 SDK 下载中心 生成的配置,向 Info.plist 添加以下键:

(1)SKAdNetworkItems——按所选广告网络添加对应 SKAdNetwork ID。

(2)NSUserTrackingUsageDescription——iOS 14.5 起,访问 IDFA 需用户授权:

xml 复制代码
<key>NSUserTrackingUsageDescription</key>
<string>此处修改为您希望用户看到的权限请求描述,可本地化</string>

(3)NSAppTransportSecurity

xml 复制代码
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

(4)若勾选了 AdMob 平台,添加 GADApplicationIdentifier

xml 复制代码
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>

⚠️ 从 iOS 14.5 起,只有在获得用户明确授权(App Tracking Transparency)后,应用才可访问 IDFA。ATSDK.init() 在 iOS 14+ 内部会自动请求 ATT 授权,RN 层无需单独调用。如需自定义授权时机,请使用三方库(如 react-native-tracking-transparency)。如需适配 GDPR,请参考海外隐私配置


3. 配置 Android 工程

3.1 SDK 要求

要求
minSdkVersion 21(SDK 最低支持)
compileSdkVersion 36
targetSdkVersion 36

💡 SDK 本身要求 minSdkVersion >= 21。官方 Demo 中 minSdkVersion 24 系部分广告网络(ADN)适配器的最低要求,非 SDK 强制。请按实际接入的广告网络调整。

autolinking 会自动接入原生模块与各广告网络适配器依赖,通常无需手动修改 build.gradle

3.2 AndroidManifest 配置

若使用了 AdMob,必须在 AndroidManifest.xml 中添加:

xml 复制代码
<manifest>
    <application>
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy" />
    </application>
</manifest>

3.3 混淆配置

如开启代码混淆,在 proguard-rules.pro 中保留 SDK 桥接与原生类(按所接入广告网络补充各自的 keep 规则)。


4. SDK 初始化

在加载任何广告之前,需要先完成初始化。SDK 提供两个核心方法:

方法 说明
ATSDK.init(appId, appKey) 初始化 SDK;内部会建立事件分发通道(ATAdEvents),使各广告回调能分发到 JS
ATSDK.start() 启动 SDK(拉取策略等);须在 init 之后调用

推荐在用户同意隐私协议后、加载广告前尽早初始化。完整顺序(不可打乱):日志 → 全局监听 → 集成检测 → 个性化开关 → init → start

ts 复制代码
import { ATSDK, ATAdEvents } from '@anythink/react-native-sdk';

export function initSdk(personalized: boolean): void {
  // 1. 日志(早于 init;开发阶段开启,上线前关闭)
  ATSDK.setNetworkLogDebug(true);

  // 2. 全局事件监听(订阅各广告回调通道)
  ATAdEvents.init();

  // 3. 集成检测(验证原生依赖是否正确接入)
  ATSDK.integrationChecking();

  // 4. 个性化广告开关(PERSONALIZED=允许,NONPERSONALIZED=限制)
  ATSDK.setPersonalizedAdStatus(
    personalized ? ATSDK.PERSONALIZED : ATSDK.NONPERSONALIZED
  );

  // 5. init + start
  ATSDK.init('your app id', 'your app key');
  ATSDK.start();

  console.log('SDK 初始化完成,版本:', ATSDK.getSDKVersionName());
}

💡 ATSDK.init 内部已自动调用 ATAdEvents.init(),但在更早的启动阶段显式调用一次可确保全局监听(如统一日志面板)不漏接早期事件。重复调用是幂等的。


5. 全局 API 参考

5.1 全局配置方法(建议在 init 之前调用)

方法 说明
ATSDK.setNetworkLogDebug(boolean) 开启 / 关闭网络调试日志(同时控制 RN 层与原生层)
ATSDK.setChannel(string) 设置渠道名,用于数据分析
ATSDK.setChannelSource(number) 设置渠道来源
ATSDK.initCustomMap(Record<string, unknown>) 设置全局自定义参数(用于流量分组)
ATSDK.initPlacementCustomMap(placementId, map) 设置某广告位的自定义参数
ATSDK.setPersonalizedAdStatus(number) 设置个性化广告开关(PERSONALIZED / NONPERSONALIZED
ATSDK.integrationChecking() 触发集成自检

5.2 初始化后可用方法

方法 返回值 说明
ATSDK.start() void 启动 SDK(须在 init 之后)
ATSDK.getSDKVersionName() string 获取 SDK 版本号
ATSDK.getArea() Promise<string> 获取当前地区
ATSDK.isCnSDK() Promise<boolean> 是否为国内版 SDK
ATSDK.isNetworkLogDebug() Promise<boolean> 当前是否开启网络调试日志
ATSDK.showDebuggerUI(debugKey) void 打开 Taku 调试面板,详见测试广告

5.3 个性化广告状态常量

常量 说明
ATSDK.PERSONALIZED 0 允许个性化广告
ATSDK.NONPERSONALIZED 1 限制为非个性化广告
ATSDK.UNKNOWN 2 未知 / 未设置

6. 下一步

上一个
React Native接入指南
下一个
广告样式
最近修改: 2026-07-03Powered by