Flet flet-ads PrecisionType 详解:广告付费价值精度枚举的语义与实战用法

发布时间:2026/9/21 22:53:18
Flet flet-ads PrecisionType 详解:广告付费价值精度枚举的语义与实战用法 前端跨平台桌面应用移动开发【免费下载链接】fletBuild realtime web, mobile and desktop apps in Python only. No frontend experience required.项目地址https://gitcode.com/gh_mirrors/fl/flet点击查看免费下载导读PrecisionType是 Flet 官方扩展包 flet-ads基于 Google AdMob 的 Flutter 移动端广告插件中用于描述广告付费价值报告精度的枚举类型。它在广告的on_paid付费事件中与金额、货币代码一同回传给开发者用于判断 SDK 报告的每次展示收益到底有多可信。读完本文你将掌握PrecisionType全部四个枚举值的语义、它在PaidAdEvent与BannerAd.on_paid回调中的调用链路以及如何在 Flet 移动端应用中基于精度值做收益统计与对账。PrecisionType 是什么在 types.py 中PrecisionType被定义为继承自Enum的普通枚举class PrecisionType(Enum): Describes how accurately a paid ad value is reported. UNKNOWN unknown An ad value with unknown precision. ESTIMATED estimated An ad value estimated from aggregated data. PUBLISHER_PROVIDED publisherProvided A publisher-provided ad value, such as manual CPMs in a mediation group. PRECISE precise The precise value paid for this ad.它只有一个文档字符串级别的说明描述一个广告付费价值被报告的准确程度。也就是说它本身不携带金额而是给金额打标签回答这样一个问题SDK 报给我的这条收益数字到底有多精确从源码结构看PrecisionType的取值直接对齐 AdMob/Google Mobile Ads 原生 SDK 对onPaidEvent中precision参数的定义PrecisionType枚举与 google_mobile_ads Flutter 包同名flet-ads 的 Flutter 侧实现直接复用了该类型详见下文调用链路一节。四个枚举值的完整语义枚举成员字符串值含义典型场景UNKNOWNunknown精度未知的广告价值广告平台未提供任何精度信息时ESTIMATEDestimated由聚合数据估算出的广告价值基于历史数据、市场均价估算的收益PUBLISHER_PROVIDEDpublisherProvided发布商自己提供的广告价值例如在聚合平台mediation group中手工配置的 CPMPRECISEprecise本次广告实际支付的精确价值实时竞价/精确结算数据判断精度高低的核心规律是PRECISE是最可信的结算级数据ESTIMATED是估算值PUBLISHER_PROVIDED是人工配置值UNKNOWN无法确定。如果你的业务需要用广告收益做财务对账只有PRECISE应当进入精确账目ESTIMATED与PUBLISHER_PROVIDED适合做趋势分析或粗略预估。PrecisionType 的载体PaidAdEventPrecisionType并不是孤立存在的它的实际使用场景是on_paid付费事件。在 types.py 中定义了承载该事件的PaidAdEvent数据类dataclass class PaidAdEvent(ft.Event[ft.EventControlType]): value: float # 本次广告的货币金额 precision: PrecisionType # 该金额的精度 currency_code: str # 金额的货币代码如 USD三个字段的职责非常清晰valuefloat本次广告的货币价值。注意 Flutter 侧上报时单位是微单位micros即1_000_000微单位等于 1 个货币单位换算时需要注意precisionPrecisionType描述value的准确程度currency_codestrISO 4217 货币代码如USD、EUR用于正确解读金额。PaidAdEvent从ft.Event派生因此它符合 Flet 的事件回调约定——事件处理器可以拿到携带这些字段的事件对象。事件处理器on_paid 与精度使用PrecisionType通过on_paid事件处理器暴露给开发者。在 banner_ad.py 中on_paid: Optional[ft.ControlEventHandler[PaidAdEvent[BannerAd]]] None Called when this ad is estimated to have earned money. Available for allowlisted accounts only. 两点关键信息适用范围on_paid挂在BannerAd上原生广告NativeAd继承自BannerAd同样具备该能力但注释明确标注Available for allowlisted accounts only仅对白名单账户开放。也就是说不是所有 AdMob 账户都能收到付费事件需要 Google 审核/白名单授权这一点在接入时务必注意触发时机当广告被估算为产生收益时触发——这个措辞与ESTIMATED枚举值的语义完全呼应事件本身不保证金额是结算级的具体可信度要靠precision字段判断。在事件回调中读取精度在 Flet 应用中最典型的使用方式是在on_paid回调中读取e.data并解析PrecisionTypeimport flet as ft import flet_ads as fta def main(page: ft.Page): def on_paid(e: ft.Event[fta.PaidAdEvent[fta.BannerAd]]): data e.data precision fta.PrecisionType(data[precision]) print(fvalue{data[value]}, precision{precision}, currency{data[currency_code]}) if precision fta.PrecisionType.PRECISE: # 仅对精确值记账用于财务对账 pass page.add( fta.BannerAd( unit_idca-app-pub-3940256099942544/9214589741, # Android 测试 ID width320, height50, on_paidon_paid, ) ) ft.run(main)参考仓库中的完整示例 banner_ad_and_interstitial_ad/main.py可以看到BannerAd其它生命周期回调on_load、on_error、on_open、on_close、on_impression、on_click、on_will_dismiss与on_paid的并列使用方式。调用链路从 Flutter 到 Python 的精度传递PrecisionType虽然定义在 Python 侧但它的数据来源是 Flutter 的 google_mobile_ads 插件。flet-ads 的 Flutter 实现 banner.dart 中onPaidEvent: (ad, double valueMicros, PrecisionType precision, String currencyCode) { widget.control.triggerEvent(paid, { value: valueMicros, precision: precision.name, currency_code: currencyCode }); },链路可以概括为AdMob 原生 SDK 通过 google_mobile_ads 插件触发onPaidEvent携带valueMicros、PrecisionType precision、currencyCode三个参数Flutter 侧将precision.name即枚举成员的字符串值如precise与金额、货币代码一起通过triggerEvent(paid, ...)序列化回传给 Python 侧Python 侧PaidAdEvent数据类接收这三个字段precision字段被反序列化为PrecisionType枚举成员。注意precision.name对应 Python 枚举成员名如UNKNOWN、ESTIMATED、PUBLISHER_PROVIDED、PRECISE因此事件数据中的precision键值是成员名而非__all__中可见的字符串值。使用前提与平台限制PrecisionType所服务的on_paid事件仅在满足以下条件时才有意义仅限移动端flet-ads 只支持 Android 与 iOS见 README.md 的平台支持表格Windows/macOS/Linux/Web 均不支持。在 base_ad.py 的before_update中非移动平台会直接抛出FletUnsupportedPlatformException需要有效广告单元 IDBaseAd.unit_id是必填字段。开发调试时可用 AdMob 官方测试 IDAndroid 横幅广告ca-app-pub-3940256099942544/9214589741iOS 横幅广告ca-app-pub-3940256099942544/2435281174见 banner_ad.py生产环境必须替换为真实 ID账户白名单on_paid仅对 AdMob 白名单账户开放普通账户即使代码正确也可能收不到付费事件。小结PrecisionType是 flet-ads 中体积最小但语义最精炼的类型之一四个枚举值UNKNOWN、ESTIMATED、PUBLISHER_PROVIDED、PRECISE定义了广告付费价值精度的全部可能状态。它随PaidAdEvent通过BannerAd.on_paid事件回传从 Flutter 原生层一路传递到 Python 层是开发者判断广告收益数据可信度的唯一依据。接入时只需记住先确认账户在白名单内再在on_paid回调中读取precision字段并据此决定收益数据的用途精确记账还是趋势预估。赞分享前端跨平台桌面应用移动开发【免费下载链接】fletBuild realtime web, mobile and desktop apps in Python only. No frontend experience required.项目地址https://gitcode.com/gh_mirrors/fl/flet点击查看免费下载相关推荐OmX 项目 Wiki 知识层实战指南为 Agent 构建可提交、可检索的 Markdown 知识库OmX 项目 Wiki 知识层实战指南为 Agent 构建可提交、可检索的 Markdown 知识库 导读 OmXOh My codeX为 Agent 会前端跨平台桌面应用移动开发PyPTO VF 枚举类型全解析MaskPattern、MergeMode、LoadDist 等 18 个枚举的语义与实战用法PyPTO VF 枚举类型全解析MaskPattern、MergeMode、LoadDist 等 18 个枚举的语义与实战用法 导读 PyPTOParall人工智能编译器模型编译高性能计算深度学习CANNflet-ads 从 0.1.0 到 0.86.0在 Flet 移动应用中集成 Google Ads 与 UMP 用户同意管理flet ads 从 0.1.0 到 0.86.0在 Flet 移动应用中集成 Google Ads 与 UMP 用户同意管理 flet ads 是 Flet前端跨平台桌面应用移动开发上一篇MAA自动化助手明日方舟代肝日常一键跑完公招、基建与打本下一篇League Akari英雄联盟本地效率工具自动选人、战绩分析、日常自动化一键托管创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询