Iniziare
Copy a setup prompt with the install steps and the full markdown guide for this plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-persistent-account`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/it/docs/plugins/persistent-account/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Installazione
Section titled “Installazione”npm install @capgo/capacitor-persistent-accountnpx cap syncyarn add @capgo/capacitor-persistent-accountnpx cap syncpnpm add @capgo/capacitor-persistent-accountnpx cap syncbun add @capgo/capacitor-persistent-accountnpx cap syncSupporto piattaforme
Section titled “Supporto piattaforme”- iOS: Utilizza iOS Keychain Services per archiviazione sicura e persistente
- Android: Utilizza Android Account Manager o preferenze condivise con backup
Esempio di utilizzo
Section titled “Esempio di utilizzo”import { PersistentAccount } from '@capgo/capacitor-persistent-account';
// Definisci la struttura dei dati dell'accountinterface UserAccount { userId: string; username: string; email: string; preferences: { theme: string; notifications: boolean; };}
// Salva dati accountconst accountData: UserAccount = { userId: '12345', username: 'john_doe', email: 'john@example.com', preferences: { theme: 'dark', notifications: true }};
await PersistentAccount.saveAccount({ data: accountData });
// Leggi dati accountconst result = await PersistentAccount.readAccount();if (result.data) { const account = result.data as UserAccount; console.log('Account ripristinato:', account.username);} else { console.log('Nessun dato account trovato');}Riferimento API
Section titled “Riferimento API”saveAccount(options)
Section titled “saveAccount(options)”saveAccount(options: { data: unknown }) => Promise<void>Salva in modo sicuro i dati dell’account nell’archiviazione persistente.
| Param | Type |
|---|---|
options | { data: unknown } |
readAccount()
Section titled “readAccount()”readAccount() => Promise<{ data: unknown | null }>Recupera i dati dell’account archiviati.
Restituisce: Promise<{ data: unknown | null }>
Implementazione pratica
Section titled “Implementazione pratica”Esempio completo di Auth Service
Section titled “Esempio completo di Auth Service”import { PersistentAccount } from '@capgo/capacitor-persistent-account';
interface UserAccount { userId: string; username: string; email: string; authToken?: string; preferences: { theme: string; language: string; notifications: boolean; };}
class AuthService { // Salva account utente dopo il login async saveUserAccount(user: UserAccount) { try { await PersistentAccount.saveAccount({ data: user }); console.log('Account utente salvato con successo'); } catch (error) { console.error('Impossibile salvare account:', error); throw error; } }
// Ripristina account utente all'avvio dell'app async restoreUserAccount(): Promise<UserAccount | null> { try { const result = await PersistentAccount.readAccount();
if (result.data) { const account = result.data as UserAccount; console.log('Account utente ripristinato:', account.username); return account; }
console.log('Nessun account salvato trovato'); return null; } catch (error) { console.error('Impossibile ripristinare account:', error); return null; } }
// Aggiorna preferenze utente async updatePreferences(preferences: Partial<UserAccount['preferences']>) { const account = await this.restoreUserAccount();
if (account) { const updatedAccount: UserAccount = { ...account, preferences: { ...account.preferences, ...preferences } };
await this.saveUserAccount(updatedAccount); } }
// Cancella dati account (al logout) async clearAccount() { try { await PersistentAccount.saveAccount({ data: null }); console.log('Dati account cancellati'); } catch (error) { console.error('Impossibile cancellare account:', error); } }}
// Utilizzoconst authService = new AuthService();
// Al loginawait authService.saveUserAccount({ userId: '12345', username: 'john_doe', email: 'john@example.com', authToken: 'abc123xyz', preferences: { theme: 'dark', language: 'it', notifications: true }});
// All'avvio dell'appconst savedAccount = await authService.restoreUserAccount();if (savedAccount) { // L'utente era precedentemente loggato console.log('Bentornato,', savedAccount.username);}
// Aggiorna preferenzeawait authService.updatePreferences({ theme: 'light', notifications: false});
// Al logoutawait authService.clearAccount();Inizializzazione app con ripristino account
Section titled “Inizializzazione app con ripristino account”import { PersistentAccount } from '@capgo/capacitor-persistent-account';
async function initializeApp() { try { // Prova a ripristinare l'account salvato const result = await PersistentAccount.readAccount();
if (result.data) { const account = result.data as UserAccount;
// Valida che il token sia ancora valido const isValid = await validateAuthToken(account.authToken);
if (isValid) { // Ripristina sessione utente setCurrentUser(account); navigateToHome(); } else { // Token scaduto, mostra login navigateToLogin(); } } else { // Nessun account salvato, mostra login navigateToLogin(); } } catch (error) { console.error('Impossibile inizializzare app:', error); navigateToLogin(); }}
// Chiama all'avvio dell'appinitializeApp();Sincronizzazione con backend
Section titled “Sincronizzazione con backend”import { PersistentAccount } from '@capgo/capacitor-persistent-account';
async function syncAccountWithBackend() { const result = await PersistentAccount.readAccount();
if (result.data) { const localAccount = result.data as UserAccount;
try { // Recupera i dati account più recenti dal server const response = await fetch(`/api/users/${localAccount.userId}`); const serverAccount = await response.json();
// Unisci dati server con preferenze locali const mergedAccount: UserAccount = { ...serverAccount, preferences: { ...serverAccount.preferences, ...localAccount.preferences // Le preferenze locali hanno priorità } };
// Salva dati uniti await PersistentAccount.saveAccount({ data: mergedAccount });
return mergedAccount; } catch (error) { console.error('Impossibile sincronizzare con backend:', error); // Restituisci account locale come fallback return localAccount; } }
return null;}Best practice
Section titled “Best practice”- Sicurezza dei tipi: Definisci interfacce TypeScript chiare per i tuoi dati account
- Validazione: Valida sempre i dati quando leggi dall’archiviazione persistente
- Gestione errori: Implementa blocchi try-catch appropriati per tutte le operazioni
- Sicurezza: Non archiviare dati sensibili come password in testo normale
- Gestione token: Aggiorna i token di autenticazione quando ripristini gli account
- Dimensione dati: Mantieni i dati archiviati al minimo per garantire operazioni di lettura/scrittura veloci
- Controlli null: Controlla sempre se i dati esistono prima di usarli
- Strategia di backup: Considera la sincronizzazione con backend per sicurezza aggiuntiva
Considerazioni sulla sicurezza
Section titled “Considerazioni sulla sicurezza”- I dati account sono archiviati utilizzando meccanismi di archiviazione sicura specifici della piattaforma
- I dati persistono attraverso disinstallazioni e reinstallazioni dell’app
- Considera di crittografare le informazioni sensibili prima dell’archiviazione
- Implementa una validazione appropriata dei dati quando leggi account archiviati
- Segui le linee guida della piattaforma per la gestione dei dati utente
- Utilizza token di autenticazione con scadenza per la sicurezza
- Cancella i dati account in modo appropriato al logout dell’utente
Implementazione piattaforma
Section titled “Implementazione piattaforma”- Utilizza iOS Keychain Services per archiviazione sicura e persistente
- I dati sopravvivono all’eliminazione dell’app e al ripristino del dispositivo
- Protetto dai meccanismi di sicurezza iOS
Android
Section titled “Android”- Utilizza Android Account Manager o preferenze condivise con backup
- Mantiene i dati attraverso reinstallazioni app e migrazioni dispositivo
- Protetto dalla sicurezza del sistema Android
Casi d’uso
Section titled “Casi d’uso”- Onboarding utente: Preserva il progresso dell’utente attraverso le reinstallazioni dell’app
- Recupero account: Ripristina le sessioni utente dopo gli aggiornamenti dell’app
- Archiviazione preferenze: Mantieni le impostazioni e configurazioni utente
- App offline-first: Archivia dati utente essenziali localmente
- Gestione sessione: Mantieni gli utenti loggati attraverso i riavvii dell’app
- Migrazione dispositivo: Trasferisci dati utente a nuovi dispositivi