Plans de facturation iOS avec engagement mensuel
Copiez un prompt de configuration incluant les étapes d'installation et le guide markdown complet pour ce plugin.
Apple prend en charge les abonnements facturés mensuellement tout en engageant le client sur une durée de 12 mois. Lorsque StoreKit et l’OS en cours d’exécution prennent en charge ce mode de facturation, @capgo/native-purchases expose les conditions tarifaires, vous permet de sélectionner le plan de facturation mensuel lors de l’achat et renvoie les métadonnées d’engagement sur les transactions et les informations de renouvellement.
Utilisez cette option pour les offres d'abonnement annuel où les utilisateurs préfèrent payer au mois, tout en gardant la rétention et la prévisibilité d'un engagement annuel.
Prérequis
Section intitulée « Prérequis »- Configurez le plan de facturation mensuel avec engagement de 12 mois dans App Store Connect ou via StoreKit Testing dans Xcode.
- Compilez l'application iOS avec un SDK Xcode contenant StoreKit
pricingTermsetbillingPlanType. - Exécutez sur une version d'iOS prenant en charge les plans d'abonnement StoreKit.
- Gardez une option de facturation standard pour les appareils ou les stores qui ne renvoient pas de conditions tarifaires avec engagement.
Charger et afficher les conditions tarifaires
Section intitulée « Charger et afficher les conditions tarifaires »Appelez getProducts() comme d'habitude. Pour les produits d'abonnement iOS pris en charge, chaque produit peut inclure pricingTerms.
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
const { products } = await NativePurchases.getProducts({ productIdentifiers: ['com.example.app.premium.yearly'], productType: PURCHASE_TYPE.SUBS,});
const premiumYearly = products.find( (product) => product.identifier === 'com.example.app.premium.yearly',);const monthlyCommitment = premiumYearly?.pricingTerms?.find( (term) => term.billingPlanType === 'monthly',);Affichez les valeurs fournies par le store au lieu de prix codés en dur :
| Champ | Utilisez-le pour |
|---|---|
billingDisplayPrice | Le montant de la facturation récurrente affiché à l'utilisateur, par exemple le montant mensuel. |
billingPeriod | La fréquence de facturation pour le prix affiché. |
commitmentInfo.priceString | Le prix total de l'engagement, formaté pour le storefront de l'utilisateur. |
commitmentInfo.period | La période d'engagement complète. |
subscriptionOffers | Offres d'introduction ou promotionnelles liées à la période de tarification. |
Exemple de texte de paywall :
function commitmentLabel(term: NonNullable<typeof monthlyCommitment>) { const total = term.commitmentInfo?.priceString; return total ? `${term.billingDisplayPrice} billed monthly, ${total} total commitment` : term.billingDisplayPrice;}Souscrire au plan d'engagement mensuel
Section intitulée « Acheter le plan Engagement mensuel »Lorsque l’utilisateur sélectionne le plan Engagement mensuel, passez billingPlanType: 'monthly'.
const transaction = await NativePurchases.purchaseProduct({ productIdentifier: 'com.example.app.premium.yearly', productType: PURCHASE_TYPE.SUBS, billingPlanType: 'monthly', appAccountToken: userStoreUuid,});Utiliser billingPlanType: 'upFront' uniquement si vous devez sélectionner explicitement le plan de facturation standard à l’avance. Si vous omettez billingPlanType, StoreKit utilise son comportement d’achat par défaut pour le produit.
Lire les métadonnées d’engagement
Section intitulée « Lire les métadonnées d’engagement »Les transactions incluent le plan de facturation et l’avancement de l’engagement lorsque StoreKit le fournit :
if (transaction.billingPlanType === 'monthly') { console.log('Current billing period:', transaction.commitmentInfo?.billingPeriodNumber); console.log('Total billing periods:', transaction.commitmentInfo?.totalBillingPeriods); console.log('Commitment ends:', transaction.commitmentInfo?.expirationDate); console.log('Commitment total:', transaction.commitmentInfo?.price);}Renewal info can include the next commitment state:
const { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS, onlyCurrentEntitlements: true,});
for (const purchase of purchases) { const commitment = purchase.renewalInfo?.commitmentInfo; if (!commitment) continue;
console.log('Renews into another commitment:', commitment.willAutoRenew); console.log('Next billing plan:', commitment.renewalBillingPlanType); console.log('Next renewal date:', commitment.renewalDate);}Utilisez le champ de niveau supérieur expirationDate et isActive pour les décisions d’entitlement. Utilisez commitmentInfo.expirationDate pour expliquer au client le calendrier complet de l’engagement.
Notes de review App Store
Section intitulée « Notes de review App Store »- Affichez à la fois le tarif récurrent et le prix total de l'engagement avant l'achat.
- Indiquez clairement la durée de l'engagement à côté du bouton d'achat.
- Utiliser
product.title,product.priceString,pricingTerms[].billingDisplayPrice, etpricingTerms[].commitmentInfo.priceStringdepuis StoreKit au lieu de prix codés en dur. - Proposez la restauration des achats et la gestion de l'abonnement sur le paywall ou l'écran de compte.
Guides associés
Section intitulée « Guides associés »Continuer depuis les plans de facturation iOS avec engagement mensuel
Section intitulée « Continuer depuis les plans de facturation iOS avec engagement mensuel »Si vous utilisez Plans de facturation iOS avec engagement mensuel pour planifier les paiements et les achats, connectez-l’à Utiliser @capgo/native-purchases pour la capacité native dans Utiliser @capgo/native-purchases Tarifs Capgo pour le workflow produit dans Capgo Tarifs, Système de paiement pour les détails d'implémentation du système de paiement, @capgo/native-purchases pour les détails d'implémentation dans @capgo/native-purchases, et Prise en main pour les détails d'implémentation dans Getting Started.