Retention Messaging API:用户取消订阅前的挽留消息
作者:Mehdi Azizi
发布于 ,10分钟
Apple 的 Retention Messaging API 会在订阅者点按 Cancel Subscription 时显示你的消息。本文讲格式、条件、权限和配置。
Retention Messaging API 是 Apple 提供的一项服务器到服务器服务。订阅者点按 Cancel Subscription 时,它会把你的消息显示给对方。消息出现在确认页面上,这时取消还没有生效。消息可以提醒用户订阅的价值,推荐另一个方案或促销优惠,但取消按钮始终都在。这个 API 从 2025 年 7 月起处于预览阶段,需要申请权限。Apple 还宣布,2026 年秋季会在 App Store Connect 中推出一个更简单的版本。
这篇指南讲这个 API 显示什么、从什么时候开始有、谁能用、有哪些条件,以及怎么配置。所有内容都来自 Apple 的文档和 WWDC26 的专题讲座,我在 2026 年 11 月 3 日重新核对过。
我的几款 iOS 应用都在卖订阅:Solys 是社交网络拦截器,TradaZen 是交易模拟器,Nolera 是 AI 试衣应用,还有 Vigie。2026 年 10 月 25 日,我为这四款应用申请了 API 权限,并用它们支持的所有语言准备好了消息。到 10 月 28 日,Apple 还没有批准,所以这篇指南写的是规则和我的准备工作,还没有实际结果。
Retention Messaging API 做什么
根据 Apple 的文档,当用户查看某个订阅的详情页、可能准备取消时,系统会显示一条消息,这个 API 让你来决定显示哪一条。消息要提前准备好,每个产品、每种语言各一份。
流程始终如下:
- 订阅者打开自己的订阅,比如在 Apple Account 的 Subscriptions 里,或者从 App Store 进入。
- 点按 Cancel Subscription。
- 系统显示确认页面(Confirm Cancellation),上面有你的消息。
- 他可以照样取消,可以保留订阅,也可以接受你的消息里提供的内容。
消息在 iOS 15.1 和 iPadOS 15.1 及以上版本、visionOS 1,以及 macOS 14 及以上版本中可见。
从什么时候开始,面向谁
| 日期 | Apple 公布的变化 |
|---|---|
| 2025 年 7 月 16 日 | 1.0 版:API 首个预览版 |
| 2025 年 12 月 9 日 | 实时服务器性能测试 |
| 2026 年 3 月 31 日 | 消息支持要点列表,可通过 API 设置实时地址 |
| 2026 年 4 月 27 日 | 支持承诺 12 个月的月度订阅 |
| 2026 年 6 月 | WWDC26:宣布 App Store Connect 中的模块 |
日期来自 API 版本日志,最后一条除外,它来自 WWDC26 讲座。这个 API 仍是预览版:文档指向一个权限申请表,需要登录你的开发者账号。
在 WWDC26 上,讲座 Explore Retention Messaging in App Store Connect 介绍了 App Store Connect 中一个无需代码就能设置的模块。Apple 称它“向所有人开放”。实时版本则仍需申请。App Store 新功能页面宣布这个模块“今年秋季”推出。截至 2026 年 11 月 3 日,App Store Connect 帮助文档里还没有关于它的页面,10 月 28 日我的账号里也没有出现这个模块。
这个 API 适用于销售自动续期订阅的应用。它不是大厂专属:RevenueCat 在一份基于 2200 万条消息的研究中指出,小应用也可以申请权限。
4 种消息类型
| 类型 | 订阅者看到的内容 | 默认消息 | 实时 |
|---|---|---|---|
| 文本 | 标题、正文,最多五个要点 | 是 | 是 |
| 带图文本 | 同上,外加一张图片 | 是 | 是 |
| 更换方案 | 一段文字和同一订阅群组中的另一个订阅 | 否 | 是 |
| 促销优惠 | 一段文字和一个以优惠价继续订阅的优惠 | 否 | 是 |
根据消息准备页面,默认消息只能是文本,可带图也可不带图。用 API 的话,提供优惠或其他方案必须走实时响应。而 App Store Connect 中即将推出的模块,可以不用服务器就显示带优惠的消息。
促销优惠就是你在 App Store Connect 里创建的那种。根据促销优惠帮助文档,它面向现有订阅者和以前的订阅者。根据消息准备页面,在挽留消息中,优惠由你的服务器签名。更换方案则推荐同一群组里的订阅。如果你刚接触这些优惠,先看我写的优惠代码和促销优惠指南。
能显示什么:准确的限制
| 元素 | Apple 的限制 |
|---|---|
| 标题 | 最多 66 个字符 |
| 正文 | 最多 144 个字符 |
| 要点 | 最多 5 个 |
| 全宽图片 | 无透明度的 PNG,宽 3840 px,高 160 到 2160 |
| 要点图片 | 1024 × 1024 px |
| 每个应用的图片数 | 最多 2000 张 |
长度限制来自发送消息的请求体说明,格式来自上传图片页面。Apple 还要求图片在浅色和深色模式下都能正常显示。
每条消息、每张图片都要经过 Apple 审核。状态从 PENDING 变成 APPROVED,系统只显示已批准的内容。在 sandbox 中会自动批准。文档的内容规则很明确:不得发送误导性或不准确的内容。
需要满足的条件
- 每个产品、每种语言都要有一条默认消息。没有它,该语言下什么都不显示。你的服务器没响应时,它也是备用方案。
- 消息和图片要先获批,才能上线。
- 实时模式需要一台快速的服务器。实时地址配置页面要求有效的 SSL 证书、TLS 1.2,生产环境中响应时间低于 700 ms。超时则请求失败,显示默认消息。
- 在 sandbox 中通过性能测试,然后才能登记生产地址。
- 校验应用。Apple 的每个请求都带有应用标识
appAppleId。如果它和你的不一致,Apple 要求你不要响应。
实时请求会给你原始交易 ID、产品和设备语言。选哪条消息,由你按自己的规则决定。
配置 Retention Messaging:三种途径
| 途径 | 适合谁 | 需要什么 |
|---|---|---|
| App Store Connect 模块 | 所有人,上线后可用 | 无需代码;文本、图片或优惠 |
| API,自建服务器 | 有后端的开发者 | Apple 权限、HTTPS 地址、性能测试 |
| API,通过 RevenueCat | 已经在用 RevenueCat 的应用 | Apple 权限、在控制台中设置 |
多种设置同时存在时,Apple 在 WWDC26 讲座中说明了优先顺序:先看实时响应。如果没有响应或格式错误,就用 App Store Connect 中的设置。如果也没有,就用通过 API 配置的默认消息。
用你自己的服务器
- 通过 Apple 的表单申请权限。
- 先上传图片,再上传消息,每条都要有标题和正文。
- 等待审核通过,然后为每个订阅、每种语言登记一条默认消息。
- 实时模式:在服务器上创建
Get Retention Message地址,并在 sandbox 中登记。 - 在 sandbox 中用一笔测试交易运行性能测试。
- 测试通过后,登记生产地址。
用 RevenueCat
这是我选的方式:不用写服务器,而且我的应用本来就接入了 RevenueCat,具体见 RevenueCat 与 iOS 应用内订阅。根据 RevenueCat 的文档:
- 在 Apple 的表单里,填写 RevenueCat 在你的 App Store 应用设置中显示的地址。
- 获批后,打开 Lifecycle,再进入 Retention,接入 sandbox 地址。
- 用一个有效的 sandbox 或 TestFlight 订阅运行性能测试。测试最长可能需要一小时。
- 先逐个语言创建默认消息。
- 再添加带规则的实时消息。其中一条规则“Is in free trial”针对正在免费试用的用户。
- 切换到生产环境:sandbox 的设置不会沿用,消息需要重新创建。
写一条能留住人、但不设陷阱的消息
文本是固定的,显示前要经过 Apple 审核。所以它不能提到正在看它的人,也不能提到对方看到它的那一天。下面是我为 TradaZen 准备的默认消息(原文为法语,这里是中文译文):
标题(14 个字符):
你想学会交易,却要盲目离开?
正文(48 个字符):
没有练习,你的真金白银要为每个错误买单。在这里,错误不花一分钱。你的连续记录、联赛和课程都会停止。
我给四款应用定的规则:
- 标题把用户拉回到自己的目标,用问句的形式。不让对方感到羞愧。
- 正文准确说明什么会停止。我写的是访问权限“被锁定”,因为数据还在,绝不写数据会被“删除”。
- 不用任何时间词,比如“明天”或“今天”:同一段文字会在周期内任何时候显示。
- 不承诺收益,不制造虚假紧迫感。一个承诺靠交易改变人生的初版标题,在提交前就被我放弃了。guideline 5.6 禁止任何操纵性做法,TradaZen 的付费墙就曾因此被拒,我在 guideline 5.6 与付费墙里讲过这件事。
- 每种语言都有自己的文本,用该语言版本应用里的词汇,字符数逐个核对。
对 TradaZen,我还计划为正在试用年度订阅的用户准备一条实时消息。它会推荐同一群组里更便宜的年度方案,因为我的数据显示,这些人用应用的频率和付费用户一样多:他们拒绝的是价格。这项设置还在等 Apple 批准。
能期待什么效果
别指望奇迹。Apple 把订阅者到达确认页面后仍保留订阅的比例称为挽回率。在 WWDC26 讲座中,Apple 表示,采用 Retention Messaging 的订阅,这一比率平均提高 1.4 个百分点。带促销优惠的消息提升最大,达到 5.5 个百分点,不同开发者的结果也有差异。另一方面,RevenueCat 的研究发现,订阅者只接受约 1.1% 的促销优惠和 0.6% 的方案更换。
所以这条消息替代不了前期的工作。免费试用一开始就被取消,问题出在付费墙和最初几次使用上:原因和对策见我的免费试用被取消指南,试用的创建见推介促销优惠。
先准备好订阅,再写消息
iOS & Android Kit 基于我自己应用的起步代码:引导流程、付费墙和订阅都已写好,四步流程带你按自己的节奏一路上架 App Store。从 App Store Connect 中的产品到付费墙,整条链路都写在 iOS 应用内订阅页面里。
如果你在准备第一次上架,做一次免费诊断:它会告诉你项目真正卡在哪里,并发给你我的 Apple 防拒审清单。
常见问题
Apple 的 Retention Messaging API 是什么?
这是一项服务器到服务器的服务,在订阅者点按 Cancel Subscription 时决定显示哪条消息。消息显示在确认页面上,在取消生效之前。它可以提醒订阅的价值,推荐另一个方案或促销优惠。
Retention Messaging 对所有开发者开放吗?
API 是预览版,需要向 Apple 申请权限。在 WWDC26 上,Apple 宣布 App Store Connect 中会有一个向所有人开放的模块,计划 2026 年秋季推出。截至 2026 年 11 月 3 日,App Store Connect 帮助文档还没有介绍它。
消息在哪些 iOS 版本上显示?
iOS 15.1 和 iPadOS 15.1 及以上、visionOS 1,以及 macOS 14 及以上。在更旧的设备上,取消时不显示消息。
这条消息会阻止订阅者取消吗?
不会。确认页面上始终有取消按钮。订阅者也可以保留订阅,或接受推荐的优惠或方案。
能在取消时提供折扣吗?
能。用 API 的话,就是一条促销优惠消息,只能走实时模式:优惠在 App Store Connect 中创建,由你的服务器签名。App Store Connect 中即将推出的模块也支持带优惠的消息。更换方案则是推荐同一群组里的另一个订阅。
挽留消息可以写多少字符?
标题最多 66 个字符,正文最多 144 个。你可以加最多五个要点和一张无透明度的 PNG 图片。每种语言都需要自己的默认消息。
使用 Retention Messaging 需要服务器吗?
默认消息不需要托管地址:只要调用 API 上传并登记即可。用 RevenueCat 的话,它来充当服务器。实时模式需要一个在 700 ms 内响应的 HTTPS 地址。App Store Connect 中即将推出的模块无需代码即可设置。

