記事


あなたのアプリ内で販売促進されたアプリ内購入をサポートする


販売促進対象のアプリ内購入をあなたの製品ページに表示し、ユーザーが App Store で開始した購入を処理します。





概観


iOS では、App 内課金を促進することで、ユーザーが App Store 上で直接閲覧できるようになります。販売促進された App 内課金は、あなたの製品ページや検索結果に表示されるほか、App Store の適切なタブに表示されることもあります。ユーザーは App Store で購入手続きを開始すると、あなたのアプリ内で取引を進めることができます。


ユーザーがアプリ内製品の購入を選択した時点であなたのアプリがインストールされていない場合、App Store は自動的にアプリをダウンロードするか、ユーザーに購入を促すプロンプトを表示します。インストールされているあなたのアプリのバージョンが、アプリ内購入販売促進に対応していない古いバージョンである場合、App Store はユーザーにアプリのアップグレードを促します。


アプリ内購入を促進するには、以下の 2 つの手順が必要です。


  1. あなたのアプリで、iOS 16.4 以降、App Store でユーザーが開始した購入を完了するために、アプリに PurchaseIntent を実装してください。iOS 11~16.3 で動作するアプリでこの機能をサポートするには、App 内購入のプロモーション (Promoting In-App Purchases) をご覧ください。

  2. App Store Connect で、販売促進対象の App 内課金を構成します。詳しくは、アプリ内課金のプロモーション をご覧ください。

重要

販売促進対象のアプリ内購入を有効にするには、あなたのアプリで PurchaseIntent (iOS 16.4 以降) または paymentQueue(_:shouldAddStorePayment:for:)   廃止   (iOS 11 以降) のいずれかを使用する必要があります。両方を同時に使用しないでください。必要に応じて、条件付きコンパイルを使用して、アプリが実行中の OS バージョンを識別してください。詳しくは、特定のプラットフォームまたは OS バージョンでコードを実行する (Running code on a specific platform or OS version) をご覧ください。


Product.PromotionInfo API を使用すると、特定のデバイスでユーザーに表示される販売促進対象のアプリ内購入がどれかをカスタマイズできます。販売促進対象のアプリ内購入を App Store に表示するために Product.PromotionInfo を使用する必要はありません。


この機能に関するマーケティングガイダンスについては、アプリ内購入のプロモーション をご覧ください。


販売促進対象のアプリ内購入をテストするには、販売促進対象のアプリ内購入のテスト (Testing promoted In-App Purchases) をご覧ください。


注意

販売促進されたアプリ内購入は、visionOS で実行されている互換性のある iPad または iPhone アプリでは利用できません。


App Store Connect を使用して販売促進されたアプリ内購入を設定する


App Store Connect で、販売促進画像をアップロードし、販売促進対象の App 内課金を設定します。App Store Connect の「App Store Promotion(販売促進)」機能を使用して、デフォルトの表示順と表示回数を管理できます。設定の詳細については、アプリ内課金のプロモーション を参照してください。



あなたのアプリ内で購入を完了する


ユーザーが App Store でアプリ内購入を開始すると、StoreKit は自動的にあなたのアプリを開き、PurchaseIntentintents 内の非同期シーケンスで商品情報を送信します。あなたのアプリは購入取引を完了し、それに関連するアクションを実行する必要があります。


取引を完了するには、PurchaseIntentproduct に対して purchase(options:) メソッドを呼び出します。購入コンテンツのロック解除や取引の終了(finish())など、アプリ内購入であなたのアプリが使用するのと同じワークフローに従ってください。


以下のコード例は、App Store からの購入意図を注目します。ユーザーが App Store で販売促進されたアプリ内購入をタップすると、Product オブジェクトを受け取り、その購入ワークフローを実行します。


for await purchaseIntent in PurchaseIntent.intents {
    // Complete the purchase workflow.
    do {
        try await purchaseIntent.product.purchase()
    }
    catch {
        <#Handle Error#>
    }
}


購入を延期またはキャンセルする


場合によっては、あなたのアプリで購入取引を延期またはキャンセルする必要があります。例えば、ユーザーが購入取引の途中であれば取引を延期し、完了後に完了させる必要があるかもしれません。また、ユーザーが購入しようとしている商品を既にロック解除している場合は、取引をキャンセルする必要があるかもしれません。


取引を延期するには、購入意図を保存し、ユーザーが購入取引を完了した後、または延期が必要なその他のアクションを完了した後に処理します。


取引をキャンセルするには、purchase(options:) を呼び出さないでください。代わりに、ユーザーにフィードバックを提供してください。この手順はオプションですが、フィードバックを提供しないと、ユーザーが App Store で購入手続きを開始した後にアプリが何もアクションを起こさないことがバグのように見える可能性があります。



