Files
Commercialization.tapadn/Assets/SDK_MAINTENANCE.md
2026-06-17 15:52:26 +08:00

7.6 KiB
Raw Blame History

TapADN SDK 封装维护说明

本文记录 Commercialization.tapadn 对官方 Dirichlet/TapADN 聚合 SDK 的封装、改动和升级注意事项。维护或升级 SDK 时先读本文,再改文件。

当前 SDK 版本

官方链接:

范围 当前版本 来源 说明
Unity 聚合 SDK 4.2.5.0 官方 dirichlet_mediation_unity_4.2.5.0.unitypackage 官方资源页当前仍只提供 Unity 4.2.5.0。
Android 聚合 native AAR 4.2.7.3 官方 dirichlet_ad_mediation_4.2.7.3.zip 已单独升级 Android native 侧。
Android Pangle 7.6.1.2 官方 Android 聚合接入文档 通过 Gradle 后处理注入 Maven 依赖。
Android GDT 4.690.1560 官方 Android 聚合接入文档 通过 Gradle 后处理注入 Maven 依赖。
iOS 聚合 SDK Pod 4.2.0.1 官方 iOS 聚合版本 默认值在 DirichletMediationIOSPostProcessor,可用环境变量覆盖。

模块结构

路径 归属 维护说明
Assets/DirichletMediation 官方 Unity SDK 基础层 不再视为纯官方源码,部分文件已有本地改动。
Assets/Plugins/Android/DirichletMediation 官方 Android Unity bridge + native AAR Java bridge 当前与官方 Unity 包一致AAR 已升级到 Android native 4.2.7.3。
Assets/Plugins/Android/libs Android 本地依赖 保留 iadsdk-release-2.3.102.110.aarPangle/GDT 不再放本地 AAR改由 Maven 注入。
Assets/Tapadn_Adapter 本模块封装层 对接 CC-Framework.Commercialization,不要让业务层直接调用官方 SDK。
Assets/Samples~ 可选调试样例 不是官方 sample是本模块验证 ADManager 流程的样例。

官方源码改动清单

以下文件来自官方 Unity SDK但本仓库已经修改过。升级官方 Unity SDK 时不能直接覆盖,必须三方合并:

文件 本地改动目的
Assets/DirichletMediation/Runtime/DirichletAdTypes.cs 补齐 Unity 侧 ad handle、auto-ad fallback、事件会话保活、IsValid / Destroy 包装等桥接行为。
Assets/DirichletMediation/Runtime/DirichletMediationSdk.cs 增强 Android/iOS/noop bridge、Unity 线程派发、iOS load/init callback receiver 和平台兼容逻辑。
Assets/DirichletMediation/Editor/DirichletGradlePostProcessor.cs 改为适配 Unity 导出的 Gradle 工程注入仓库、support/glide/okhttp、Pangle/GDT Maven 依赖,避免本地 AAR 重复类。
Assets/DirichletMediation/Editor/DirichletMediationIOSPostProcessor.cs 自动生成 Podfile处理 UnityFramework target、framework/header search paths、SKAdNetwork、ATT、GDT 动态 framework 嵌入和 CocoaPods 异常兜底。

以下官方文件当前与官方 Unity 4.2.5.0 包一致,升级时可优先直接替换后验证:

文件 说明
Assets/DirichletMediation/Editor/DirichletMediationDependencies.xml EDM4U 依赖声明。
Assets/Plugins/Android/DirichletMediation/src/main/java/com/dirichlet/unity/DirichletUnityBridge.java Android Java bridge。
Assets/Plugins/Android/AndroidManifest.xml 官方基础 Manifest。
Assets/Plugins/Android/proguard-user.txt 当前为空文件。

封装层做了什么

