Add iOS support for TapADN package

This commit is contained in:
2026-06-12 16:05:13 +08:00
parent fd98a7f541
commit e554c34327
8 changed files with 661 additions and 77 deletions

View File

@@ -14,9 +14,10 @@
* `Assets/DirichletMediation`: 官方聚合 Unity SDK `4.2.5.0`,已删除官方 Sample。
* `Assets/Plugins/Android`: 官方 Android AAR、Manifest、ProGuard、本地微信 OpenSDK AAR。
* `Assets/Plugins/iOS`: 官方 iOS bridge。
* `Assets/Plugins/iOS`: iOS Objective-C++ bridge。
* `Assets/Tapadn_Adapter/Runtime/Scripts`: 商业化抽象层适配。
* `Assets/Tapadn_Adapter/Editor`: Android 构建后处理和依赖声明。
* `Assets/DirichletMediation/Editor`: Android Gradle 后处理与 iOS Xcode/CocoaPods 后处理。
* `Assets/Samples~`: 可选调试样例预留,不随主包自动进入业务项目。
## Runtime 设计
@@ -49,7 +50,7 @@
不确定点:
* 官方文档说明 auto-ad 目前主要是 Android 能力iOS auto-ad 会返回 `not_supported`。本模块保留手动 fallback真正 iOS 出包前需要用 TapADN iOS 账号和广告位做真机验证。
* 官方文档说明 auto-ad 目前主要是 Android 能力。本模块在 iOS 对激励、插屏、开屏 auto API 做 load-then-show 兼容 fallback但不承诺 Android native auto 缓存语义;真正 iOS 出包前需要用 TapADN iOS 账号和广告位做真机验证。
* `AD_Type` 抽象层没有 Banner 类型,所以本轮没有将 TapADN Banner 暴露到 `ADManager`。如果抽象层后续新增 Banner可以直接复用官方 `ShowBannerAutoAd`
## 配置设计
@@ -82,6 +83,22 @@
* 方案 B只放本地微信 AAR。风险是宿主 EDM4U 依赖图不可见。
* 当前选择:本地 AAR + `WXDependencies.xml` 同时保留。这样最接近 TopOn 当前工程,也能覆盖无 EDM4U 的构建场景。
## iOS 构建设计
保留 iOS Objective-C++ bridge并通过 `DirichletMediationIOSPostProcessor` 自动生成 Xcode 集成:
* Pod 默认版本为官方 iOS 聚合 SDK `4.2.0.1`,可用 `DIRICHLET_IOS_SDK_VERSION``EditorPrefs("Dirichlet.iOS.SDKVersion")` 覆盖。
* 所有 Dirichlet iOS Pods 放到 Unity Framework target保持 bridge、SDK、adapter 在同一二进制上下文。
* 自动补 `SKAdNetworkItems``NSUserTrackingUsageDescription``AppTrackingTransparency.framework``AdSupport.framework`
* 构建后执行 `pod install`,缺失 CocoaPods 或 Pod 源异常时让 Unity 构建失败,避免产出半配置 Xcode 工程。
* GDT 动态 framework 在 `pod install` 后嵌入 App target。
iOS runtime 桥接负责:
* 初始化时传入 `MediaId``MediaKey``MediaName``gameChannel``shakeEnabled``allowIDFAAccess``aTags`
* `RequestPermissionIfNecessary()` 在 iOS 14+ 请求 ATT。
* 加载/展示激励、插屏、开屏;展示前检查 root view controller 和 `isReady`,失败时回传 `show_error`
## 编辑器可见性
本模块不提供默认可见面板。构建自动化通过 `IPostGenerateGradleAndroidProject` 静默执行;调试能力放入 `Samples~`,由业务项目显式导入。