Vai al contenuto

Crea un abbonamento iOS a rinnovo automatico

GitHub

Le sottoscrizioni auto-rinnovabili offrono l'accesso ricorrente a contenuti, servizi o funzionalità premium nella tua app iOS. Questa guida ti spiegherà come creare le sottoscrizioni in App Store Connect.

Le sottoscrizioni auto-rinnovabili si rinnovano automaticamente alla fine di ogni periodo di fatturazione finché l'utente non le annulla. Sono ideali per:

  • Contenuti e funzionalità premium
  • Esperienze senza pubblicità
  • Cloud storage e sincronizzazione
  • Servizi di streaming
  • Strumenti e utility professionali

Prima di creare le sottoscrizioni, devi:

  1. Crea un gruppo di abbonamenti per organizzare i tuoi abbonamenti
  2. Avere un abbonamento attivo all'Apple Developer Program
  3. Completa le informazioni bancarie e fiscali in App Store Connect
  1. Vai su Subscriptions

    In App Store Connect, seleziona la tua app e vai su Monetizzazione > Abbonamenti.

    Seleziona il tuo gruppo di abbonamenti o creane uno nuovo se necessario.

    Vai alla sezione abbonamenti

  2. Crea nuovo abbonamento

    Clicca sul + icona accanto al gruppo di abbonamento per aggiungere un nuovo abbonamento.

  3. Inserisci le informazioni di base

    Nome di riferimento: Nome descrittivo per uso interno (non visibile agli utenti)

    • Esempi: “Premium Monthly”, “Ultimate Annual”, “Basic Plan”

    ID Prodotto: Identificativo univoco per questo abbonamento (non modificabile in seguito)

    • Formato: com.yourcompany.yourapp.premium_monthly
    • Usa nomi descrittivi in minuscolo con underscore
    • Obbligatorio per configurare il plugin native-purchases

    Inserisci i dettagli dell'abbonamento

  4. Configura la durata

    Seleziona la durata dell'abbonamento tra le opzioni disponibili:

    • 1 settimana
    • 1 mese
    • 2 mesi
    • 3 mesi
    • 6 mesi
    • 1 anno

    La durata determina ogni quanto vengono addebitati gli utenti.

  5. Configura il prezzo

    Clicca su Aggiungi il prezzo dell'abbonamento per configurare i prezzi:

    Territorio base: Seleziona il tuo mercato principale (di solito il tuo paese)

    Prezzo: Imposta il prezzo dell'abbonamento

    • Apple converte automaticamente nelle altre valute
    • Scegli tra i livelli di prezzo di Apple
    • Considera il valore percepito e le tariffe di mercato

    Configura i prezzi

  6. Condivisione in famiglia (opzionale)

    Decidi se abilitare la Condivisione in famiglia, che permette fino a 6 membri della famiglia di accedere all'abbonamento.

    Attivala se:

    • I contenuti sono adatti all'uso familiare
    • Vuoi aumentare la proposta di valore
    • Il tuo modello di business lo consente

    Non attivarla se:

    • L'abbonamento è solo per uso individuale
    • I contenuti sono personalizzati per l'utente
    • Vuoi massimizzare i ricavi per utente
  7. Aggiungi localizzazioni

    Aggiungi le informazioni sull'abbonamento in tutte le lingue supportate dalla tua app:

    Nome visualizzato dell'abbonamento: Nome visibile all'utente (es. “Premium Mensile”)

    Descrizione: Breve descrizione di cosa include l'abbonamento

    • Sii conciso e punta sui vantaggi
    • Menziona le funzionalità principali
    • Evidenzia la proposta di valore

    Aggiungi le localizzazioni

  8. Immagine promozionale App Store (Opzionale)

    Carica un'immagine promozionale per questo abbonamento (312x390 pixel):

    • Viene mostrata nella pagina abbonamenti dell'App Store
    • Deve rispecchiare il design della tua app
    • Includi il nome dell'abbonamento per chiarezza
  9. Salva e invia

    Clicca su Salva per creare l'abbonamento.

    Per il primo abbonamento:

    • Deve essere inviato con una nuova versione dell'app
    • Includi nel prossimo invio all'App Store
    • Non può essere inviato separatamente

    Per gli abbonamenti successivi:

    • Possono essere inviati direttamente dalla pagina Abbonamenti
    • Non richiedono una nuova versione dell'app
    • Disponibili dopo l'approvazione del primo abbonamento

Il tuo abbonamento avrà uno di questi stati:

StatoDescrizioneTestabile?
Metadati mancantiConfigurazione incompletaSì (sandbox)
Pronto per l'invioCompletato ma non inviatoSì (sandbox)
In attesa di revisioneInviato ad AppleSì (sandbox)
In revisioneIn fase di revisione da AppleSì (sandbox)
ApprovatoDisponibile per l'acquistoSì
RifiutatoRichiede modificheSì (sandbox)

Una volta creata, fai riferimento all'abbonamento nella tua app usando il product ID:

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Fetch subscription products direct from StoreKit
const { products } = await NativePurchases.getProducts({
productIdentifiers: [
'com.yourcompany.yourapp.premium_monthly',
'com.yourcompany.yourapp.premium_annual',
],
productType: PURCHASE_TYPE.SUBS,
});
products.forEach((product) => {
console.log(`${product.title}: ${product.priceString}`);
console.log(`Duration: ${product.subscriptionPeriod}`);
console.log(`Description: ${product.description}`);
});
// Purchase a subscription (StoreKit 2 automatically handles intro pricing and offers)
try {
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.yourcompany.yourapp.premium_monthly',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Transaction ID:', transaction.transactionId);
// StoreKit receipts are included on iOS for server-side validation
await sendReceiptToBackend(transaction.receipt);
} catch (error) {
console.error('Purchase failed:', error);
}
// Check subscription status using the store's data
const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
});
const premium = purchases.find(
(purchase) => purchase.productIdentifier === 'com.yourcompany.yourapp.premium_monthly',
);
if (premium?.isActive) {
console.log('Expires:', premium.expirationDate);
console.log('Will renew:', premium.willCancel === false);
console.log('Store state:', premium.subscriptionState);
unlockPremiumFeatures();
} else {
showPaywall();
}