販売促進対象商品の順序とデバイス上での表示をカスタマイズする


デバイス上で販売促進対象のアプリ内購入をカスタマイズするには、Product.PromotionInfo を使用してデフォルトの表示順序と表示設定をオーバーライドできます。この機能を使うと、あなたのアプリの使用経験や過去の購入履歴に基づいて、あなたのユーザーにとって関連性の高い販売促進のみを表示できます。例えば、あるゲームで、各ゲームレベルごとに販売促進対象のアプリ内購入があるとします。この場合、ユーザーのゲームレベルに応じた販売促進対象商品みを表示し、既に購入済みのアイテムは非表示にすることができます。


販売促進されたアプリ内購入がデバイス上の App Store に表示されるかどうかを制御するには、以下のいずれかの方法を使用します。


  • リストに追加または削除します。商品の順序を設定するには、updateAll(_:) または updateProductOrder(byID:) を呼び出します。表示したくない商品は除外してください。

  • 商品の表示を設定する。商品の表示/非表示を設定するには、商品の visibility 値を設定して update() または updateAll(_:) を呼び出すか、updateProductVisibility(_:for:) を呼び出します。

  • これらのオーバーライドはデバイス固有であり、ユーザーがアプリを少なくとも 1 回起動した後に有効になります。


    以下のコード例では、製品 ID の配列を使用してその順序を設定しています。currentOrder を呼び出して Product.PromotionInfo オブジェクトを取得し、それらの表示設定を直接設定します。次に、updateAll(_:) を呼び出して変更を保存します。


    // Set the product order.
    let orderedProductIdentifiers = [
        "com.example.ExampleApp.product1",
        "com.example.ExampleApp.product2",
        "com.example.ExampleApp.product3"
    ]
    
    do {
        try await Product.PromotionInfo.updateProductOrder(byID: orderedProductIdentifiers)
    }
    catch {
        <#Handle Error#>
    }
    
    // Get the current product order.
    var promotions: [Product.PromotionInfo] = []
    
    do {
        promotions = try await Product.PromotionInfo.currentOrder
    }
    catch {
        <#Handle Error#>
    }
    
    // Set the visibility for all the products and save the changes.
    for i in promotions.indices {
        promotions[i].visibility = .visible
    }
    
    do {
        try await Product.PromotionInfo.updateAll(promotions)
    }
    catch {
        <#Handle Error#>
    }
    

    以下のコード例では、ユーザーが、販売促進された商品を購入した後に非表示にします。


    // Change the visibility to hide a promoted product after a user purchases it.
    let purchasedProductIdentifier = "com.example.ExampleApp.product1"
    
    do {
        try await Product.PromotionInfo.updateProductVisibility(.hidden,
         for: purchasedProductIdentifier)
    }
    catch {
        <#Handle Error#>
    }
    


    App Store Connect からの販売促進の表示を制御する


    App Store Connect からの販売促進の表示を制御するには、App 内での visibility 値をデフォルトの Product.PromotionInfo.Visibility.appStoreConnectDefault に設定します。この値が設定された製品は、App Store Connect であなたの構成した設定に基づいて表示または非表示になります。App Store Connect の使い方について詳しくは、アプリ内課金のプロモーション をご覧ください。


    例えば、祝日に全ユーザー向けに商品を販売促進する場合、アプリで商品の表示設定を Product.PromotionInfo.Visibility.appStoreConnectDefault に設定してください。App Store Connect では、まず商品の表示設定を非表示に設定しておきます。祝日に、App Store Connect を使って手動で商品を表示するように変更します。販売促進された商品は、App Store で自動的に全ユーザーに表示されます。



    オーバーライドのキャンセル


    あなたのアプリが販売促進対象商品の順序と表示設定に対して行った変更をリセットするには、空の配列を指定して updateAll(_:) メソッドまたは updateProductOrder(byID:) メソッドを呼び出します。これによりオーバーライドがキャンセルされ、ユーザーは販売促進対象商品のアプリ内購入をデフォルトの順序で表示できるようになります。


    オーバーライドのリストを取得するには、currentOrder を呼び出します。リストが空の場合、デバイスは販売促進対象商品のアプリ内購入をデフォルトの順序で表示します。





    以下も見よ


    販売促進されたアプリ内購入


    struct PurchaseIntent

    購入意図を発行するインスタンス。これは、顧客があなたのアプリ外で購入を開始し、アプリが完了することを示します。


    struct PromotionInfo

    デバイス上での順序と表示をカスタマイズする、販売促進対象のアプリ内購入に関する情報。


    販売促進対象のアプリ内購入をテストする

    あなたのアプリを App Store で利用可能にする前に、アプリ内購入をテストしましょう。














    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