View in English

  • Apple 开发者
    • 入门汇总

    探索“入门汇总”

    • 概览
    • 学习
    • Apple Developer Program

    及时了解最新动态

    • 最新动态
    • 开发者你好
    • 平台

    探索“平台”

    • Apple 平台
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    • App Store

    精选

    • 设计
    • 分发
    • 游戏
    • 配件
    • 网页
    • Home
    • CarPlay 车载
    • 技术

    探索“技术”

    • 概览
    • Xcode
    • Swift
    • SwiftUI

    精选

    • 辅助功能
    • App Intents
    • Apple 智能
    • 游戏
    • 机器学习与 AI
    • 安全性
    • Xcode Cloud
    • 社区

    探索“社区”

    • 概览
    • “与 Apple 会面交流”活动
    • 社区主导的活动
    • 开发者论坛
    • 开源

    精选

    • WWDC
    • Swift Student Challenge
    • 开发者故事
    • App Store 大奖
    • Apple 设计大奖
    • Apple Developer Centers
    • 文档

    探索“文档”

    • 文档库
    • 技术概述
    • 示例代码
    • 《人机界面指南》
    • 视频

    发布说明

    • 精选更新
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • Apple tvOS
    • Xcode
    • 下载

    探索“下载”

    • 所有下载
    • 操作系统
    • 应用程序
    • 设计资源

    精选

    • Xcode
    • TestFlight
    • 字体
    • SF Symbols
    • Icon Composer
    • 支持

    探索“支持”

    • 概览
    • 帮助指南
    • 开发者论坛
    • “反馈助理”
    • 联系我们

    精选

    • 《开发者账户帮助》
    • 《App 审核指南》
    • 《App Store Connect 帮助》
    • 即将实行的要求
    • 协议和准则
    • 系统状态
  • 快速链接

    • 活动
    • 新闻
    • 论坛
    • 示例代码
    • 视频
 

视频

打开菜单 关闭菜单
  • 专题
  • 所有视频
  • 关于

