# Retention Messaging API：解約直前に表示するメッセージ

> AppleのRetention Messaging APIは、購読者が「Cancel Subscription」をタップしたときにあなたのメッセージを表示します。形式、条件、利用申請、導入手順を解説します。

元のページ：[Retention Messaging API：解約直前に表示するメッセージ](https://devoria.fr/ja/blog/apple-retention-messaging-api)
著者：[Mehdi Azizi](https://devoria.fr/ja/mehdi-azizi)
公開日：2026-11-04
内容の最終更新：2026-11-04


Retention Messaging APIは、Appleが提供するサーバー間連携のサービスです。購読者が「Cancel Subscription」をタップした瞬間に、あなたのメッセージを表示します。メッセージは解約が確定する前の確認画面に表示されます。**サブスクリプションの価値を思い出してもらったり、別のプランやプロモーションオファーを提案したりできますが、解約ボタンは必ず残ります。** APIは2025年7月から利用申請制のプレビュー版として提供されていて、AppleはApp Store Connect内で使えるよりシンプルな版を2026年秋に提供すると発表しています。

このガイドでは、APIで何が表示されるのか、いつから使えるのか、誰が使えるのか、その条件と導入手順を説明します。内容はすべてAppleのドキュメントと、このAPIを扱ったWWDC26のセッションに基づいていて、2026年11月3日に確認しました。

僕は自分のiOSアプリでサブスクリプションを販売しています。SNSブロッカーのSolys、トレードシミュレーターのTradaZen、AIで服を試着できるNolera、そしてVigieです。2026年10月25日に4つすべてのアプリでAPIの利用を申請し、全言語のメッセージを用意しました。10月28日の時点でAppleからの承認はまだ届いていません。なので、このガイドで書いているのはルールと僕の準備内容で、結果はまだありません。

## Retention Messaging APIでできること

[Appleのドキュメント](https://developer.apple.com/documentation/retentionmessaging)によると、このAPIを使うと、顧客がサブスクリプションの詳細ページを開いて解約しようとしているかもしれないときに、システムが表示するメッセージを選べます。メッセージはプロダクトごと、言語ごとに事前に用意しておきます。

流れは常に同じです。

1. 購読者がサブスクリプションを開きます。たとえばApple Accountの「Subscriptions」や、App Storeからです。
2. 「Cancel Subscription」をタップします。
3. システムがあなたのメッセージを載せた確認画面（Confirm Cancellation）を表示します。
4. 購読者はそれでも解約するか、サブスクリプションを続けるか、メッセージの提案を受け入れるかを選べます。

メッセージが表示されるのは、iOS 15.1およびiPadOS 15.1以降、visionOS 1、macOS 14以降です。

## いつから、誰が使えるのか

| 日付          | Appleによる変更内容                                    |
| ------------- | ------------------------------------------------------ |
| 2025年7月16日 | バージョン1.0：APIの最初のプレビュー版                 |
| 2025年12月9日 | リアルタイム用サーバーのパフォーマンステスト           |
| 2026年3月31日 | メッセージ内の箇条書き、APIによるリアルタイムURLの設定 |
| 2026年4月27日 | 12か月契約の月額サブスクリプションに対応               |
| 2026年6月     | WWDC26：App Store Connect内のモジュールを発表          |

日付は[APIの変更履歴](https://developer.apple.com/documentation/retentionmessaging/retention-messaging-changelog)によるもので、最後の行だけWWDC26のセッションから取っています。APIはまだプレビュー版です。ドキュメントからは[利用申請フォーム](https://developer.apple.com/contact/request/retention-messaging-api/)にリンクされていて、デベロッパアカウントへのログインが必要です。

WWDC26のセッション[Explore Retention Messaging in App Store Connect](https://developer.apple.com/videos/play/wwdc2026/309/)では、App Store Connect内でコードなしで設定できるモジュールが紹介されました。Appleはこれを「すべての人に開放する」と説明しています。一方、リアルタイム版は引き続き申請制です。[App Storeの最新情報ページ](https://developer.apple.com/app-store/whats-new/)では、このモジュールは「今秋」提供とされています。**2026年11月3日時点で、App Store Connectのヘルプにはまだこのモジュールのページがなく、10月28日の時点で僕のアカウントにも表示されていませんでした。**

APIの対象は自動更新サブスクリプションを販売しているアプリです。大手パブリッシャー専用ではありません。RevenueCatは[2,200万件のメッセージを分析した調査](https://www.revenuecat.com/blog/growth/apple-retention-messaging-benchmarks)の中で、小規模なアプリも利用を申請できると書いています。

## 4種類のメッセージ

| 種類                   | 購読者に表示される内容                           | デフォルトメッセージ | リアルタイム |
| ---------------------- | ------------------------------------------------ | -------------------- | ------------ |
| テキスト               | タイトル、本文、最大5つの箇条書き                | 可                   | 可           |
| 画像付きテキスト       | 上記に画像を加えたもの                           | 可                   | 可           |
| プラン変更             | テキストと、同じグループの別のサブスクリプション | 不可                 | 可           |
| プロモーションオファー | テキストと、割引価格で続けられるオファー         | 不可                 | 可           |

[メッセージの準備](https://developer.apple.com/documentation/retentionmessaging/setting-up-retention-messages)のページによると、デフォルトメッセージにできるのは画像の有無を問わずテキストだけです。**APIでオファーや別プランを提案するには、リアルタイムで応答する必要があります。** 一方、App Store Connectで発表されたモジュールでは、サーバーなしでオファー付きのメッセージを出せるようになります。

プロモーションオファーは、App Store Connectで作成するものです。[プロモーションオファーのヘルプ](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-promotional-offers-for-auto-renewable-subscriptions)によると、対象は現在および過去の購読者です。メッセージの準備のページによると、リテンションメッセージではオファーの署名はあなたのサーバーが行います。プラン変更では同じグループ内の別のサブスクリプションを提案します。こうしたオファーが初めてなら、まず[オファーコードとプロモーションオファー](https://devoria.fr/ja/blog/app-store-connect-offer-codes-promo-code)についての僕のガイドを読んでください。

## 表示できる内容：正確な制限

| 要素                 | Appleの制限                                |
| -------------------- | ------------------------------------------ |
| タイトル             | 最大66文字                                 |
| 本文                 | 最大144文字                                |
| 箇条書き             | 最大5つ                                    |
| 全幅画像             | 透過なしのPNG、幅3,840px、高さ160〜2,160px |
| 箇条書き用の画像     | 1,024 × 1,024px                            |
| アプリあたりの画像数 | 最大2,000枚                                |

文字数は[メッセージ送信リクエストのボディ](https://developer.apple.com/documentation/retentionmessaging/uploadmessagerequestbody)の説明から、画像の形式は[画像のアップロード](https://developer.apple.com/documentation/retentionmessaging/upload-image)のページから取っています。Appleは、ライトモードでもダークモードでも同じように見える画像も求めています。

メッセージと画像はすべてAppleが審査します。ステータスは`PENDING`から`APPROVED`に変わり、システムが表示するのは承認されたものだけです。サンドボックスでは自動的に承認されます。ドキュメントには明確なコンテンツのルールがあります。誤解を招く内容や不正確な内容は送らないことです。

## 満たすべき条件

- **プロダクトごと、言語ごとにデフォルトメッセージを1つ。** これがないと、その言語では何も表示されません。サーバーが応答しないときの保険にもなります。
- **公開前に、メッセージと画像が承認済みであること。**
- **リアルタイムには高速なサーバー。** [リアルタイムURLの設定](https://developer.apple.com/documentation/retentionmessaging/setting-up-retention-messaging-endpoint)のページでは、有効なSSL証明書、TLS 1.2、本番環境で700ms未満の応答が求められています。これを超えるとリクエストは失敗し、デフォルトメッセージが表示されます。
- **本番URLを登録する前に、サンドボックスでパフォーマンステストに合格すること。**
- **アプリの確認。** Appleからのリクエストには毎回アプリの識別子`appAppleId`が含まれます。自分のものと一致しない場合は応答しないよう、Appleは求めています。

リアルタイムのリクエストには、元のトランザクションID、プロダクト、デバイスの言語が含まれます。どのメッセージを出すかは、あなたのルールで決めます。

## Retention Messagingを導入する3つの方法

| 方法                          | 対象                         | 必要なもの                                    |
| ----------------------------- | ---------------------------- | --------------------------------------------- |
| App Store Connectのモジュール | 提供開始後は誰でも           | コード不要。テキスト、画像、オファー          |
| 自前サーバーでAPI             | バックエンドを持っている人   | Appleの承認、HTTPSのURL、パフォーマンステスト |
| RevenueCat経由でAPI           | すでにRevenueCatを使うアプリ | Appleの承認、ダッシュボードでの設定           |

複数の設定がある場合の優先順位を、AppleはWWDC26のセッションで説明しています。まずリアルタイムの応答。それがない、または形式が不正なら、App Store Connectの設定。それもなければ、APIで設定したデフォルトメッセージです。

### 自前のサーバーで導入する

1. Appleのフォームで利用を申請します。
2. 画像をアップロードし、続いてメッセージをそれぞれタイトルと本文付きで送ります。
3. 承認を待ってから、サブスクリプションごと、言語ごとにデフォルトメッセージを登録します。
4. リアルタイムを使うなら、サーバーに`Get Retention Message`のURLを作り、サンドボックスで登録します。
5. テスト用トランザクションを使って、サンドボックスで[パフォーマンステスト](https://developer.apple.com/documentation/retentionmessaging/initiate-performance-test)を実行します。
6. テストに合格したら、本番URLを登録します。

### RevenueCatで導入する

僕が選んだのはこの方法です。サーバーを書く必要がなく、僕のアプリはすでにRevenueCatを使っているからです。詳しくは[RevenueCatとiOSのアプリ内サブスクリプション](https://devoria.fr/ja/blog/revenuecat-ios-in-app-subscription-setup)で説明しています。[RevenueCatのドキュメント](https://www.revenuecat.com/docs/platform-resources/apple-platform-resources/apple-retention-messaging-api)によると、手順は次のとおりです。

1. Appleのフォームには、RevenueCatがApp Storeアプリの設定画面に表示するURLを入力します。
2. 承認後、Lifecycle、Retentionの順に開き、サンドボックスのURLを接続します。
3. 有効なサンドボックスまたはTestFlightのサブスクリプションでパフォーマンステストを実行します。最大1時間かかることがあります。
4. まずデフォルトメッセージを、言語ごとに作成します。
5. 次に、ルール付きのリアルタイムメッセージを追加します。ルールの1つ「Is in free trial」は無料トライアル中のユーザーが対象です。
6. 本番に切り替えます。サンドボックスの設定は引き継がれないので、メッセージを作り直す必要があります。

## 引き止めても、罠にはしないメッセージの書き方

テキストは固定で、表示前にAppleの審査を受けます。そのため、読んでいる人自身のことや、読んでいる日のことには触れられません。以下はTradaZen用に用意したデフォルトメッセージで、元はフランス語です。

```text
タイトル（フランス語で57文字）：
トレードを学びたかったのに、手探りに戻るんですか？

本文（フランス語で127文字）：
練習なしでは、ミスのたびに本物のお金が消えます。ここならミスは無料です。連続記録、リーグ、レッスンが止まります。
```

僕が4つのアプリで決めたルールです。

- **タイトルは、その人を自分の目標に引き戻す**問いかけにします。恥をかかせることはしません。
- **本文では、何が止まるのかを正確に書きます。** データが残る場合は、アクセスが「ロックされる」と書き、「削除される」とは絶対に書きません。
- **「明日」や「今日」のような時間を表す言葉は使いません。** 同じテキストが期間中のどのタイミングでも表示されるからです。
- **利益の約束も、偽りの緊急性も一切なし。** トレードで人生が変わると約束していた最初のタイトルは、送信前に却下しました。[ガイドライン5.6](https://developer.apple.com/app-store/review/guidelines/#5.6)は操作的な手法を一切禁じていて、TradaZenのペイウォールはすでにこの理由でリジェクトされています。その経緯は[ガイドライン5.6とペイウォール](https://devoria.fr/ja/blog/guideline-5-6-paywall-app-store-rejection)に書きました。
- **言語ごとに専用のテキストを用意します。** 翻訳済みアプリの用語に合わせ、1文字単位で数えます。

TradaZenでは、年額サブスクリプションのトライアル中のユーザー向けに、リアルタイムメッセージも予定しています。同じグループのより安い年額プランを提案するものです。僕のデータでは、この人たちは有料ユーザーと同じくらいアプリを使っているからです。拒んでいるのは価格なんです。この設定はAppleの承認待ちです。

## 期待できる効果

奇跡は期待しないでください。Appleは、確認画面まで来た購読者のうちサブスクリプションを続けた人の割合を「救済率」と呼んでいます。WWDC26のセッションでAppleは、Retention Messagingを導入したサブスクリプションでは、この率が平均1.4ポイント上がったと発表しています。最も大きな改善が見られたのはプロモーションオファー付きのメッセージで5.5ポイントですが、結果はデベロッパによって異なります。一方RevenueCatの調査では、購読者が受け入れたのはプロモーションオファーの約1.1%、プラン変更の0.6%にとどまっています。

つまり、メッセージは事前の取り組みの代わりにはなりません。開始1分で解約される無料トライアルは、ペイウォールと最初の数セッションで勝負が決まります。原因と打ち手は[解約された無料トライアル](https://devoria.fr/ja/blog/ios-free-trial-cancelled-immediately)のガイドに、トライアルの作り方は[導入オファー](https://devoria.fr/ja/blog/introductory-offer-app-store-connect-ios-free-trial)にまとめています。

## メッセージの前にサブスクリプションを整える

[iOS & Android Kit](https://devoria.fr/ja/kits/ios)は僕のアプリのスターターコードがベースです。オンボーディング、ペイウォール、サブスクリプションはすでに実装済みで、4ステップの手順に沿って、自分のペースでApp Storeまでたどり着けます。App Store Connectでのプロダクト作成からペイウォールまでの全体の流れは、[iOSのアプリ内サブスクリプション](https://devoria.fr/ja/expertise/ios-in-app-subscription)のページで解説しています。

初めてのリリースを準備しているなら、[無料診断を受けてください](https://devoria.fr/ja/diagnostic)。プロジェクトで本当につまずいている点がわかり、僕の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文字です。箇条書きを最大5つと、透過なしのPNG画像を追加できます。言語ごとに専用のデフォルトメッセージが必要です。

### Retention Messagingを使うにはサーバーが必要ですか？

デフォルトメッセージだけなら、URLをホストする必要はありません。APIを呼び出して送信・登録するだけです。RevenueCatを使えば、RevenueCatがサーバーの役割を担います。リアルタイムには700ms未満で応答するHTTPSのURLが必要です。App Store Connectで発表されたモジュールはコードなしで設定できます。


## あなたのプロジェクト

[iOS & Android Kit](https://devoria.fr/ja/kits/ios)：Claude CodeでiPhoneとAndroidのアプリを作りましょう。私のアプリのスターターコード、ストア公開までの手順、すべてのキットが揃っています。￥17,500。

[診断：あなたとiPhoneアプリの間にあるもの](https://devoria.fr/ja/diagnostic)：7つの質問、60秒。iPhoneアプリの公開を本当に妨げているもの、4ステップのロードマップ、あなたに合ったキットがわかります。
