Crear Grupo de Suscripción iOS
Copia un prompt de configuración con los pasos de instalación y la guía de markdown completa para este plugin.
Los grupos de suscripción son fundamentales para organizar y gestionar múltiples niveles de suscripción en tu aplicación iOS. Comprender cómo funcionan es crucial para implementar la funcionalidad de actualización, desactualización y crossgrade.
¿Qué es un Grupo de Suscripción?
Sección titulada “¿Qué es un Grupo de Suscripción?”Un grupo de suscripción es una colección de suscripciones relacionadas que los usuarios pueden elegir entre. Los usuarios solo pueden suscribirse a una suscripción dentro de un grupo en un momento dado. Cuando cambian de suscripción, Apple gestiona la transición automáticamente.
¿Por qué los Grupos de Suscripción Importan?
Sección titulada “¿Por qué los Grupos de Suscripción Importan?”Los grupos de suscripción permiten:
- Precios escalonados: Ofrecer planes básicos, premium y de máximo nivel
- Diferentes duraciones: Opciones mensuales, anuales y de por vida
- Lógica de actualización/descualificación: Manejo automático de cambios de suscripción
- Gestión simplificada: Agrupar suscripciones relacionadas
Niveles de suscripción
Sección titulada “Niveles de suscripción”Dentro de un grupo, cada suscripción debe ser clasificada desde el valor más alto (nivel 1) hasta el valor más bajo. Esta clasificación determina cómo se clasifican los cambios de suscripción:

