Aiutare gli utenti a riprendere l’app senza problemi dopo un aggiornamento di Windows

I PC Windows richiedono un riavvio per applicare gli aggiornamenti di sicurezza di ogni mese. Oggi offriamo suggerimenti e best practice che possono aiutarti a riattivare senza problemi le tue applicazioni dopo un riavvio e a soddisfare gli utenti della tua app.

Alcuni utenti gestiscono autonomamente gli aggiornamenti (e i riavvii) di Windows. Altri preferiscono che i loro PC si riavviino automaticamente quando non sono in uso. In entrambi i casi, gli utenti in genere preferiscono trovare le proprie applicazioni esattamente come le hanno lasciate dopo un aggiornamento. Il loro flusso su Windows è più produttivo e divertente quando le app ripristinano lo stato, la posizione e le operazioni in sospeso dopo un aggiornamento.

Cosa significa questo per te come sviluppatore di applicazioni? Se la tua app è incentrata sulla documentazione, potresti voler aiutare gli utenti a ricordare il punto del documento che hanno modificato più di recente. Se la tua app aiuta gli utenti a modificare le immagini, prendi in considerazione la possibilità di salvare la pila di “annullamento” e/o di creare una copia temporanea dell’area di lavoro. Per gli sviluppatori di giochi, potrebbe essere utile implementare un rapido “salvataggio” e chiedere ai giocatori dove vorrebbero riprendere. In definitiva, le tue app possono offrire una continuità senza soluzione di continuità dopo un riavvio, per aggiornamenti o altro, seguendo alcune best practice:

  • Salvare lo stato dell’utente.
  • Ricorda come erano posizionate le loro viste precedenti.
  • Riavvia l’app dopo l’aggiornamento.

In questo post esploreremo le API native che puoi usare per salvare il lavoro di un utente dell’app e riprendere lo stato di un’app dopo un riavvio.

App UWP (Universal Windows Platform)

La piattaforma UWP (Universal Windows Platform) offre funzionalità di gestione del ciclo di vita alle applicazioni. Anche se un’app UWP non ha bisogno di nulla di speciale per essere riavviata e ripresa dopo un aggiornamento del sistema, è consigliabile salvare periodicamente lo stato dell’app.

Applicazioni Win32

Se stai sviluppando un’app desktop di Windows, puoi usare le API ARR (Application Recovery and Restart) per registrare l’app per il riavvio. In particolare, la registrazione per il riavvio consente alle applicazioni di chiudersi in modo pulito al riavvio del sistema e di riavviarle dopo il riavvio con argomenti predefiniti.

Indipendentemente dal fatto che tu stia creando app Win32 o usando SDK per app di Windows, puoi trovare esempi di utilizzo dell’API ARR in GitHub.

Oltre a registrare le app per il riavvio, è necessario considerare il modo migliore in cui un’app può riprendere il carico di lavoro precedente e ripristinare lo stato precedente. Le strategie comuni includono il salvataggio frequente su disco e la fornitura di contesto per riprendere lo stato negli argomenti usati durante la registrazione tramite l’API ARR. Di seguito è riportato un esempio di codice:

// Register for restart with the current value of app text box

RegisterApplicationRestart(counterTextBlock().Text().c_str(), 0);

// Update registration before crash with the new value of the app counter text box

RegisterApplicationRecoveryCallback(APPLICATION_RECOVERY_CALLBACK([](PVOID recoveryData){


     BOOL canceled;

     if (SUCCEEDED(ApplicationRecoveryInProgress(&canceled)) && !canceled)

     {

          const auto counter = static_cast<uint32_t*>(recoveryData);

          RegisterApplicationRestart(to_hstring(*counter).c_str(), 0);
     }

     ApplicationRecoveryFinished(true);

     return (DWORD)0;

     }), &_counter, RECOVERY_DEFAULT_PING_INTERVAL, 0);

App .NET

Analogamente alle app Win32, le app .NET possono registrarsi per il riavvio usando le API ARR. L’unica differenza consiste nell’utilizzo di p/Invoke per eseguire il wrapping delle chiamate API native. È possibile trovare codice di esempio .NET usando le API ARR in GitHub.

RegisterApplicationRestart(_counter.ToString(), 0);

// Best effort to register recovery callback to update restart arguments with the latest seconds counter value.

RegisterApplicationRecoveryCallback(new APPLICATION_RECOVERY_CALLBACK(p =>

{

     ApplicationRecoveryInProgress(out BOOL canceled);

     if (!canceled)

     {

          RegisterApplicationRestart(_counter.ToString(), 0);

     }

     ApplicationRecoveryFinished(true);

     return 0;

}), null, 5000, 0);

Le app con carichi di lavoro critici possono usare le API di alimentazione per mantenere il sistema in esecuzione e impedire un riavvio, ma questo non è permanente. Sia gli utenti che gli amministratori hanno bisogno che i dispositivi rimangano al sicuro e un sistema alla fine sarà costretto a riavviarsi dopo un aggiornamento. Inoltre, mantenere il sistema acceso può scaricare la batteria o utilizzare energia in eccesso.

Ti invitiamo a leggere altre informazioni su come usare in modo efficace le API Power per i servizi di sistema e le applicazioni critiche a esecuzione prolungata.

Condividi il tuo feedback

Hai suggerimenti o idee per migliorare le API? Hai altre domande su come l’app e Windows Update possono funzionare insieme? Condividi le tue opinioni inviandole tramite l’hub di Feedback (tasto Windows + F)!

Nota dell’editore – 20 luglio 2023 – Gli esempi di codice precedenti sono stati aggiornati dopo la pubblicazione iniziale.

Verified by MonsterInsights