Saltar al contenido

Planes de facturación mensual de iOS con compromiso

Apple admite suscripciones que facturan mensualmente mientras que compromete al cliente con un plazo más largo de 12 meses. Cuando StoreKit y el sistema operativo en ejecución apoyan este plan de facturación, @capgo/native-purchases exposa los términos de precios, permite seleccionar el plan de facturación mensual durante la compra, y devuelve metadatos de compromiso en transacciones e información de renovación.

Utilice esto para ofertas de suscripciones anuales donde los usuarios prefieren pagos mensuales pero aún quiere la retención y la previsibilidad de un plazo anual comprometido.

  • Configura el plan de facturación mensual con un compromiso de 12 meses en App Store Connect o en StoreKit Testing en Xcode.
  • Construye la aplicación iOS con un Xcode SDK que contiene StoreKit pricingTerms y billingPlanType.
  • Ejecuta en una versión de iOS que apoya los planes de facturación de compromiso de StoreKit.
  • Se debe mantener una opción de facturación estándar disponible para dispositivos o tiendas que no devuelvan términos de precios de compromiso.

Llamar getProducts() como de costumbre. Para los productos de suscripción iOS admitidos, cada producto puede incluir 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',
);

Rendere los valores proporcionados por la tienda en lugar de precios hardcoded:

CampoUse it for
billingDisplayPriceEl monto de facturación recurrente mostrado al usuario, por ejemplo, el cargo mensual.
billingPeriodEl calendario de facturación para el precio de facturación mostrado.
commitmentInfo.priceStringEl precio total de compromiso formateado para la tienda de la tierra del usuario.
commitmentInfo.periodEl período de compromiso completo.
subscriptionOffersOfertas promocionales o de introducción adjuntas al término de precios.

Ejemplo de copia de paywall:

function commitmentLabel(term: NonNullable<typeof monthlyCommitment>) {
const total = term.commitmentInfo?.priceString;
return total
? `${term.billingDisplayPrice} billed monthly, ${total} total commitment`
: term.billingDisplayPrice;
}

Cuando el usuario selecciona el plan de compromiso mensual, envíe billingPlanType: 'monthly'.

const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.example.app.premium.yearly',
productType: PURCHASE_TYPE.SUBS,
billingPlanType: 'monthly',
appAccountToken: userStoreUuid,
});

Utilice solo cuando necesite seleccionar explícitamente el plan de facturación al principio. Si omite billingPlanType: 'upFront' Si se omite billingPlanTypeStoreKit utiliza su comportamiento de compra predeterminado para el producto.

Las transacciones incluyen el plan de facturación y el progreso del compromiso cuando StoreKit lo proporciona:

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);
}

La información de renovación puede incluir el siguiente estado de compromiso:

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);
}

Utilice el nivel superior expirationDate y isActive campos para tomar decisiones de acceso. Utilice commitmentInfo.expirationDate para explicar el plazo de compromiso completo al cliente.

  • Muestre tanto el precio de facturación recurrente como el precio total de compromiso antes de la compra.
  • Haga explícito el largo del compromiso cerca del botón de compra.
  • Utilice product.title, product.priceString, pricingTerms[].billingDisplayPrice, y pricingTerms[].commitmentInfo.priceString desde StoreKit en lugar de precios hardcoded.
  • Proporcionar acciones de restaurar compras y gestionar suscripciones en la pantalla de pago o pantalla de cuenta.

Siga adelante desde los planes de facturación mensual de compromiso de iOS

Sección titulada “Siga adelante desde los planes de facturación mensual de compromiso de iOS”

Si está utilizando Planes de facturación mensual de compromiso de iOS para planificar pagos y compras, conecte con Usando @capgo/native-purchases para la capacidad nativa en Usando @capgo/native-purchases, Capgo Precios para el flujo de trabajo del producto en Capgo Precios, Sistema de pago para el detalle de implementación en Sistema de pago, @capgo/native-purchases para el detalle de implementación en @capgo/native-purchases, y Inicio rápido para el detalle de implementación en Inicio rápido.