Niveles Ejemplos
Sección titulada “Niveles Ejemplos”Nivel 1 (Valor más alto)
- Anual Premium ($99.99/año)
- Ultimo Mensual ($19.99/mes)
Nivel 2 (Valor medio)
- Anual Estándar ($49.99/año)
- Mensual Premium ($9.99/mes)
Nivel 3 (Valor más bajo)
- Anual básico ($29.99/año)
- Mensual estándar ($4.99/mes)
Tipos de cambios de suscripción
Sección titulada “Tipos de cambios de suscripción”Apple maneja automáticamente tres tipos de cambios de suscripción basados en la clasificación de niveles:
1. Actualización
Sección titulada “1. Actualización”Pasando a un higher-tier suscripción (por ejemplo, nivel 2 → nivel 1).
protectedTokens
- Efecto inmediato de inmediato efecto
- El usuario recibe una devolución parcial por el tiempo restante
- La nueva suscripción comienza de inmediato
Ejemplo:
// User currently has: Standard Monthly (Level 2)// User upgrades to: Premium Annual (Level 1)// Result: Immediate access to Premium, refund for unused Standard time2. Descargar
Sección titulada “2. Descargar”Pasando a un nivel inferior suscripción (por ejemplo, nivel 1 → nivel 2).
Comportamiento:
- Toma efecto en fecha de renovación siguiente
- El usuario mantiene la suscripción actual hasta que finalice el período
- La nueva suscripción comienza automáticamente después de la expiración
Ejemplo:
// User currently has: Premium Annual (Level 1)// User downgrades to: Standard Monthly (Level 2)// Result: Premium access continues until annual renewal date, then switches3. Actualización de tarifa
Sección titulada “3. Crossgrade”Cambiar a otra suscripción en el mismo nivel de tarifa.
El comportamiento depende de la duración:
Duración diferente → Se comporta como descender
- Tiene efecto a la próxima fecha de renovación
- Ejemplo: Mensual Premium (Nivel 1) → Anual Premium (Nivel 1)
Duración igual → Se comporta como mejorar
- Tiene efecto inmediatamente
- Ejemplo: Mensual Premium (Nivel 1) → Mensual Último (Nivel 1)
Crear un grupo de suscripciones
Section titled “Creating a Subscription Group”-
Navegue a Suscripciones
En App Store Connect, seleccione su aplicación y vaya a Monetizar > Suscripciones.
-
Crear Grupo
Haga clic + siguiente a ‘Grupos de Suscripción’ para crear un nuevo grupo.
-
Denomine al Grupo
Elige un nombre descriptivo que refleje las suscripciones que contiene:
- “Acceso Premium”
- “Planes de Almacenamiento en la Nube”
- “Características Pro”
-
Agregar Suscripciones
Después de crear el grupo, agregue suscripciones individuales a él. Cada suscripción tendrá un nivel de clasificación.
-
Establecer Clasificaciones de Nivel
Organice las suscripciones desde el valor más alto (1) hasta el valor más bajo.
- Planes anuales suelen tener un ranking más alto que los mensuales
- Los niveles más caros se clasifican por encima de los más bajos.
- Niveles de tarifa máxima/primera categoría
Usando en Tu Aplicación
Sección titulada “Usando en Tu Aplicación”El plugin de native-purchases maneja automáticamente la lógica de grupo de suscripción.
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Fetch all subscriptions in a groupconst { products } = await NativePurchases.getProducts({ productIdentifiers: ['premium_monthly', 'premium_annual', 'ultimate_monthly'], productType: PURCHASE_TYPE.SUBS,});
// Display current subscription using StoreKit transactionsconst { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS,});
const activeSubs = purchases.filter((purchase) => purchase.isActive);
// Detect pending downgrade/cancellation (StoreKit sets willCancel === true)const pendingChange = purchases.find((purchase) => purchase.willCancel === true);if (pendingChange) { console.log('Subscription will stop auto-renewing on', pendingChange.expirationDate);}
// Purchase (StoreKit handles upgrades/downgrades automatically)await NativePurchases.purchaseProduct({ productIdentifier: 'premium_annual', productType: PURCHASE_TYPE.SUBS,});
// Listen for StoreKit updates (fires on upgrades/downgrades/refunds)NativePurchases.addListener('transactionUpdated', (transaction) => { console.log('Subscription updated:', transaction);});Gestionar Cambios de Suscripción
Sección titulada “Gestión de cambios de suscripción”Detectar el tipo de cambio
Sección titulada “Detectar el tipo de cambio”import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Get current subscription infoconst { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS,});
const currentSubscription = purchases.find( (purchase) => purchase.subscriptionState === 'subscribed',);
if (currentSubscription) { // StoreKit reports if user cancelled auto-renew if (currentSubscription.willCancel) { console.log( `User cancelled. Access remains until ${currentSubscription.expirationDate}`, ); }
if (currentSubscription.isUpgraded) { console.log('User recently upgraded to this plan.'); }}
// Listen for automatic upgrades/downgradesNativePurchases.addListener('transactionUpdated', (transaction) => { console.log('Subscription changed!', transaction); if (transaction.subscriptionState === 'revoked') { revokeAccess(); } else if (transaction.isActive) { unlockPremiumFeatures(); }});Comunicación con el usuario
Sección titulada “Comunicación con el usuario”Siempre comunica claramente el comportamiento de cambio:
Para actualizaciones:
“Obtendrá acceso inmediato a características Premium. Se le prorrogará su suscripción actual.”
Para descuentos:
“Mantendrá el acceso Premium hasta [fecha de renovación], luego se cambiará a estándar.”
Para cambios cruzados:
“Su plan cambiará a facturación anual en la próxima renovación el [fecha].”
Monitoreo del servidor
Sección titulada “Monitoreo del servidor”Utilice las notificaciones del servidor de Apple App Store v2 o su propio backend de validación de recibos para reflejar los cambios de StoreKit en su base de datos. Asocie las notificaciones del servidor con el transactionUpdated El escuchador mantiene a ambos el cliente y el servidor sincronizados.
Buenas prácticas
Sección titulada “Buenas prácticas”Organización de grupos
Sección titulada “Organización de grupos”- Mantenga las suscripciones relacionadas en el mismo grupo
- Don’t mix unrelated features (e.g., storage and ad removal)
- Cree grupos separados para diferentes conjuntos de características
Estrategia de Clasificación de Nivel
Sección titulada “Estrategia de Clasificación de Nivel”- Planes anuales → Nivel superior que los mensuales (para el mismo nivel)
- Niveles de precio más altos → Nivel superior
- Considerar el valor, no solo el precio
Experiencia del usuario
Sección titulada “Experiencia del usuario”- Mostrar la suscripción actual de manera clara
- Mostrar todas las opciones disponibles en el grupo
- Indicar qué cambios son inmediatos vs. a la renovación
- Hacer que cambiar entre planes sea fácil
Pruebas
Sección titulada “Pruebas”- Prueba todos los escenarios de actualización
- Prueba todos los escenarios de descarga
- Verificar el comportamiento de crossgrade
- Comprueba que se dispare el webhook
Escenarios comunes
Sección titulada “Escenarios comunes”Escenario 1: Planes mensuales de tres niveles
Sección titulada “Escenario 1: Planes mensuales de tres niveles”Level 1: Ultimate Monthly ($19.99)Level 2: Premium Monthly ($9.99)Level 3: Basic Monthly ($4.99)- Básico → Premium: Actualización (inmediata)
- Premium → Ultimate: Actualización (inmediata)
- Ultimate → Premium: Descender (al renovación)
- Basic → Ultimate: Actualización (inmediata)
Escenario 2: Planes de duración mixta
Título de la sección “Escenario 2: Planes de duración mixta”Level 1: Premium Annual ($99.99/year)Level 2: Premium Monthly ($9.99/month)- Mesal → Anual: Cambiar de categoría (al renovación)
- Anual → Mesal: Descender (al renovación)
Escenario 3: Multi-Nivel Multi-Duración
Título de la sección “Escenario 3: Multi-Nivel Multi-Duración”Level 1: Ultimate Annual ($199/year)Level 2: Ultimate Monthly ($19.99/month)Level 3: Premium Annual ($99/year)Level 4: Premium Monthly ($9.99/month)Level 5: Basic Annual ($49/year)Level 6: Basic Monthly ($4.99/month)Esta configuración proporciona la máxima flexibilidad mientras mantiene una lógica de actualización/descender clara.
Ayuda con problemas
Sección titulada “Solución de problemas”La suscripción no aparece en el grupo:
- Verifique que esté asignada al grupo correcto
- Compruebe que esté en al menos el estado “Listo para enviar”
- Asegúrese de que el ID del producto sea correcto
Wrong upgrade/downgrade behavior:
- Revisar las clasificaciones de nivel (1 = más alto)
- Verify subscription tiers make sense
- Check that levels are set correctly
Productos de diferentes grupos:
- Los usuarios pueden suscribirse a múltiples grupos simultáneamente
- Esto es intencional - mantenga los productos relacionados en el mismo grupo
getActiveProducts mostrando múltiples suscripciones:
- Verificar si las suscripciones están en diferentes grupos
- Verificar que el usuario no está suscrito mediante Family Sharing
- Revisar el estado de la suscripción en App Store Connect
Recursos adicionales
Sección titulada “Recursos adicionales”Para obtener más detalles, consulte la documentación oficial de Apple sobre grupos de suscripción.
Sigue adelante desde Crear Grupo de Suscripción de iOS
Sección titulada “Sigue adelante desde Crear Grupo de Suscripción de iOS”Si estás utilizando Crear Grupo de Suscripción de iOS para planificar la aprobación y distribución de la tienda, conecte con Usando @capgo/compras nativas para la capacidad nativa en Usando @capgo/compras nativas, @capgo/capacitor-revisión en la aplicación Para la implementación detallada en @capgo/capacitor-revisión en la aplicación. Usando @capgo/capacitor-revisión en la aplicación para la capacidad nativa en Uso de @capgo/capacitor-revisión en la aplicación @capgo/capacitor-mercado nativo para el detalle de implementación en @capgo/capacitor-mercado nativo, y Usando @capgo/capacitor-mercado nativo para la capacidad nativa en Usando @capgo/capacitor-mercado nativo.