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!

RELATED POSTS

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.

View all posts by Ryan