Come implementare le notifiche push con Parse

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.

push-090211-1-550x310

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.

Push-Overview-467x500

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

13 10-09 AM.jpg

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

Schermata 2013-06-11 alle 21.20.13

Spuntare la casella Push Notifications

Creazione di un file Provisioning

Schermata 2013-06-11 alle 21.25.50

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:

Schermata 2013-06-11 alle 21.38.09

1)Facciamo un click sul pulsante Setting

13 10-30 AM.jpg

3)Carichiamo  il certificato

Schermata 2013-06-11 alle 21.42.33

1)Click su generate

2)Download

3)Done

Gestione Certificati Parte 2

1) doppio click sul certificato appena scaricato

Schermata 2013-06-11 alle 21.50.25

2)click su aggiungi

3)esportiamo il certificato

Schermata 2013-06-11 alle 21.53.47

Gestione Parse

Andiamo su parse.com e creiamo una nuova applicazione

Schermata 2013-06-11 alle 21.57.29

Abilitiamo il servizio di notifiche e carichiamo il certificato con estensione .p12

push_settings-1

Xcode – Creiamo la nostra applicazione

Creiamo un nuovo progetto di tipo single view application.

1)Impostiamo il bundle indetifier

Schermata 2013-06-11 alle 22.03.41

Dal seguente link scarichiamo l’SDK di Parse e aggiungiamolo nel seguente modo:

Schermata 2013-06-11 alle 22.05.46

Click su add other e importiamo l’ SDK

Inoltre importiamo i seguenti framework:

Schermata 2013-06-11 alle 22.19.52

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

Schermata 2013-06-11 alle 22.15.24

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

Schermata 2013-06-11 alle 22.21.28

Vi ricordo che il servizio non funziona sul simulatore quindi se desiderate testare il tutto dovrete farlo su un dispositivo reale.