Erste Schritte
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/de/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.
Installation
Section titled “Installation”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 syncPlattformunterstützung
Section titled “Plattformunterstützung”- iOS: Verwendet iOS Keychain Services für sicheren, persistenten Speicher
- Android: Verwendet Android Account Manager oder Shared Preferences mit Backup
Verwendungsbeispiel
Section titled “Verwendungsbeispiel”import { PersistentAccount } from '@capgo/capacitor-persistent-account';
// Ihre Kontodatenstruktur definiereninterface UserAccount { userId: string; username: string; email: string; preferences: { theme: string; notifications: boolean; };}
// Kontodaten speichernconst accountData: UserAccount = { userId: '12345', username: 'john_doe', email: 'john@example.com', preferences: { theme: 'dark', notifications: true }};
await PersistentAccount.saveAccount({ data: accountData });
// Kontodaten lesenconst result = await PersistentAccount.readAccount();if (result.data) { const account = result.data as UserAccount; console.log('Konto wiederhergestellt:', account.username);} else { console.log('Keine Kontodaten gefunden');}API-Referenz
Section titled “API-Referenz”saveAccount(options)
Section titled “saveAccount(options)”saveAccount(options: { data: unknown }) => Promise<void>Speichert Kontodaten sicher im persistenten Speicher.
| Param | Typ |
|---|---|
options | { data: unknown } |
readAccount()
Section titled “readAccount()”readAccount() => Promise<{ data: unknown | null }>Ruft gespeicherte Kontodaten ab.
Gibt zurück: Promise<{ data: unknown | null }>
Praktische Implementierung
Section titled “Praktische Implementierung”Vollständiges Auth Service-Beispiel
Section titled “Vollständiges Auth Service-Beispiel”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 { // Benutzerkonto nach Anmeldung speichern async saveUserAccount(user: UserAccount) { try { await PersistentAccount.saveAccount({ data: user }); console.log('Benutzerkonto erfolgreich gespeichert'); } catch (error) { console.error('Konto konnte nicht gespeichert werden:', error); throw error; } }
// Benutzerkonto beim App-Start wiederherstellen async restoreUserAccount(): Promise<UserAccount | null> { try { const result = await PersistentAccount.readAccount();
if (result.data) { const account = result.data as UserAccount; console.log('Benutzerkonto wiederhergestellt:', account.username); return account; }
console.log('Kein gespeichertes Konto gefunden'); return null; } catch (error) { console.error('Konto konnte nicht wiederhergestellt werden:', error); return null; } }
// Benutzereinstellungen aktualisieren 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); } }
// Kontodaten löschen (bei Abmeldung) async clearAccount() { try { await PersistentAccount.saveAccount({ data: null }); console.log('Kontodaten gelöscht'); } catch (error) { console.error('Konto konnte nicht gelöscht werden:', error); } }}
// Verwendungconst authService = new AuthService();
// Bei Anmeldungawait authService.saveUserAccount({ userId: '12345', username: 'john_doe', email: 'john@example.com', authToken: 'abc123xyz', preferences: { theme: 'dark', language: 'de', notifications: true }});
// Beim App-Startconst savedAccount = await authService.restoreUserAccount();if (savedAccount) { // Benutzer war zuvor angemeldet console.log('Willkommen zurück,', savedAccount.username);}
// Einstellungen aktualisierenawait authService.updatePreferences({ theme: 'light', notifications: false});
// Bei Abmeldungawait authService.clearAccount();App-Initialisierung mit Kontowiederherstellung
Section titled “App-Initialisierung mit Kontowiederherstellung”import { PersistentAccount } from '@capgo/capacitor-persistent-account';
async function initializeApp() { try { // Versuchen, gespeichertes Konto wiederherzustellen const result = await PersistentAccount.readAccount();
if (result.data) { const account = result.data as UserAccount;
// Token ist noch gültig prüfen const isValid = await validateAuthToken(account.authToken);
if (isValid) { // Benutzersitzung wiederherstellen setCurrentUser(account); navigateToHome(); } else { // Token abgelaufen, Anmeldung anzeigen navigateToLogin(); } } else { // Kein gespeichertes Konto, Anmeldung anzeigen navigateToLogin(); } } catch (error) { console.error('App konnte nicht initialisiert werden:', error); navigateToLogin(); }}
// Beim App-Start aufrufeninitializeApp();Mit Backend synchronisieren
Section titled “Mit Backend synchronisieren”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 { // Neueste Kontodaten vom Server abrufen const response = await fetch(`/api/users/${localAccount.userId}`); const serverAccount = await response.json();
// Serverdaten mit lokalen Einstellungen zusammenführen const mergedAccount: UserAccount = { ...serverAccount, preferences: { ...serverAccount.preferences, ...localAccount.preferences // Lokale Einstellungen haben Priorität } };
// Zusammengeführte Daten speichern await PersistentAccount.saveAccount({ data: mergedAccount });
return mergedAccount; } catch (error) { console.error('Synchronisation mit Backend fehlgeschlagen:', error); // Lokales Konto als Fallback zurückgeben return localAccount; } }
return null;}Bewährte Methoden
Section titled “Bewährte Methoden”- Typsicherheit: Klare TypeScript-Schnittstellen für Ihre Kontodaten definieren
- Validierung: Daten beim Lesen aus persistentem Speicher immer validieren
- Fehlerbehandlung: Ordnungsgemäße try-catch-Blöcke für alle Operationen implementieren
- Sicherheit: Sensible Daten wie Passwörter nicht im Klartext speichern
- Token-Verwaltung: Auth-Token beim Wiederherstellen von Konten aktualisieren
- Datengröße: Gespeicherte Daten minimal halten, um schnelle Lese-/Schreibvorgänge zu gewährleisten
- Null-Prüfungen: Immer prüfen, ob Daten vorhanden sind, bevor sie verwendet werden
- Backup-Strategie: Für zusätzliche Sicherheit Synchronisation mit Backend erwägen
Sicherheitsüberlegungen
Section titled “Sicherheitsüberlegungen”- Kontodaten werden mit plattformspezifischen sicheren Speichermechanismen gespeichert
- Daten bleiben über App-Deinstallationen und -Neuinstallationen hinweg erhalten
- Verschlüsselung sensibler Informationen vor dem Speichern erwägen
- Ordnungsgemäße Datenvalidierung beim Lesen gespeicherter Konten implementieren
- Plattformrichtlinien für Benutzerdatenverarbeitung befolgen
- Authentifizierungstoken mit Ablauf für Sicherheit verwenden
- Kontodaten bei Benutzerabmeldung angemessen löschen
Plattform-Implementierung
Section titled “Plattform-Implementierung”- Nutzt iOS Keychain Services für sicheren, persistenten Speicher
- Daten überleben App-Löschung und Gerätwiederherstellungen
- Geschützt durch iOS-Sicherheitsmechanismen
Android
Section titled “Android”- Verwendet Android Account Manager oder Shared Preferences mit Backup
- Behält Daten über App-Neuinstallationen und Gerätemigrationen hinweg
- Geschützt durch Android-Systemsicherheit
Anwendungsfälle
Section titled “Anwendungsfälle”- Benutzer-Onboarding: Benutzerfortschritt durch App-Neuinstallationen bewahren
- Kontowiederherstellung: Benutzersitzungen nach App-Updates wiederherstellen
- Einstellungsspeicherung: Benutzereinstellungen und Konfigurationen beibehalten
- Offline-First-Apps: Wesentliche Benutzerdaten lokal speichern
- Sitzungsverwaltung: Benutzer über App-Neustarts hinweg angemeldet halten
- Gerätemigration: Benutzerdaten auf neue Geräte übertragen