Tapadn_Adapter 的目标是让业务项目只面对 ADManager / ADConfig / AD_Type

  1. TapadnAdControllerADConfigCommonKeyValues 解析媒体 ID、MediaKey、广告位、渠道、debug、权限、预加载和展示超时配置。
  2. TapadnCommercialization 提供创建 controller、初始化 ADManager、创建默认 ADConfig、批量写入激励场景广告位映射的便捷入口。
  3. TapadnAdRequestFactory 统一构建 DirichletAdRequest,保证 SpaceId 是正整数,并注入 UserId、奖励名、奖励数量、展示尺寸。
  4. TapadnAwardVideoPlayer 对接激励视频。手动 load/show 模式下,按 SpaceId 隔离缓存;展示关闭、展示失败、IsValid == false、或默认 600 秒未消费都会销毁缓存。
  5. TapadnInteractionPlayer 对接插屏;TapadnSplashPlayer 对接开屏。两者保持单默认广告位语义。
  6. TapadnSmartLoadOrchestrator 维护场景学习数据和智能预加载归因。当前是保守策略:默认不开启;开启后先观察用户点击广告的概率,达到阈值才自动预加载。

场景广告位规则

激励视频支持游戏场景映射不同 SpaceId

配置 key 示例
tapadn.rewarded_scene_slot.<scene_id> tapadn.rewarded_scene_slot.level_clear = 200101
tapadn.rewarded_scene_slots level_clear=200101,daily_bonus=200102
tapadn.rewarded_scene_slots_json { "Mappings": [ { "Scene": "level_clear", "SlotId": "200101" } ] }

回退规则:

  1. 未传场景、场景为空、场景未配置、配置 SpaceId 非法时,使用 BaseAwardAdKeyValue.value
  2. 如果两个场景配置到同一个 SpaceId它们共享同一个广告位缓存。
  3. 如果 A 场景 SpaceId 已加载但没展示,用户去 B 场景展示 B SpaceIdA 缓存不会被 B 消费A 会等回到 A 时复用,或超时/失效后销毁。

Android 升级步骤

  1. 查官方资源页和聚合 Android 发布记录,确认最新 Android 聚合版本、Pangle 版本、GDT 版本。
  2. 下载 dirichlet_ad_mediation_<version>.zip,校验官方 MD5。
  3. 替换 Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_*_<version>.aar
  4. 检查官方 Android 接入文档中的 Maven 依赖,更新 DirichletGradlePostProcessor 里的 PangleSdkVersionGdtSdkVersion
  5. 不要同时保留 Pangle/GDT 本地 AAR 和 Maven 依赖,否则容易出现 duplicate classes。当前策略是 Pangle/GDT 走 Maven。
  6. 搜索旧版本号,更新 GLOBAL_DESIGN.mdREADME.mdCHANGELOG.mdAssets/package.json
  7. 至少执行 dotnet build Commercialization.tapadn.sln --no-restoregit diff --check
  8. Android 真机构建仍需在消费项目里跑项目自带构建流程验证 Manifest merge、Gradle dependency resolution 和广告展示回调。

Unity SDK 升级步骤

  1. 下载官方新的 dirichlet_mediation_unity_<version>.unitypackage 并校验 MD5。
  2. 解包到临时目录,对比 Assets/DirichletMediationAssets/Plugins/Android
  3. 对“官方源码改动清单”里的 4 个文件做三方合并,不允许直接覆盖。
  4. 官方 sample 不进入默认包;如需要保留调试能力,继续放到 Samples~
  5. 检查 Android Java bridge API 是否和当前 C# bridge 匹配,重点是 load/show/destroy/isValid/auto-ad callback。
  6. 检查 iOS Pod 名称和版本是否变化,同步 DirichletMediationIOSPostProcessor 的默认版本和 search path 规则。
  7. 重新验证 Android/iOS editor compile真机展示验证至少覆盖初始化、激励 load/show/close/reward、插屏、开屏、无填充失败。

发布步骤

包根是 Assets/package.json,消费者应使用:

"com.commercialization.tapadn": "http://private.lightyears.ltd:18650/foldcc/Commercialization.tapadn.git?path=/Assets#<version>"

发布命令:

git subtree split --prefix=Assets --branch upm
git tag <version>
git push origin master upm <version>

注意:当前版本 tag 打在完整仓库 master 上,因此消费者必须带 ?path=/Assets