PWA Daten dauerhaft lokal speichern
Dieser Unsicherheit läßt sich mit der Web API StorageManager vorbeugen und eine Persistenz der App Daten herbeiführen.
Die Implementation der API in Browsern definiert Funktionen, mit denen explizit die dauerhafte Speicherung der Daten einer Webanwendung angefordert werden kann. Ob diese Anforderung erfolgreich ist, hängt vom jeweiligen Browser oder vom Benutzer ab. Chrome entscheidet "silent" selber, Firefox öffnet einen Dialog für Anwender, damit sie entscheiden. Ich habe mich daher für meine PWA's entschieden, nach der Installation der App die Daten als persistent zu kennzeichnen.
beeApp.install_event.prompt();
// uc.outcome: "accepted" or "dismissed".
const uc = await beeApp.install_event.userChoice;
beeApp.install_event = null;
beeApp.install_later = false;
if( uc.outcome == "accepted" ){
if (navigator.storage && navigator.storage.persist ){navigator.storage.persisted().then(function(persistent) {
beeOptions.is_storage_persistent = persistent;
if( !beeOptions.is_storage_persistent ){
navigator.storage.persist().then(function(persistent) {
beeOptions.is_storage_persistent = persistent;
storage.set( {'options' : beeOptions } );
if( APP_DEBUG ) console.log("PWA storage is " + ( persistent ? "" :"not ") + "persistent");
});
} else {
storage.set( {'options' : beeOptions } );
}
});
}
}