设备标识与计费
FortressFlag 按设备计费,而不是按应用:模型是,一部手机跑着你的三个应用,算一个席位,而不是三个。本页解释让这一点成立的那个标识,它对你的账单意味着什么,以及那些平台事实——包括“一个席位”这个承诺在哪里需要你做设置、在哪里还不成立——你会希望在它们变成账单上的一个数字之前就知道。
一个席位就是一台月活设备
Section titled “一个席位就是一台月活设备”你一个月的用量,是那个自然月(UTC)内、跨你所有环境和应用、请求过 flag 的不同设备的数量。一台轮询一次的设备算一次;一台轮询一万次的设备也算一次。高效的轮询不会抬高你的账单,安静的月份花得更少。
标识是签发出来的,不是推导出来的
Section titled “标识是签发出来的,不是推导出来的”你的某个应用第一次在一台设备上启动 SDK 时,SDK 会签发一个随机标识符——dev_ 后面跟 22 个字符——并把它存在设备上。整个标识就是这么多:
- 随机,绝不推导。它不是广告 ID,不是硬件序列号,也不是关于你用户的任何东西的哈希。它无法被反推成一个人,也不会把不同厂商应用之间的活动关联起来。在 GDPR 下它是一个假名化标识符——我们把它当作个人数据对待,而它的设计是让一个标识符所承载的信息尽可能少。
- 每台设备稳定。在 iOS 上,你的应用可以通过一个共享的 keychain 访问组共用一个标识,这样一部 iPhone 上你的三个应用算一台设备——按设备计费的承诺,由结构本身保证。在 Android 上,标识目前是按应用的:你的每个应用各自签发自己的标识,分开计数。
- 可重置。每个 SDK 都暴露一个重置操作,删除并重新签发标识——这是该标识符的擦除路径。诚实的后果是:重置之后,这台设备会被算作一台新设备。
模拟器会被服务,但绝不计费
Section titled “模拟器会被服务,但绝不计费”在模拟器或仿真器里运行的构建,签发的是 sim_ 标识。FortressFlag 像对真实设备一样向它们提供 flag,并且把它们完全排除在计量之外——你团队的模拟器、你的 CI、你的自动化浏览器测试,永远不会花掉你一个席位。(在 Web 上,通过 navigator.webdriver 表明身份的自动化浏览器会得到 sim_ 标识——你的 Playwright 和 Cypress 测试套件都在覆盖范围内。)
你的用量页面会显示每天真实流量与模拟器流量的比例,所以一个配置错误、把模拟器当设备计费——或者把设备伪装成模拟器——的构建是看得见的,不会悄无声息。
平台事实,直白地说
Section titled “平台事实,直白地说”每个平台都会尽平台所允许地持久保存这个标识,而没有哪个平台允许永远保存。以下是你实际会观察到的后果:
- iOS:标识存在 keychain 里,并且在应用卸载后仍然保留。它从不同步到 iCloud——一个跟着备份跑到第二部 iPhone 上的标识,会把一台设备算成两台。
- Android:标识在你的应用被卸载时被清除——重新安装会签发一个新标识,也就是一台新的计费设备。一个平台事实,已经计入价格。
- Web:标识存在浏览器按源隔离的存储里。隐私/无痕窗口会签发一个一次性标识,在那个会话期间算一台设备;用户清除站点数据之后也是一台新设备。另外:一个人同时使用你的网站、iOS 应用和 Android 应用,最多算三台设备——每个平台一台。设计上不存在跨平台关联。
试用,以及超出额度时会发生什么
Section titled “试用,以及超出额度时会发生什么”每个试用都包含 1,000 台月活设备,而且试用不会因为时间到期——你想评估多久就评估多久。如果某个月的设备数超过了这一档,限制会分阶段到来,绝不是悬崖:
- 立即:控制台里对你团队所有人显示一条横幅。
- 超出 14 天后:控制台变为只读——flag 继续提供,只是在你购买或用量回落之前不能改动。
- 超出 28 天后:前 1,000 台之外的设备收到 flag 默认值。前 1,000 台设备全程保留真实值——你最早的用户永远不会是被降级的那一批。
购买付费方案会立刻清除以上全部限制。
我们保留什么,保留多久
Section titled “我们保留什么,保留多久”计量需要数不同的设备,所以原始设备标识符会保留 13 个月——足够一年的用量历史加上进行中的这个月——然后删除。你的用量页面显示当前周期和 12 个月的历史。传给我们支付处理商的是设备数量,永远不是设备标识符。
- Flag 如何到达你的应用——携带这个标识的那次请求
- 查看用量与账单——Owner 的用量页面
- 密钥——为设备的请求做身份验证的是什么