記事


あなたのアプリ内で再獲得提供をサポートする


特定の期間、自動更新サブスクリプションの無料または割引オファーを提供して、以前の購読者に再度契約します。


offer の bookmark





概観


再獲得提供オファーとは、自動更新サブスクリプションを 解約した 対象顧客に対して、無料または割引価格で提供するオファーです。解約したサブスクリプションとは、expirationDate が過去の日付で、willAutoRenew の値が false に設定されているサブスクリプションを指します。再獲得提供オファーは App Store Connect で設定し、顧客が対象かどうかを判断する基準も設定します。対象は、顧客の有料サブスクリプションの期間、サブスクリプションの有効期限が切れてからの経過時間、オファーの利用間隔に基づいて決定できます。また、割引の種類を設定し、オファーが利用可能な地域または国も指定できます。


WWDC24 の関連セッション
セッション 1010: App Store オファーの実装


再獲得提供オファーは複数の方法で売買できます。App Store Connect では、メールなどの独自のチャネルで共有できる直接リンクを提供しています。顧客は App Store、Apple アカウントのサブスクリプション設定、そしてあなたのアプリ内で再獲得提供オファーを見つけて利用することもできます。


あなたのアプリ内では、再獲得提供オファーシート、StoreKit ビュー、その他の StoreKit API を使用して、独自の売買を完全にカスタマイズすることで、再獲得提供オファーで売買できます。


あなたのアプリでは、顧客達がアプリ外で引き換える再獲得提供オファーを処理する必要があります。デフォルトでは、ユーザーがアプリ外でオファーを利用すると、あなたのアプリは完了した購入取引を受け取ります。このワークフローは、App Store Connect の "Streamlined Purchasing" オプションがオン(デフォルト)になっている場合に実行されます。"Streamlined Purchasing" をオフにすることで、顧客があなたのアプリ内で購入を完了できます。詳しくは、後述の あなたのアプリ外で引き換えられた再獲得提供オファーの処理 をご覧ください。


App Store Connect で再獲得提供オファーを構成する