Se l'abbonamento su App Store Connect è configurato con fatturazione mensile e impegno di 12 mesi, StoreKit può restituire termini di prezzo aggiuntivi per quel prodotto. Usa questi dati per mostrare l'importo mensile, il prezzo totale dell'impegno e la durata completa prima dell'acquisto.

const yearlyProduct = products.find(
(product) => product.identifier === 'com.yourcompany.yourapp.premium_annual',
);
const monthlyCommitment = yearlyProduct?.pricingTerms?.find(
(term) => term.billingPlanType === 'monthly',
);
if (yearlyProduct && monthlyCommitment) {
console.log('Monthly charge:', monthlyCommitment.billingDisplayPrice);
console.log('Total commitment:', monthlyCommitment.commitmentInfo?.priceString);
await NativePurchases.purchaseProduct({
productIdentifier: yearlyProduct.identifier,
productType: PURCHASE_TYPE.SUBS,
billingPlanType: 'monthly',
});
}

Per il flusso completo di paywall ed entitlement, consulta Piani di fatturazione iOS con impegno mensile.

  • Piani mensili: Barriera d'ingresso più bassa, crea l'abitudine
  • Piani annuali: Più valore, LTV più alto, churn più basso
  • Più livelli: Basic, Premium, Ultimate per diversi segmenti di utenti
  • Analisi competitiva: Analizza i prezzi di app simili
  • Usa una nomenclatura coerente: company.app.tier_duration
  • Includi livello e durata nell'ID: premium_monthly, ultimate_annual
  • Evita di cambiare i product ID (sono permanenti)
  • Documenta tutti i product ID per il tuo team

Condivisione in famiglia

Sezione: “Family Sharing”
  • Abilitalo per le app per famiglie (giochi, istruzione, intrattenimento)
  • Valuta l'impatto sui ricavi
  • Testa a fondo il comportamento della condivisione
  • Comunica la funzione di condivisione nel marketing
  • Traduci tutti i nomi e le descrizioni degli abbonamenti
  • Considera le differenze di prezzo tra regioni
  • Testa la visualizzazione in tutte le lingue supportate
  • Usa un linguaggio di marketing culturalmente appropriato
  • Mantieni uno stile visivo coerente
  • Includi il nome dell'abbonamento e il vantaggio principale
  • Aggiorna per le promozioni stagionali
  • Coerente con il design dell'app
Free App + Premium Subscription
- Basic: Free (limited features)
- Premium Monthly: $4.99
- Premium Annual: $39.99 (save 33%)
- Basic Monthly: $4.99
- Premium Monthly: $9.99
- Ultimate Monthly: $19.99
- Basic Annual: $49.99
- Premium Annual: $99.99
- Ultimate Annual: $199.99
- Credit packs (consumable)
- Monthly subscription (unlimited credits)
- Annual subscription (unlimited + bonus features)

L'abbonamento non si carica nell'app:

  • Verifica che il Product ID sia identico (case-sensitive)
  • Controlla che l'abbonamento sia nel gruppo abbonamenti
  • Assicurati che il bundle identifier corrisponda a App Store Connect
  • Attendi 2-3 ore dopo la creazione del prodotto

Impossibile inviare l'abbonamento:

  • Compila tutti i campi obbligatori (nome, descrizione, prezzo)
  • Aggiungi almeno una localizzazione
  • Verifica l'approvazione dei dati bancari/fiscali
  • Controlla se è il primo abbonamento (richiede versione app)

Interruttore Family Sharing disabilitato:

  • Già abilitato (non può essere disabilitato)
  • Controlla nei dettagli dell'abbonamento
  • Contatta il supporto Apple se hai problemi

Fascia di prezzo non disponibile:

  • Potrebbe essere limitato in alcuni territori
  • Scegli una fascia alternativa
  • Contatta Apple per domande sui prezzi

Errore “Invalid Product ID”:

  • Deve essere in formato reverse domain
  • Non può contenere spazi o caratteri speciali
  • Controlla eventuali refusi
  • Verifica che sia unico tra tutti i prodotti

Per maggiori dettagli, consulta la documentazione ufficiale Apple sugli abbonamenti auto-rinnovabili.

Continua da Crea abbonamento auto-rinnovabile su iOS

Sezione intitolata “Continua da Crea abbonamento auto-rinnovabile su iOS”

Se stai usando Crea un abbonamento iOS a rinnovo automatico per pianificare l'approvazione e la distribuzione negli store, collegalo a Utilizzo di @capgo/native-purchases per la funzionalità nativa in Utilizzo di @capgo/native-purchases, @capgo/capacitor-in-app-review per i dettagli di implementazione in @capgo/capacitor-in-app-review, Utilizzo di @capgo/capacitor-in-app-review per la funzionalità nativa in Utilizzo di @capgo/capacitor-in-app-review, @capgo/capacitor-native-market per i dettagli di implementazione in @capgo/capacitor-native-market, e Utilizzo di @capgo/capacitor-native-market per la funzionalità nativa in Utilizzo di @capgo/capacitor-native-market.