release: 1.0.4

This commit is contained in:
2026-06-17 15:40:25 +08:00
parent 894178a4c7
commit 5810501618
9 changed files with 483 additions and 93 deletions

View File

@@ -9,7 +9,7 @@
```json
{
"com.foldcc.cc-framework.commercialization": "http://private.lightyears.ltd:18650/foldcc/CC-Framework.Commercialization.git#1.0.15",
"com.commercialization.tapadn": "http://private.lightyears.ltd:18650/foldcc/Commercialization.tapadn.git#1.0.3"
"com.commercialization.tapadn": "http://private.lightyears.ltd:18650/foldcc/Commercialization.tapadn.git?path=/Assets#1.0.4"
}
```
@@ -73,6 +73,10 @@ ADManager.Instance.Init(callback, userId, adConfig, new TapadnAdController());
* `tapadn.rewarded_max_load_attempts`
* `tapadn.rewarded_load_retry_delay_ms`
* `tapadn.rewarded_show_timeout_ms`
* `tapadn.rewarded_scene_slot.<scene_id>`(激励视频场景广告位映射,值为对应 SpaceId
* `tapadn.rewarded_scene_slots`(激励视频场景广告位批量映射,格式 `scene_a=10001,scene_b=10002`
* `tapadn.rewarded_scene_slots_json`(激励视频场景广告位 JSON格式见下方
* `tapadn.rewarded_cache_max_age_seconds`(可选本地缓存年龄上限;默认 `600` 秒,设为 `0` 表示只使用 SDK `IsValid` 判断)
* `tapadn.interstitial_auto_load`
* `tapadn.interstitial_prewarm_on_init`
* `tapadn.interstitial_max_load_attempts`
@@ -92,6 +96,52 @@ ADManager.Instance.Init(callback, userId, adConfig, new TapadnAdController());
默认激励、插屏、开屏都使用手动 load/show如无特殊策略验证需求不建议开启 auto-ad。若要做 auto-ad AB 测试,再将对应 `*_auto_load` 设为 `true`
### 激励视频场景广告位
激励视频支持按游戏场景路由不同 TapADN SpaceId。项目层继续调用 `ADManager.EnterAdScenario(AD_Type.AwardVideo, sceneId)``ADManager.AsyncPlayAD(AD_Type.AwardVideo, sceneId, callback)`TapADN adapter 会按 `sceneId` 查表:
* 命中 `tapadn.rewarded_scene_slot.<scene_id>` 或批量配置时,使用该场景 SpaceId。
* 未传场景、场景为空、场景未配置、配置的 SpaceId 非法时,回退到 `BaseAwardAdKeyValue.value` 默认激励视频广告位。
* 手动 load/show 模式下,缓存按 SpaceId 隔离A 场景加载的激励视频不会被 B 场景误认为 ready。
单项配置示例:
```csharp
adConfig.CommonKeyValues.Add(new AdKeyValue
{
key = "tapadn.rewarded_scene_slot.level_clear",
value = "200101"
});
```
批量字符串配置示例:
```csharp
adConfig.CommonKeyValues.Add(new AdKeyValue
{
key = "tapadn.rewarded_scene_slots",
value = "level_clear=200101,daily_bonus=200102"
});
```
JSON 配置示例:
```json
{
"Mappings": [
{ "Scene": "level_clear", "SlotId": "200101" },
{ "Scene": "daily_bonus", "SlotId": "200102" }
]
}
```
生命周期策略按官方文档保持保守:
* `DirichletAdNative` 仍由每个 TapADN player 统一持有,不在每个场景重复创建。
* 手动加载返回的 `DirichletRewardVideoAd` 按 SpaceId 缓存展示关闭、展示失败、SDK `IsValid == false` 或超过 `tapadn.rewarded_cache_max_age_seconds` 后销毁。
* 官方文档没有给出固定过期秒数;本模块默认 10 分钟未消费主动销毁,同时每次 ready/show 前仍调用 SDK `IsValid`
* Android auto-ad 仍交给官方 `ShowRewardVideoAutoAd` / `PreLoad` 的 native 缓存管理iOS/Editor fallback 仍是 load 成功后立即 show不承诺 native 缓存语义。
### 智能预加载(实验)
默认会按“场景进入次数 + 场景播放请求次数”维护一个小样本统计: