Apple 挽留訊息 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 App 都有賣訂閱:Solys 是社群網路封鎖工具,TradaZen 是交易模擬器,Nolera 是 AI 試穿 App,另外還有 Vigie。我在 2026 年 10 月 25 日幫這四個 App 申請了 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 適用於有賣自動續訂型訂閱的 App。不是只有大廠才能用:RevenueCat 在一份分析 2,200 萬則訊息的研究裡提到,小型 App 也可以申請。
4 種訊息類型
| 類型 | 訂閱者看到什麼 | 預設訊息 | 即時 |
|---|---|---|---|
| 文字 | 一個標題、一段文字、最多五個項目符號 | 可以 | 可以 |
| 文字加圖片 | 同上,再加一張圖片 | 可以 | 可以 |
| 變更方案 | 一段文字,加上同一群組的另一個訂閱 | 不行 | 可以 |
| 促銷優惠 | 一段文字,加上以折扣價繼續訂閱的優惠 | 不行 | 可以 |
根據訊息準備那一頁,預設訊息只能是文字,可以加或不加圖片。用 API 的話,要提供優惠或其他方案,就必須即時回應。 至於 App Store Connect 預告的模組,則可以不用伺服器就顯示附帶優惠的訊息。
促銷優惠就是你在 App Store Connect 建立的那種。根據促銷優惠的說明文件,它針對的是現有和過去的訂閱者。根據訊息準備那一頁,在挽留訊息裡,優惠是由你的伺服器簽署。變更方案則是推薦同一群組的訂閱。如果你對這些優惠還不熟,先看我寫的優惠代碼與促銷優惠指南。
能顯示什麼:精確的限制
| 項目 | Apple 的限制 |
|---|---|
| 標題 | 最多 66 個字元 |
| 文字 | 最多 144 個字元 |
| 項目符號 | 最多 5 個 |
| 全寬圖片 | 不透明的 PNG,寬 3,840 px,高 160 到 2,160 |
| 項目符號圖片 | 1,024 × 1,024 px |
| 每個 App 的圖片 | 最多 2,000 張 |
長度限制來自上傳訊息的請求內容說明,格式則來自上傳圖片那一頁。Apple 也要求圖片在淺色和深色模式下都要好看。
每則訊息和每張圖片都會經過 Apple 審核。狀態會從 PENDING 變成 APPROVED,系統只會顯示已核准的內容。在 sandbox 裡會自動核准。文件訂了一條很明確的內容規則:不能放任何誤導或不正確的內容。
要符合的條件
- 每個產品、每個語言都要有一則預設訊息。 沒有的話,那個語言就什麼都不會顯示。你的伺服器沒回應時,它也是備援。
- 訊息和圖片都要先核准,才能上線。
- 即時模式需要夠快的伺服器。 設定即時網址那一頁要求有效的 SSL 憑證、TLS 1.2,正式環境要在 700 ms 內回應。超過就算請求失敗,改顯示預設訊息。
- 在 sandbox 通過效能測試,才能登記正式環境的網址。
- 檢查 App。 Apple 的每個請求都帶有 App 的識別碼
appAppleId。如果跟你的不符,Apple 要求你不要回應。
即時請求會給你原始交易的識別碼、產品,以及裝置的語言。要顯示哪則訊息,由你依自己的規則決定。
設定 Retention Messaging:三種做法
| 做法 | 適合誰 | 需要什麼 |
|---|---|---|
| App Store Connect 模組 | 所有人(推出之後) | 不用寫程式;文字、圖片或優惠 |
| API,搭配自己的伺服器 | 有後端的人 | Apple 核准、HTTPS 網址、效能測試 |
| API,透過 RevenueCat | 已經在用 RevenueCat 的 App | Apple 核准、在後台設定 |
如果同時有好幾種設定,Apple 在 WWDC26 場次裡說明了優先順序:先用即時回應。沒有回應或格式錯誤,就用 App Store Connect 的設定。沒有這個設定,再用透過 API 設定的預設訊息。
用自己的伺服器
- 用 Apple 的表單申請使用權。
- 先上傳圖片,再上傳訊息,每則都要有標題和文字。
- 等它們核准後,為每個訂閱、每個語言登記一則預設訊息。
- 要用即時模式,就在你的伺服器上建立
Get Retention Message網址,並在 sandbox 登記。 - 在 sandbox 用測試交易執行效能測試。
- 測試通過後,登記正式環境的網址。
用 RevenueCat
這是我選的做法:不用自己寫伺服器,而且我的 App 本來就透過 RevenueCat,這部分我在 RevenueCat 與 iOS App 內訂閱裡有寫。根據 RevenueCat 的文件:
- 在 Apple 的表單裡,要填的網址是 RevenueCat 在你 App Store App 設定裡顯示的那一個。
- 核准後,打開 Lifecycle,再進 Retention,接上 sandbox 網址。
- 用一個有效的 sandbox 或 TestFlight 訂閱執行效能測試。最多可能要一個小時。
- 先建立預設訊息,一個語言一個語言來。
- 接著加上即時訊息和規則。其中一條「Is in free trial」是針對正在免費試用的人。
- 切到正式環境:sandbox 的設定不會帶過去,訊息要重新建立。
寫一則能留住人、但不設陷阱的訊息
文字是固定的,而且顯示前要經過 Apple 審核。所以它不能提到正在看的人是誰,也不能提到是哪一天看的。下面是我幫 TradaZen 準備的預設訊息(原文是法文,字元數也是法文版的):
標題(57 個字元):
你想學會交易,現在卻要摸黑上路?
文字(127 個字元):
沒有練習,每個錯誤都由你的真錢買單。在這裡,犯錯不用花一毛錢。你的連續紀錄、聯賽和課程都會停止。
我替四個 App 訂下的規則:
- 標題把對方帶回自己的目標,用問句的方式。不讓對方覺得丟臉。
- 文字精確說出什麼會停止。 資料還在的時候,我寫的是存取權會「鎖住」,絕不說資料會被「刪除」。
- 不用任何時間用語,像是「明天」或「今天」:同一段文字可能在訂閱期間的任何時候出現。
- 不承諾任何收益,也不製造假的急迫感。有一版標題承諾靠交易改變人生,送出前就被我刪掉了。Guideline 5.6 禁止任何操弄性的做法,TradaZen 的付費牆就曾因此被拒,我在 Guideline 5.6 與付費牆裡寫過這件事。
- 每個語言都有自己的文字,用翻譯後 App 的用詞,字元數一個一個算清楚。
TradaZen 我還打算做一則即時訊息,給正在試用年訂閱的人。它會推薦同一群組裡比較便宜的年訂閱方案,因為我的數據顯示這些人用 App 的程度跟付費用戶差不多:他們拒絕的是價格。這個設定還在等 Apple 核准。
可以期待什麼效果
別指望奇蹟。Apple 把到了確認頁面後仍保留訂閱的人所占的比例,稱為挽回率。在 WWDC26 場次裡,Apple 說採用 Retention Messaging 的訂閱,挽回率平均提升 1.4 個百分點。附帶促銷優惠的訊息效果最好,提升了 5.5 個百分點,而且每個開發者的結果都不一樣。另一方面,RevenueCat 的研究發現,訂閱者只接受了大約 1.1% 的促銷優惠和 0.6% 的方案變更。
所以這則訊息取代不了前面的功夫。一分鐘內就被取消的免費試用,關鍵在付費牆和頭幾次使用:原因和可以下手的地方都寫在我的免費試用被取消指南裡,建立試用的方式則在推出優惠那篇。
先把訂閱準備好,再來寫訊息
iOS & Android Kit 以我自己 App 的起始程式碼為基礎:新手引導、付費牆和訂閱都已經寫好,四個步驟的流程會帶你一路走到 App Store,速度由你決定。從 App Store Connect 的產品到付費牆,整條流程都寫在 iOS App 內訂閱這一頁。
如果你正在準備第一次上架,來做免費的診斷:它會告訴你專案真正卡在哪裡,還會寄給你我的 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 預告的模組不用寫程式就能設定。

