Come forzare la chiusura (shutdown) di una App iOS in Objective C

Come forzare la chiusura (shutdown) di una App iOS in Objective C

Durante lo sviluppo di una app iOS non è insolito che si presenti la necessità di effettuare la chiusura forzata - in inglese, lo shutdown - dell'applicazione: parliamo, per intenderci, del classico pulsante Exit, presente nella maggior parte delle App Android ma generalmente non utilizzato in ambiente iOS, dove si preferisce mandare la App in background e lasciare che sia poi il sistema a gestirne il carico a livello di risorse.

In effetti il sistema iOS non sembra prevedere una funzione che consenta di ottenere in modo programmatico quello che in termine tecnico è noto come graceful shutdown, ovvero una chiusura che non provochi - o rischi di provocare - un vero e proprio crash dell'applicazione: il modo preferibile per "chiudere" una App è simulare la pressione del tasto Home, che provoca per l'appunto l'invio della stessa in background.

Se vogliamo rispettare questa filosofia, possiamo limitarci a utilizzare la seguente istruzione, che emula la pressione del tasto Home in modo programmatico:

Nel caso in cui invece volessimo provocare una chiusura forzata della App, possiamo usare il seguente comando:

Attenzione, però: il comando exit provoca l'interruzione immediata dell'applicazione con tanto di errorlevel (il numero tra parentesi)... in altre parole, un vero e proprio crash: nulla di più dissimile dal graceful shutdown di cui sopra! Per questo motivo la Apple scoraggia fortemente l'utilizzo del comando exit, il quale peraltro rischia di provocare effetti collaterali a livello di esperienza utente.

Tutto ciò premesso, nei casi in cui il semplice invio in background non è sufficiente è possibile coniugare i due metodi nel seguente modo per rendere il tutto leggermente più fluido agli occhi dell'utilizzatore finale:

In questo modo verranno compiute in sequenza le seguenti operazioni:

  • L'App verrà inviata in background, simulando la pressione del tasto Home da parte dell'utente.
  • Il sistema attenderà 3 secondi, sufficienti a completare la procedura di invio in  background e a concludere eventuali attività ancora in corso.
  • Il sistema arresterà l'app, provocando una uscita forzata con errorlevel 0.

Questo un esempio di implementazione del metodo appena descritto all'interno di un classico bottone, con tanto di confirmation alert:

Per il momento è tutto: felice shutdown!

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.