# Retention Messaging API Apple: mesajul dinainte de anulare

> Retention Messaging API de la Apple îți afișează mesajul când un abonat apasă Cancel Subscription. Formate, condiții, acces și configurare.

Pagina originală: [Retention Messaging API Apple: mesajul dinainte de anulare](https://devoria.fr/ro/blog/retention-messaging-api-apple-mesaj-anulare-abonament)
Autor: [Mehdi Azizi](https://devoria.fr/ro/mehdi-azizi)
Publicare: 2026-11-04
Ultima revizuire a conținutului: 2026-11-04


Retention Messaging API este un serviciu Apple, de la server la server, care îi afișează mesajul tău unui abonat exact când apasă Cancel Subscription. Mesajul apare pe o pagină de confirmare, înainte ca anularea să fie validată. **Poate aminti valoarea abonamentului tău, poate propune alt plan sau o ofertă promoțională, dar butonul de anulare rămâne mereu acolo.** API-ul e în preview din iulie 2025, cu acces la cerere, iar Apple a anunțat o versiune mai simplă în App Store Connect pentru toamna lui 2026.

Ghidul ăsta explică ce afișează API-ul, de când există, cine îl poate folosi, ce condiții are și cum îl configurezi. Totul vine din documentația Apple și din sesiunea WWDC26 dedicată lui, recitite pe 3 noiembrie 2026.

Vând abonamente în aplicațiile mele iOS: Solys, un blocant de rețele sociale, TradaZen, un simulator de trading, Nolera, o aplicație de probat ținute cu AI, și Vigie. Am cerut acces la API pentru toate patru pe 25 octombrie 2026 și le-am pregătit mesajele în toate limbile lor. Pe 28 octombrie, aprobarea Apple încă nu venise: ghidul ăsta descrie deci regula și pregătirea mea, nu încă rezultate.

## Ce face Retention Messaging API

Conform [documentației Apple](https://developer.apple.com/documentation/retentionmessaging), API-ul te lasă să alegi mesajul pe care sistemul îl afișează când un client deschide pagina de detalii a unui abonament și poate se pregătește să-l anuleze. Îți pregătești mesajele din timp, pentru fiecare produs și fiecare limbă.

Parcursul e mereu același:

1. Abonatul își deschide abonamentul, de exemplu din Apple Account, Subscriptions, sau din App Store.
2. Apasă Cancel Subscription.
3. Sistemul afișează o pagină de confirmare (Confirm Cancellation), cu mesajul tău.
4. Poate anula oricum, poate păstra abonamentul sau poate accepta ce propune mesajul tău.

Mesajul se vede pe iOS 15.1 și iPadOS 15.1 sau mai nou, pe visionOS 1 și pe macOS 14 sau mai nou.

## De când există și pentru cine

| Dată         | Ce se schimbă, conform Apple                                   |
| ------------ | -------------------------------------------------------------- |
| 16 iul. 2025 | Versiunea 1.0: primul preview al API-ului                      |
| 9 dec. 2025  | Test de performanță al serverului pentru timp real             |
| 31 mar. 2026 | Bullet points în mesaje, setarea adresei de timp real prin API |
| 27 apr. 2026 | Suport pentru abonamente lunare cu angajament de 12 luni       |
| Iunie 2026   | WWDC26: anunțul unui modul în App Store Connect                |

Datele vin din [istoricul versiunilor API-ului](https://developer.apple.com/documentation/retentionmessaging/retention-messaging-changelog), în afară de ultima, luată din sesiunea WWDC26. API-ul rămâne un preview: documentația trimite la un [formular de cerere de acces](https://developer.apple.com/contact/request/retention-messaging-api/), care cere autentificarea în contul tău de developer.

La WWDC26, sesiunea [Explore Retention Messaging in App Store Connect](https://developer.apple.com/videos/play/wwdc2026/309/) prezintă un modul configurabil fără cod, în App Store Connect. Apple spune că e „deschis tuturor”. Versiunea în timp real, în schimb, rămâne la cerere. [Pagina cu noutățile App Store](https://developer.apple.com/app-store/whats-new/) anunță modulul pentru „toamna asta”. **La 3 noiembrie 2026, ajutorul App Store Connect încă nu-i dedică nicio pagină, iar modulul nu apărea în contul meu pe 28 octombrie.**

API-ul privește aplicațiile care vând un abonament cu reînnoire automată. Nu e rezervat editorilor mari: RevenueCat notează în [studiul său pe 22 de milioane de mesaje](https://www.revenuecat.com/blog/growth/apple-retention-messaging-benchmarks) că și aplicațiile mici pot cere acces.

## Cele 4 tipuri de mesaje

| Tip                 | Ce vede abonatul                                 | Mesaj implicit | Timp real |
| ------------------- | ------------------------------------------------ | -------------- | --------- |
| Text                | Un titlu, un text, până la cinci bullet points   | Da             | Da        |
| Text cu imagine     | Același lucru, cu o imagine                      | Da             | Da        |
| Schimbare de plan   | Un text și alt abonament din același grup        | Nu             | Da        |
| Ofertă promoțională | Un text și o ofertă ca să continue la preț redus | Nu             | Da        |

Conform paginii despre [pregătirea mesajelor](https://developer.apple.com/documentation/retentionmessaging/setting-up-retention-messages), un mesaj implicit poate fi doar text, cu sau fără imagine. **Cu API-ul, ca să propui o ofertă sau alt plan trebuie să răspunzi în timp real.** Modulul anunțat în App Store Connect va permite, în schimb, un mesaj cu ofertă, fără server.

Oferta promoțională e cea pe care o creezi în App Store Connect. Conform [ajutorului despre ofertele promoționale](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-promotional-offers-for-auto-renewable-subscriptions), ea vizează abonații actuali și foști. Într-un mesaj de retenție, serverul tău o semnează, conform paginii despre pregătirea mesajelor. Schimbarea de plan propune un abonament din același grup. Dacă abia începi cu ofertele astea, citește mai întâi ghidul meu despre [codurile de ofertă și ofertele promoționale](https://devoria.fr/ro/blog/offer-codes-app-store-connect-cod-promo).

## Ce poți afișa: limitele exacte

| Element                  | Limita Apple                                                       |
| ------------------------ | ------------------------------------------------------------------ |
| Titlu                    | Maximum 66 de caractere                                            |
| Text                     | Maximum 144 de caractere                                           |
| Bullet points            | Maximum 5                                                          |
| Imagine pe toată lățimea | PNG fără transparență, 3.840 px lățime, 160 până la 2.160 înălțime |
| Imagine de bullet        | 1.024 × 1.024 px                                                   |
| Imagini per aplicație    | Maximum 2.000                                                      |

Lungimile vin din descrierea [corpului cererii de trimitere a unui mesaj](https://developer.apple.com/documentation/retentionmessaging/uploadmessagerequestbody), iar formatele din pagina despre [trimiterea unei imagini](https://developer.apple.com/documentation/retentionmessaging/upload-image). Apple cere și imagini care arată la fel de bine în modul luminos și în modul întunecat.

Fiecare mesaj și fiecare imagine sunt verificate de Apple. Starea lor trece de la `PENDING` la `APPROVED`, iar sistemul afișează doar ce e aprobat. În sandbox, aprobarea e automată. Documentația pune o regulă de conținut clară: nu trimite nimic înșelător sau inexact.

## Condițiile de îndeplinit

- **Un mesaj implicit pentru fiecare produs, în fiecare limbă.** Fără el, nu se afișează nimic în limba respectivă. E și roata de rezervă dacă serverul tău nu răspunde.
- **Mesaje și imagini aprobate** înainte de orice lansare.
- **Pentru timp real, un server rapid.** Pagina despre [configurarea adresei de timp real](https://developer.apple.com/documentation/retentionmessaging/setting-up-retention-messaging-endpoint) cere un certificat SSL valid, TLS 1.2 și un răspuns în mai puțin de 700 ms în producție. Peste asta, cererea eșuează și se afișează mesajul implicit.
- **Un test de performanță reușit în sandbox**, înainte să-ți declari adresa de producție.
- **O verificare a aplicației.** Fiecare cerere de la Apple conține identificatorul aplicației, `appAppleId`. Dacă nu corespunde cu al tău, Apple cere să nu răspunzi.

Cererea de timp real îți dă identificatorul tranzacției originale, produsul și limba dispozitivului. Tu alegi mesajul, după regulile tale.

## Configurarea Retention Messaging: trei căi

| Cale                      | Pentru cine                    | Ce îți trebuie                                 |
| ------------------------- | ------------------------------ | ---------------------------------------------- |
| Modulul App Store Connect | Toată lumea, după lansare      | Zero cod; text, imagine sau ofertă             |
| API, cu serverul tău      | Cei care au un back-end        | Acces Apple, adresă HTTPS, test de performanță |
| API, prin RevenueCat      | Aplicațiile deja pe RevenueCat | Acces Apple, setări în dashboard               |

Când coexistă mai multe setări, Apple explică în sesiunea WWDC26 ordinea urmată: întâi răspunsul în timp real. Dacă lipsește sau e malformat, setarea din App Store Connect. Dacă nu există, mesajul implicit configurat prin API.

### Cu propriul tău server

1. Cere acces prin formularul Apple.
2. Trimite-ți imaginile, apoi mesajele, cu un titlu și un text pentru fiecare.
3. Așteaptă aprobarea lor, apoi declară un mesaj implicit pentru fiecare abonament și fiecare limbă.
4. Pentru timp real, creează adresa `Get Retention Message` pe serverul tău și declar-o în sandbox.
5. Pornește [testul de performanță](https://developer.apple.com/documentation/retentionmessaging/initiate-performance-test), în sandbox, cu o tranzacție de test.
6. După ce testul reușește, declară-ți adresa de producție.

### Cu RevenueCat

Asta e calea pe care am ales-o: niciun server de scris, iar aplicațiile mele trec deja prin RevenueCat, cum explic în [RevenueCat și abonamentul in-app iOS](https://devoria.fr/ro/blog/revenuecat-abonament-in-app-ios). Conform [documentației RevenueCat](https://www.revenuecat.com/docs/platform-resources/apple-platform-resources/apple-retention-messaging-api):

1. În formularul Apple, adresa de dat e cea pe care RevenueCat o afișează în setările aplicației tale App Store.
2. După aprobare, deschide Lifecycle, apoi Retention, și conectează adresa de sandbox.
3. Pornește testul de performanță cu un abonament sandbox sau TestFlight activ. Poate dura până la o oră.
4. Creează întâi un mesaj implicit, limbă cu limbă.
5. Adaugă apoi mesaje în timp real, cu reguli. Una dintre ele, „Is in free trial”, vizează persoanele aflate în perioada de probă gratuită.
6. Treci în producție: setările din sandbox nu sunt preluate, trebuie să recreezi mesajele.

## Să scrii un mesaj care păstrează abonatul fără să-l păcălească

Textul e fix și verificat de Apple înainte să fie afișat. Deci nu poate vorbi despre persoana care îl citește, nici despre ziua în care îl citește. Iată mesajul implicit pe care l-am pregătit pentru TradaZen, în franceză:

```text
Titlu (57 de caractere):
Tu voulais apprendre à trader, et tu repars à l'aveugle ?

Text (127 de caractere):
Sans entraînement, ton vrai argent paie chaque erreur. Ici, elles ne coûtent rien. Ta série, ta ligue et tes leçons s'arrêtent.
```

Regulile pe care mi le-am fixat pentru cele patru aplicații:

- **Titlul îi amintește persoanei de obiectivul ei**, sub formă de întrebare. Nu o face să-i fie rușine.
- **Textul spune exact ce se oprește.** Scriu că accesul „se blochează” când datele rămân, niciodată că vor fi „șterse”.
- **Niciun cuvânt legat de timp** precum „mâine” sau „azi”: același text se afișează în orice moment al perioadei.
- **Nicio promisiune de câștig**, nicio urgență falsă. Un prim titlu care promitea să-ți schimbi viața prin trading a fost eliminat înainte de trimitere. [Guideline 5.6](https://developer.apple.com/app-store/review/guidelines/#5.6) interzice orice practică manipulatoare, iar paywall-ul TradaZen a fost deja respins pe motivul ăsta, cum povestesc în [guideline 5.6 și paywall-ul](https://devoria.fr/ro/blog/guideline-5-6-paywall-aplicatie-respinsa).
- **Fiecare limbă are textul ei**, cu vocabularul aplicației traduse, și numărat caracter cu caracter.

Pentru TradaZen, plănuiesc și un mesaj în timp real pentru persoanele aflate în perioada de probă pe abonamentul anual. Va propune un plan anual mai ieftin din același grup, pentru că cifrele mele arată că persoanele astea folosesc aplicația la fel de mult ca cele care plătesc: prețul e cel pe care îl refuză. Setarea asta așteaptă aprobarea Apple.

## La ce să te aștepți

Nu conta pe un miracol. Apple numește rată de salvare procentul abonaților care își păstrează abonamentul odată ajunși pe pagina de confirmare. În sesiunea WWDC26, Apple anunță că abonamentele care au adoptat Retention Messaging câștigă în medie 1,4 puncte din această rată. Mesajele cu ofertă promoțională au cel mai bun câștig observat, 5,5 puncte, iar rezultatele variază de la un developer la altul. La rândul lui, studiul RevenueCat constată că abonații acceptă doar circa 1,1% din ofertele promoționale și 0,6% din schimbările de plan.

Mesajul nu înlocuiește deci munca din amonte. O perioadă de probă gratuită anulată în primul minut se decide pe paywall și în primele sesiuni: cauzele și pârghiile sunt în ghidul meu despre [perioada de probă anulată](https://devoria.fr/ro/blog/perioada-de-proba-anulata-imediat-ios), iar crearea perioadei de probă în [oferta introductivă](https://devoria.fr/ro/blog/introductory-offer-app-store-connect-perioada-proba-ios).

## Pregătește-ți abonamentul înainte de mesaj

[iOS & Android Kit](https://devoria.fr/ro/kits/ios) pornește de la codul de bază al aplicațiilor mele: onboarding-ul, paywall-ul și abonamentele sunt deja scrise, iar parcursul în patru etape te duce până în App Store, în ritmul tău. Tot lanțul, de la produsele din App Store Connect până la paywall, e descris pe pagina [abonament in-app iOS](https://devoria.fr/ro/expertise/abonament-in-app-ios).

Dacă îți pregătești prima lansare, [fă-ți diagnosticul gratuit](https://devoria.fr/ro/diagnostic): îți spune ce îți blochează cu adevărat proiectul și îți trimite checklist-ul meu anti-respingere Apple.

## Întrebări frecvente

### Ce este Retention Messaging API de la Apple?

E un serviciu de la server la server care alege mesajul afișat unui abonat când apasă Cancel Subscription. Mesajul apare pe o pagină de confirmare, înainte de anulare. Poate aminti valoarea abonamentului, poate propune alt plan sau o ofertă promoțională.

### Este Retention Messaging disponibil pentru toți developerii?

API-ul e un preview, cu acces la cerere de la Apple. La WWDC26, Apple a anunțat un modul în App Store Connect, deschis tuturor, programat pentru toamna lui 2026. La 3 noiembrie 2026, ajutorul App Store Connect încă nu-l descrie.

### Pe ce versiuni de iOS apare mesajul?

Pe iOS 15.1 și iPadOS 15.1 sau mai nou, pe visionOS 1 și pe macOS 14 sau mai nou. Pe un dispozitiv mai vechi, anularea se face fără mesaj.

### Îl împiedică mesajul pe abonat să anuleze?

Nu. Pagina de confirmare păstrează un buton de anulare. Abonatul își poate și păstra abonamentul sau poate accepta oferta ori planul propus.

### Poți propune o reducere în momentul anulării?

Da. Cu API-ul, e un mesaj cu ofertă promoțională, doar în timp real: oferta e creată în App Store Connect și semnată de serverul tău. Modulul anunțat în App Store Connect permite și el un mesaj cu ofertă. Schimbarea de plan, în schimb, propune alt abonament din același grup.

### Câte caractere are un mesaj de retenție?

Titlul are maximum 66 de caractere, textul 144. Poți adăuga până la cinci bullet points și o imagine PNG fără transparență. Fiecare limbă are nevoie de propriul mesaj implicit.

### Ai nevoie de un server ca să folosești Retention Messaging?

Pentru mesajele implicite nu ai de găzduit nicio adresă: e suficient să apelezi API-ul ca să le trimiți și să le declari. Cu RevenueCat, el joacă rolul serverului. Timpul real cere o adresă HTTPS care răspunde în mai puțin de 700 ms. Modulul anunțat în App Store Connect se configurează fără cod.


## Proiectul tău

[iOS & Android Kit](https://devoria.fr/ro/kits/ios): Creează-ți aplicația de iPhone și Android cu Claude Code: codul de pornire al aplicațiilor mele, drumul până în store-uri și toate kiturile. 529 RON.

[Diagnostic: ce te desparte de aplicația ta de iPhone](https://devoria.fr/ro/diagnostic): 7 întrebări, 60 de secunde: afli ce te blochează de fapt să-ți publici aplicația de iPhone, traseul tău în 4 etape și kitul potrivit pentru tine.