App Store Connect で 再獲得オファーの設定 の手順に従って、再獲得提供オファーを設定します。再獲得提供オファーを設定する際は、以下の点にご留意ください。


  • 再獲得提供オファー ID を作成します。この英数字の文字列は、取引情報とサブスクリプション更新情報に表示されます。

  • 再獲得提供オファーの詳細を確認すると、App Store Connect によって、オファー用の数字の再獲得提供オファー Apple ID と直接リンクが作成されます。直接リンクはオファーの Apple ID を使用し、https://apps.apple.com/win-back/<再獲得提供オファー Apple ID> という形式になります。

  • App Store Connect で承認済みのサブスクリプション画像を追加してください。App Store で再獲得提供オファーをプロモーションする場合、App Store ではこの画像が必須となります。再獲得提供オファーシートと直接リンクでも、利用可能な場合はこの画像が使用されます。詳しくは、画像を追加または削除する をご覧ください。

  • ヒント

    後で簡単にアクセスできるように、再獲得提供オファーの ID とそれに対応する直接リンクをサーバー上に保存して下さい。



    App Store Connect で効率的な購入を構成する


    再獲得提供オファーを設定する際に、App Store Connect で Streamlined Purchasing オプションも設定できます。この設定は、あなたのアプリ内のすべての再獲得提供オファーと条件付き価格設定に適用されます。再獲得提供オファーの利用処理は、以下のようにあなたのアプリによって左右されます。


  • 効率的な購入機能がオン(デフォルト)の場合、顧客はあなたのアプリ外で再獲得提供オファーの購入を完了します。あなたのアプリは、実行中の場合は updates シーケンスで、そうでない場合は all または currentEntitlements シーケンスで、完了した購入取引を受け取ります。購入された製品のロック解除は、通常どおりあなたのアプリ側で行います。

  • Streamlined Purchasing (効率的な購入) がオフになっている場合、あなたのアプリは顧客が購入を完了する前に、再獲得提供オファーに関連する処理を実行できます。ワークフローは、顧客があなたのアプリ外で購入を開始した時点で開始されます。アプリがまだインストールされていない場合は、システムからインストールを促します。あなたのアプリは取引ではなく、intents シーケンスで _ _purchase インテントを受け取り、PurchaseIntent API を使用して購入を完了しなければなりません。

  • 顧客達が Apple アカウントのサブスクリプション管理ページから再獲得提供オファーを利用する場合、その利用は常に Streamline Purchasing がオンになっているかのように動作し、あなたのアプリは完了した購入取引を受け取ります。

  • 重要

    App Store Connect で Streamlined Purchasing オプションをオフにする前に、承認済みの最新のアプリバイナリで PurchaseIntent API を使用しなければなりません。


    App Store Connect でこの設定を構成する方法の詳細については、ストリームライン購入の管理 を参照してください。



    アプリ内での再獲得オファーの売買


    StoreKit は、あなたのアプリ内で対象の顧客への再獲得提供オファーを販売するためのいくつかの方法を提供します。デフォルトでは、StoreKit は App Store から winBackOffer メッセージを受信すると、再獲得提供オファーシートを表示します。また、StoreKit ビューやその他の StoreKit API を使用して再獲得提供オファーを販売することで、体験を自由にカスタマイズすることもできます。


    これらの各オプションの実装方法については、あなたのアプリ内での販売による再獲得提供 (Merchandising win-back offers in your app) をご覧ください。



    直接リンクを使用してあなたのアプリ外で再獲得オファーの売買を行う


    再獲得提供オファーを作成すると、App Store Connect から直接リンクが提供されます。この直接リンクを使用して、独自のチャネルで再獲得提供オファーを売買しましょう。


    顧客に直接リンクを送信する前に、あなたのサーバーから すべてのサブスクリプション状況の取得 エンドポイントを呼び出して、顧客がオファーの利用資格を満たしているかどうかを確認してください。レスポンスからの JWSRenewalInfoDecodedPayload には、対象となるオファーをリストする eligibleWinBackOfferIds 配列が含まれています。直接リンクは、対象となる顧客達にのみ送信してください。


    eligibleWinBackOfferIds 配列に複数のエントリがある場合、顧客は一つ以上のオファーの対象となります。App Store は、最適なオファーを最初に、再獲得提供オファー ID の順序を設定します。順序付けには、サブスクリプショングループ内顧客の最新のサブスクリプションに対して App Store Connect あなたが構成した利用可能なオファーが考慮されます。



    再獲得提供オファーシートを通じて引き換えられたオファーを処理する


    顧客が再獲得提供オファーシートを使用して再獲得提供オファーを利用すると、StoreKit はこの取引をアプリ外で発生した購入と同じように扱います。具体的には、アプリは Transactionupdates シーケンスでこの取引を受け取ります。あなたのアプリが起動したらすぐに、updates を反復処理するタスクを作成してください。詳細とサンプルコードについては、updates をご覧ください。



    あなたのアプリ外で引き換えられた再獲得提供オファーの処理


    顧客達は、あなたのアプリ外で再獲得提供オファーを見つけて利用することが数通りの方法でできます。これには、あなたが販売した直接リンク、App Store で、Apple アカウントでサブスクリプションを管理しているときなど、いくつかの方法があります。あなたのアプリでの利用方法の処理は、App Store Connect で Streamlined Purchasing 設定がオンかオフかによって異なります。


    Streamlined Purchasing がオン(デフォルト設定)の場合、顧客達はあなたのアプリ外で再獲得提供オファーの購入を完了します。あなたのアプリは、次回アプリを開いたときに、完了した購入取引を受け取ります。この取引は、あなたのアプリ外で完了した他の購入と同じように扱われ、購入済みコンテンツのロックが解除されます。具体的には以下のとおりです。


  • あなたのアプリが実行されていなかったときも含め、過去に発生した取引を取得するには、アプリの起動時に Transactionall または currentEntitlements シーケンスを反復処理します。

  • アプリの実行中にアプリ外で発生する取引を監視するには、Transactionupdates を反復処理します。あなたのアプリの起動直後に視聴者からの取引を反復処理する Task を作成します。詳細とサンプルコードについては、updates をご覧ください。

  • この取引により、顧客に自動更新サブスクリプションの権利が付与されます。あなたのアプリは購入コンテンツのロックを解除し、finish() で取引を終了します。


    App Store Connect 内で Streamlined Purchasing をオフにすると、あなたのアプリは完了した取引ではなく購入意図を受け取ります。Streamlined Purchasing をオフにした状態で、顧客があなたのアプリ外で引き換えを開始すると、フローは以下のようになります。


    1. あなたのアプリがまだ実行されていない場合は、システムがあなたのアプリを開きます。StoreKit は、購入意図が進行中の場合、再獲得提供オファーシートを表示しません。

    2. StoreKit は、再獲得提供オファー情報を PurchaseIntentintents の非同期シーケンスに送信します。

    3. あなたのアプリは、顧客に購入の完了を促す前に、購入に関連するあらゆるアクションを実行できます。例えば、あなたのアプリは顧客にログインを求めることができます。

    4. あなたのアプリは、PurchaseIntentproduct に対して purchase(options:) メソッドを呼び出し、顧客が購入を完了できるようにします。購入オプションには、再獲得提供オファーを必ず追加してください。

    以下の例では、PurchaseIntentoffer プロパティをチェックして、購入意図が再獲得提供オファーであるかどうかを検出し、そのオファーを購入オプションに追加します。


    // Prepare the purchase options.
    var purchaseOptions: Set<Product.PurchaseOption> = []
    
    // Add the win-back offer to the purchase.
    if let offer = purchaseIntent.offer, offer.type == .winBack {
        purchaseOptions.insert(.winBackOffer(offer))
    }
    
    // Present the purchase.
    let result = try await purchaseIntent.product.purchase(options: purchaseOptions)
    

    最後に、購入したコンテンツのロックを解除したり、finish() で取引を終了したりするなど、あなたのアプリが購入に成功したときに使用するのと同じワークフローに従います。


    注意

    アプリが PurchaseIntent API を使用しているものの、offer を使用して再獲得提供オファーのサポートを明示的に追加していない場合、StoreKit は iOS 18 以降および visionOS 2 以降を実行しているデバイスの購入オプションに再獲得提供オファーを追加します。


    再獲得提供オファーで購入されたサブスクリプションを特定する


    顧客達がサブスクリプション購入オファー(再購入オファーを含む)を利用すると、取引情報にオファーの詳細が含まれます。これらの詳細は、アプリ内およびサーバー上で以下の手順で確認できます。


  • あなたのアプリの Transaction プロパティの offer を確認してください。オファー型の値が winback の場合、顧客が再獲得提供オファーを利用したことを示します。

  • あなたのサーバー側で、App Store Server Notifications V2 通知または App Store Server API レスポンスであなたが受信した JWSTransactionDecodedPayload を確認してください。offerIdentifier は、取引に適用されたオファーを表します。offerType が 4 の場合、再獲得提供オファーであることを示します。


  • 再獲得提供オファーのテスト


    Xcode 内の StoreKit テストとサンドボックス環境を使用することで、あなたの開発初期段階で再獲得提供オファーをテストできます。詳しくは、Xcode で再獲得提供をテスト および サンドボックス環境での再獲得提供のテスト をご覧ください。





    以下も見よ


    サブスクリプションのオファーとオファーコード


    あなたのアプリ内での販売による再獲得提供
    (Merchandising win-back offers in your app)

    再獲得提供オファーシートを使用するか、カスタム売買を実装して、あなたのアプリ内で対象の顧客達に再獲得提供オファーを提示します。


    あなたのアプリでサブスクリプション提供コードをサポート
    (Supporting subscription offer codes in your app)

    App Store またはあなたのアプリ内でオファーコードを利用する顧客達にサブスクリプションサービスを提供します。


    struct SubscriptionOffer

    App Store Connect であなたが構成するサブスクリプションオファーに関する情報。


    struct OfferType

    自動更新サブスクリプションのオファーの種類。














    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