In iOS, le applicazioni non possono fare molto in background. Le applicazioni sono solo in grado di fare un set limitato di attività per conservare la batteria.
Ma se succede qualcosa di interessante speri che l’utente ne venga a conoscenza anche se in quel momento non sta usando l’applicazione. Vero?
Ad esempio, l’utente riceve un nuovo tweet, la sua squadra preferita vince la partita, oppure la cena pronta. Siccome l’applicazione non sta “girando”, non posso controllare questi eventi.
Fortunatamente, Apple ha fornito una soluzione a tutto questo. anziché che fa controllare all’applicazione tutti gli eventi e lavorare in background, puoi scrivere un “componente” lato server che lo faccia al posto tuo.
Quando l’evento di interesse accade, il componente server può inviare all’applicazione una notifica push!
Queste sono le tre cose che una notifica può fare:
- Mostrare un breve messaggio
- Suono di avviso
- Impostare un numero nel badge dell’icona dell’applicazione
Puoi combinare tutte queste funzioni nel modo migliore per la tua applicazione.
In questo tutorial imparerai a configurare la tua applicazione a ricevere notifiche push e ricevere un messaggio di prova.
Iniziamo: breve panoramica
Far funzionare le notifiche nell’applicazione richiede un minimo di sforzo. Ecco un’immagine esplicativa del funzionamento di tutto il sistema push.
L’app abilita le notifiche push. L’utente dovrà confermare che desidera ricevere queste notifiche.
- L’app riceve un “token del dispositivo”. Puoi pensare al token come l’indirizzo a cui spedire le notifiche.
- L’applicazione invia al server il token
- Quando succede qualcosa di interessante, il server invia una notifica al: “Apple Push Notification Service” o APNS per abbreviare.
- APNS invia la notifica al dispositivo dell’utente.
Quando il dispositivo dell’utente riceve la notifica mostra un Alert, suona oppure aggiorna il badge dell’icona.
L’utente a questo punto può lanciare direttamente l’applicazione che penserà a gestire la notifica, ad esempio portando l’utente direttamente nella parte dell’app interessata.
Dopo questa introduzione teorica passiamo alla pratica!
Per questa dimostrazione ho intenzione di utilizzare Parse (un backend potente e scalabile per le proprie app) quindi il primo passo da effettuare è proprio quello di registrarvi.
Creazione di un certificato SSl
1)aprire l’applicazione Accesso Portachiavi
2)Accesso Portachiavi->Assistente Certificato->Richiedi un certificato da un Autorità di Certificazione
Creazione di un nuovo App ID
Per prima cosa rechiamoci presso il seguente indirizzo e creiamo un nuovo app ID
Spuntare la casella Push Notifications
Creazione di un file Provisioning
Alla fine della procedura scarichiamolo e effettuiamo un doppio click sul file scaricato.
Gestione Certificati Parte 1
Torniamo nella sezione App ID e selezioniamo quella che abbiamo creato poco fa:
1)Facciamo un click sul pulsante Setting
3)Carichiamo il certificato
1)Click su generate
2)Download
3)Done
Gestione Certificati Parte 2
1) doppio click sul certificato appena scaricato
2)click su aggiungi
3)esportiamo il certificato
Gestione Parse
Andiamo su parse.com e creiamo una nuova applicazione
Abilitiamo il servizio di notifiche e carichiamo il certificato con estensione .p12
Xcode – Creiamo la nostra applicazione
Creiamo un nuovo progetto di tipo single view application.
1)Impostiamo il bundle indetifier
Dal seguente link scarichiamo l’SDK di Parse e aggiungiamolo nel seguente modo:
Click su add other e importiamo l’ SDK
Inoltre importiamo i seguenti framework:
Ora all’interno del file AppDelegate.m
Importiamo Parse
[code lang=”obj-c”]
#import <Parse/Parse.h>
[/code]
nel metodo
[code lang=”obj-c”]
– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
[/code]
[code lang=”obj-c”]
[Parse setApplicationId:@"" clientKey:@""];
[[UIApplication sharedApplication]registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound];
[/code]
L’application id e il clientKey sono reperibili su Parse
Inoltre sempre nel file appDelegate dobbiamo inserire questi metodi :
[code lang=”obj-c”]
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
[PFPush storeDeviceToken:deviceToken];
[PFPush subscribeToChannelInBackground:@""];
}
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
NSLog(@"Failed to register for Push %@",error);
}
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
[PFPush handlePush:userInfo];
}
[/code]
Questi metodi si occupano di gestire le notifiche.
Infine non ci resta che inviare le nostre notifiche dal pannello di controllo di parse
Vi ricordo che il servizio non funziona sul simulatore quindi se desiderate testare il tutto dovrete farlo su un dispositivo reale.