softmixx background

Datenbanken in Web Apps

Javascript, Projekte, Datenbanken

PWA Daten dauerhaft lokal speichern

[ 10.12.2021 | Alex]
Wer sich der Entwicklung von PWA's (Progressive Web Apps) verschrieben hat, wird regelmäßig ein flaues Gefühl im Magen haben, wenn es um die lokale Speicherung von Daten im Browserumfeld des Clients geht. Zu einfach und unkontrolliert können Daten, die man zur Offline Verwendung auf dem Gerät des Benutzers speichert, mal vom Benutzer selbst mal vom Browser gelöscht werden.

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 } );

     }    

    });

   }

    }