更多视频

  • 简介
  • 概要
  • 转写文稿
  • 代码
  • 在 App Store Connect 中探索 Retention Messaging

    探索如何利用 Retention Messaging 的强大功能,在用户取消订阅之前及时触达他们。了解如何在 App Store Connect 中设置这项功能并添加订阅优惠,同时利用 Retention Messaging API 推送实时消息和替代选项,从而鼓励用户持续订阅你的 App 或游戏。

    章节

    • 0:00 - Introduction
    • 2:38 - Retention Messaging in App Store Connect
    • 6:38 - Real-time Retention Messaging
    • 11:46 - Retention Messaging comparison

    资源

    • Interest form: Real-time Retention Messaging
    • Supporting monthly subscriptions with a 12-month commitment
    • Retention Messaging API
      • 高清视频
      • 标清视频

    相关视频

    WWDC26

    • 提升 App 在 App Store 上的表现
    • Apple App 内购买项目的新功能
  • 搜索此视频…

    在 App Store 销售自动续订 可以带来丰厚回报 但在关键时刻触达用户 也颇具挑战 例如他们考虑 取消订阅时 那个时刻是提醒用户 的最佳时机 让他们了解订阅服务 所带来的价值 我是Tori App Store服务器团队的工程师 在本视频中 我将介绍 如何留住订阅者 借助App Store Connect 中的留存消息功能 这是一项旨在帮助你 与用户建立联系的新功能 首先 我将概述 留存消息功能 以及如何在App Store Connect中进行设置 然后 我将介绍 实时留存消息 如何与App Store Connect 中的留存消息协同运作 这是我的Exercise App中的示例 展示用户取消 有效订阅的情形 取消页面向用户显示 取消订阅的影响 对于此订阅 App Store会告知用户 其家人将无法 继续使用此订阅 如果继续执行取消操作 这里是一个机会 向用户提供消息或优惠 留存消息正是为此而生 留存消息可帮助你 为取消流程增添价值 向用户展示有说服力的 价值主张消息 当他们考虑 取消订阅时 你可以使用留存消息 提醒用户 了解订阅的各项权益 或向他们提供优惠 以激励其保留订阅 留存消息支持三种不同视图 仅消息、消息加图片 或消息加优惠 你可以通过我的Exercise App 查看这三种视图的效果 此处消息以醒目方式 呈现给用户 我可以添加图片 以增加视觉吸引力 或者向用户提供 当前订阅三个月免费优惠 以Yoga+为例 为用户提供额外留存激励 留存率是保留订阅的用户 占总订阅者的百分比 这些用户在管理订阅的 取消确认页后仍选择保留 采用留存消息的订阅 平均留存率提升1.4个百分点 相当于提升了82% 其中促销优惠消息 实现了最高的留存率 提升5.5个百分点 相当于增长了223% 请注意 不同开发者 的实际效果可能有所不同 我将演示如何在App Store Connect 中设置留存消息 借助App Store Connect 中的留存消息功能 你可以为你的App 配置留存消息 并将其映射到任意订阅 你可以从素材库中 选择图片与消息一同展示 你可以配置留存优惠 与消息一同呈现给用户 此外 App Store Connect API 也将支持留存消息 允许你通过API设置 留存消息和留存优惠 要进一步了解Asset Library 请观看以下专题视频 来自WWDC26的 "提升你在App Store上的影响力" 让我们了解这是如何运作的 在App Store Connect 的订阅页面中 有一个新区域提示我 开始使用留存消息

    当我点击"开始使用"按钮时 会弹出一个模态框 让我为留存消息命名 这条消息针对我的瑜伽订阅 所以我将其命名为Yoga Message 然后点击"创建"按钮

    新视图显示了可编辑的 消息文本和图片 以及左侧的 适用订阅和优惠 右侧是留存消息的实时预览 会随编辑实时更新

    留存消息必须始终 包含消息文本 但图片和优惠均为可选项 我将继续为Yoga+订阅 创建留存消息 从文本开始 我将用英文创建消息 但你也可以选择 其他语言版本

    我将在文本框中输入 "Launching Next Month: Guided Yoga" 哇! 预览立即更新 显示了标题 我将继续添加描述 不要错过引导式瑜伽课 针对瑜伽的新指标等更多内容 请再次注意 右侧预览如何即时更新 现在我想看看 加上图片后的效果 我的Asset Library中已有图片 所以我将选择它 现在预览看起来非常棒!

    现在我需要选择 Yoga+订阅 让所有Yoga+订阅用户 都能看到这条消息 现在已选中Yoga+订阅 你也可以选择其他订阅 因为一条留存消息 可以关联多个订阅 最后 我想为符合条件的用户 添加一些优惠选项 我已设置了一些留存优惠 所以我将选择它们 以下是可能与此消息 一起显示的所有优惠 以及它们的资格条件 和可用性 App Store将自动为 符合条件的用户选择最佳优惠 因此你可以放心地为 单个订阅选择多个优惠 还需注意 当用户 符合优惠条件时 图片将被优惠内容取代

    如果你想查看 其他优惠的显示效果 可以从优惠下拉菜单中 选择其他优惠 你也可以在下拉菜单中 选择不使用优惠 以查看不带优惠的预览效果 现在来看测试部分 在沙盒中测试可验证 你的订阅实现情况 然后再进入正式环境 我很高兴告诉大家 留存消息在沙盒中可完整测试 你可以在沙盒中取消订阅时 测试留存消息 如果你配置了留存优惠 还可以验证与优惠相关的字段 是否已正确配置 存在于已签名的交易 或续订信息中

    我们还推出了留存优惠 这是留存消息的一种新优惠类型 已签名的交易 和续订信息将更新 新的offerType值为5 表示已兑换留存优惠 其他与优惠相关的字段 例如优惠标识符、优惠折扣类型 以及优惠期限 也将按预期显示 通过在App Store Connect 中设置留存消息 你正迈出重要一步 以留住你的订阅者 在订阅生命周期的 关键时刻 如果你希望更直接地 与用户互动 当他们即将 取消订阅时 你可以更进一步 使用实时留存消息 借助实时留存消息功能 你可以设置一个端点 以提供实时消息偏好 响应来自App Store的 服务器到服务器HTTP请求 借助留存消息API 你可以配置消息和图片组合 在取消流程中 向用户展示 当你收到来自App Store 的实时调用时 你可以告诉App Store 要向用户显示哪条消息 或者当App Store Connect 中已配置留存消息时 你也可以指定 App Store Connect中的某条消息作为偏好

    我可以为Yoga+订阅 创建相同的视图 使用实时留存消息 就像使用App Store Connect 中的留存消息一样

    不过 实时留存消息 还支持一种消息格式 即切换套餐格式 你可以向用户提供 另一个套餐 属于同一订阅组内 作为取消的替代方案 对于Yoga+订阅 我选择提供年度订阅 作为切换套餐

    实时留存消息由 留存消息API提供支持 这是一套服务器到服务器驱动的端点 用于管理你的消息和图片 通过在沙盒和正式环境中 使用留存消息API 我可以为Exercise App的端点 配置URL 为Exercise App设置消息 为Exercise App中的每个订阅 选择默认消息 以及上传和管理 Exercise App的图片 仅在沙盒环境中 留存消息API 支持性能测试 并提供端点以启动 性能测试并检查结果 通过性能测试是必要条件 才能在正式环境中使用 实时留存消息

    当App Store发送 实时留存消息请求时 我们将发送originalTransactionId 以帮助识别订阅 用户的区域设置 以确定所需的本地化语言 以及用于追踪的requestIdentifier 和其他信息 在响应实时请求时 你可以选择 三种响应格式之一 通过提供messageIdentifier 以消息或消息加图片的形式响应 来显示相应消息 我选择了一个messageIdentifier 对应我瑜伽订阅的消息 并与对应图片配对 通过提供alternateProduct 向用户提供切换套餐 通过提供messageIdentifier和productId 在同一订阅组内切换 我选择提供Yoga+的 年度套餐作为切换选项

    或者通过提供促销优惠 向用户赠送优惠 通过提供messageIdentifier 和promotionalOfferSignature 我选择提供我的promotionalOffer 即Yoga+ 3个月免费 关于每种情况下 所需提供的详细信息 其他支持的场景 以及API的其余部分 可在本专题视频资源中 链接的文档中找到 实时留存消息需要 快速且响应迅速的服务器 为确保良好的用户体验 你需要在沙盒中通过性能测试 然后才能上线正式环境 话虽如此 你的服务器 可能并不总能及时响应 若未能响应 App Store将向用户 显示兜底消息 实时留存消息始终 优先采用你的实时响应 如果该响应不可用或格式有误 App Store将首先回退 至你在App Store Connect 中配置的留存消息偏好 包括所有符合条件的优惠 如果App Store Connect中未为 你的订阅配置消息 App Store将回退至 默认消息 即通过留存消息API 配置的消息 先在沙盒中开始设置 实时留存消息 首先在沙盒中设置 所有测试消息和图片 完成后 设置你的端点 以开始接收请求 当测试人员尝试 取消订阅时 当你对沙盒中的测试 感到满意后 启动性能测试

    当性能测试通过后 在正式环境中 设置消息和图片 然后配置你的正式端点 此时你已准备好 开始响应来自App Store的请求 请记得始终保持 正式环境中的消息和图片更新

    iOS 26.5推出了 含12个月承诺的月度订阅 对于这种新计费计划类型 实时留存消息API 也进行了更新 以支持将此计划类型作为切换套餐 只需在你的alternateProduct选择中 提供billingPlanType字段 在你对App Store的响应中 即可通过留存消息 向用户提供此套餐 有关含12个月承诺 月度订阅的更多信息 请查看WWDC26专题视频 "Apple App内购买项目的新功能" 实时留存消息 是一个强大的工具 在快速且响应迅速的服务器 支持下表现最佳 让我们将其与 App Store Connect中的留存消息进行比较 以帮助你找到 适合你用例的方案

    App Store Connect中的留存消息 与实时留存消息 之间的关键区别 在于决策机制 一旦在App Store Connect中 为你的订阅设置了留存消息 App Store将向用户展示消息 以及任何适用的优惠 无需你进一步参与 而借助实时留存消息 你可以实时决定向每位用户 展示什么内容 App Store Connect中的留存消息 和实时留存消息 都允许你配置消息和图片 但两者的 实现机制有所不同 对于App Store Connect 中的留存消息 可以通过App Store Connect 或App Store Connect API完成 对于实时留存消息 必须通过留存消息API 以服务器到服务器的方式完成 两种框架均支持优惠 App Store Connect 需要与你的订阅关联 特定的留存优惠 而实时留存消息 允许你使用促销优惠 因此你可以实时选择 要提供的优惠 促销优惠仍需签名 用于留存消息时 App Store Connect留存消息 支持三种视图 消息、图片或优惠 实时留存消息 也支持同样的三种视图 并额外支持切换套餐视图

    App Store Connect中的 留存消息是理想选择 如果你没有服务器 或者你希望能够 配置好留存消息 然后让App Store决定 向用户展示什么内容 App Store Connect消息 与特定订阅绑定

    如果你有服务器并希望 自行决定向每位用户展示哪条消息 可以考虑实时留存消息 也可以考虑 实时留存消息 如果你希望使用促销优惠 更好地掌控优惠和资格条件

    实时留存消息 以 App Store Connect中的 留存消息为基础构建 你应始终考虑 在App Store Connect中设置留存消息 即便在使用实时留存消息时 也作为兜底消息 App Store Connect中的留存消息 是在订阅取消流程中 为用户提供价值的好方法 且对所有人开放 实时留存消息以 App Store Connect中的 留存消息为基础构建 如果你对 实时留存消息感兴趣 请填写意向表 链接在本专题视频的资源中 以申请访问权限 让我来总结本视频的内容 以及如何充分利用留存消息

    考虑你想在 App Store Connect中设置的留存消息类型 如需进一步了解 请查阅实时留存消息API文档 以确定它是否适合 你的App 如果你希望 使用实时留存消息 请提交意向表 以申请访问权限 感谢你的收看! 我很高兴向你介绍 留存消息功能 期待你

    在你的App中使用留存消息

    • 6:08 - Signed transaction updates

      // Signed transaction updates
      
      {
          "bundleId": "com.example.app",
          "productId": "Yoga_summer_2026",
          "type": "Auto-Renewable Subscription",
          "transactionReason": "RENEWAL",
          "inAppOwnershipType": "PURCHASED",
          "quantity": 1,
          "price": 0,
          "currency": "USD",
          "offerType": 5, // retention offer
          "offerIdentifier": "Yoga_2026_cancel_free_3m",
          "offerDiscountType": "FREE_TRIAL",
          "offerPeriod": "P3M", 
          "transactionId": "1000098916194"
          "originalTransactionId": "1000011859217",
          "appAccountToken": "23a91ca7-06f3-425f-bff6-820904b510a9",
          ...
      }
    • 7:50 - Retention Messaging API

      // Retention Messaging API: https://api.storekit.apple.com/inApps/v1/messaging
      
      // URL configuration
      PUT /realtime/url
      GET /realtime/url
      DELETE /realtime/url
      
      // Message configuration
      PUT /message/{messageIdentifier}
      DELETE /message/{messageIdentifier}
      GET /message/list
      PUT /default/{productId}/{locale}
      DELETE /default/{productId}/{locale}
      GET /default/{productId}/{locale}
      
      // Image configuration
      PUT /image/{imageIdentifier}
      DELETE /image/{imageIdentifier}
      GET /image/list
      
      // Performance testing - Sandbox only
      POST /performanceTest // initiate test
      GET /performanceTest/result/{requestId} // get results
    • 8:34 - Real-time requests

      // Real-time requests
      
      // Request from the App Store
      {
          "originalTransactionId": "123456789",
          "appAppleId": 6745974591,
          "productId": "Yoga_summer_2026",
          "userLocale": "en-US",
          "requestIdentifier": "c03248af-dd76-4e9b-9c1e-4489cd19a768",
          "environment": "Production", // or Sandbox
          "signedDate": 1780920000000
      }
    • 8:57 - Real-time requests with message

      // Real-time requests
      
      // Request from the App Store
      {
          "originalTransactionId": "123456789",
          "appAppleId": 6745974591,
          "productId": "Yoga_summer_2026",
          "userLocale": "en-US",
          "requestIdentifier": 
              "c03248af-dd76-4e9b-9c1e-4489cd19a768",
          "environment": "Production", // or Sandbox
          "signedDate": 1780920000000
      }
      
      // Your response
      {
          "message": {
              "messageIdentifier": 
                  "551ee7c0-c097-418e-9dd5-2a98533a7390"
          }
      }
    • 9:11 - Real-time request with alternate product

      // Real-time requests
      
      // Request from the App Store
      {
          "originalTransactionId": "123456789",
          "appAppleId": 6745974591,
          "productId": "Yoga_summer_2026",
          "userLocale": "en-US",
          "requestIdentifier": 
              "c03248af-dd76-4e9b-9c1e-4489cd19a768",
          "environment": "Production", // or Sandbox
          "signedDate": 1780920000000
      }
      
      // Your response
      {
          "alternateProduct": {
              "messageIdentifier":
                  "ed7f25fc-5741-46a3-8502-062e0fb8afd0",
              "productId": "Yoga_summer_2026_annual"
          }
      }
    • 9:24 - Real-time request with promotional offer

      // Real-time requests
      
      // Request from the App Store
      {
          "originalTransactionId": "123456789",
          "appAppleId": 6745974591,
          "productId": "Yoga_summer_2026",
          "userLocale": "en-US",
          "requestIdentifier": 
        "c03248af-dd76-4e9b-9c1e-4489cd19a768",
          "environment": "Production", // or Sandbox
          "signedDate": 1780920000000
      }
      
      // Your response
      {
          "promotionalOffer": {
              "messageIdentifier": 
                  "80135e2b-ae15-4ec4-8c5c-9ecc8045c0dc",
              "promotionalOfferSignatureV2": "eyJhbGciOiJFUzI…"
          }
      }
    • 0:00 - Introduction
    • Retention Messaging allows you to reach your subscribers when they are about to cancel you subscription, offering you an opportunity to save your subscribers at this critical moment.

    • 2:38 - Retention Messaging in App Store Connect
    • Retention Messaging in App Store Connect allows you to set up retention messages that are automatically delivered to your customers when they are about to cancel a subscription. You can use Asset Library and retention offers to add value to your retention messages.

    • 6:38 - Real-time Retention Messaging
    • Use real-time Retention Messaging and the Retention Messaging API to reach out to your customers in real time when they are about to cancel their subscriptions. The App Store will make a server-to-server call to your configured endpoint to get your real-time message preference.

    • 11:46 - Retention Messaging comparison
    • Compare Retention Messaging in App Store Connect and real-time Retention Messaging to determine which is the right fit for your app.

Developer Footer

  • 视频
  • WWDC26
  • 在 App Store Connect 中探索 Retention Messaging
  • 打开菜单 关闭菜单
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    打开菜单 关闭菜单
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    打开菜单 关闭菜单
    • 辅助功能
    • 配件
    • Apple 智能
    • App 扩展
    • App Store
    • 音频与视频 (英文)
    • 增强现实
    • 设计
    • 分发
    • 教育
    • 字体 (英文)
    • 游戏
    • 健康与健身
    • App 内购买项目
    • 本地化
    • 地图与位置
    • 机器学习与 AI
    • 开源资源 (英文)
    • 安全性
    • Safari 浏览器与网页 (英文)
    打开菜单 关闭菜单
    • 完整文档 (英文)
    • 部分主题文档 (简体中文)
    • 教程
    • 下载
    • 论坛 (英文)
    • 视频
    打开菜单 关闭菜单
    • 支持文档
    • 联系我们
    • 错误报告
    • 系统状态 (英文)
    打开菜单 关闭菜单
    • Apple 开发者
    • App Store Connect
    • 证书、标识符和描述文件 (英文)
    • 反馈助理
    打开菜单 关闭菜单
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program (英文)
    • Mini Apps Partner Program
    • News Partner Program (英文)
    • Video Partner Program (英文)
    • 安全赏金计划 (英文)
    • Security Research Device Program (英文)
    打开菜单 关闭菜单
    • 与 Apple 会面交流
    • Apple Developer Center
    • App Store 大奖 (英文)
    • Apple 设计大奖
    • Apple Developer Academies (英文)
    • WWDC
    阅读最近新闻。
    获取 Apple Developer App。
    版权所有 © 2026 Apple Inc. 保留所有权利。
    使用条款 隐私政策 协议和准则