Già in passato qui su devAPP abbiamo parlato di notifiche Push per applicazioni iPhone e iPad e di come implementarle (più precisamente nei tutorial T#016 e T#110), ma mentre nei due tutoria precedenti si illustrava come creare un meccanismo di notifiche utilizzando un proprio server, oggi vedremo come arrivare ad un risultato analogo appoggiarci però ad un servizio esterno, illustrando tutti gli step per integralo nelle nostre applicazioni iOS.
I servizi di terze parti per implementare notifiche push sono sicuramente in aumento; per il nostro tutorial abbiamo scelto di utilizzare Pushwoosh. Il servizio offre infatti un piano base gratuito, così che sia possibile per tutti testarlo senza spesa.
Step 1: Creare un account
Il primo step per iniziare ad utilizzare Pushwoosh consiste nel creare un account sul sito del servizio. Il form di registrazione è all’indirizzo https://cp.pushwoosh.com/register.
Una volta completata la registrazione, sarà possibile accedere al pannello di controllo associato al nostro account tramite l’indirizzo https://cp.pushwoosh.com. Da questo pannello potremo gestire e programmare le notifiche, visualizzare i report, nonché scaricare l’SDK necessario ad integrare Pushwoosh nelle nostre app iOS.
Step 2: Ottenere i certificati
Per poter produrre notifiche push, è necessario disporre di un certificato che ci permetta di firmarle. Per ottenere tale certificato, dobbiamo generare un richiesta tramite l’applicazione Keychain Access, ecco i passi da seguire:
- Aprire l’applicazione Keychain Access sul nostro Mac (Applications –> Utilities)
- Dal menu “Keychain Access”, selezionare “Certificate Assistant” e poi “Request a Certificate from a Certificate Authority”

- Compilare il form presentato con nome ed indirizzo mail, facendo attenzione ad attivare il radio button “saved to disk”, poi salvare il file generato. Avremo così ottenuto un file .csr, che ci sarà utile negli step successivi.

- Dal Provisioning Portal del sito Apple Developers selezionare AppIDs. Sarà visualizzato un elenco di tutti i nostri App ID, da cui selezioneremo quello desiderato cliccando su “Configure”.
(Questo tutoria assume che abbiamo già creato un App ID per l’applicazione a cui desideriamo aggiungere le notifiche push. In caso questo non sia vero, sarà necessario crearne uno utilizzando il nostro pannello di controllo sviluppatori come illustrato da Apple. E’ necessario tenere presente che il profilo utilizzato non può contenere wild-card; in caso il profilo scelto ne contenga, sarà necessario crearne uno nuovo).


- Nella tabella visualizzata, mettere la spunta a “Enable for Apple Push Notification service”
- Selezionare ora “Configure” per la riga “Development Push SSL Certificate”

- Nella finestra di dialogo visualizzata, procedere sino alla selezione del file .csr. Scegliere ora il file precedentemente creato tramite l’applicazione Keychain Access e caricarlo. Sarà ora generato il certificato APNs SSL: un messaggio di conferma attesterà la corretta conclusione dell’operazione.

- E’ ora visibile un tasto “Download” accanto alla voce “Development Push SSL Certificate”: utilizzarlo per salvare in locale una copia del certificato.
- Una volta scaricato il certificato, con un doppio click installiamolo nel nostro Keychain. Questo certificato SSL sarà utilizzato da Pushwoosh per contattare il server APNs
- Dall’applicazione Keychain Access, espandere la voce relativa al certificato installato. Click destro sulla chiave privata ad esso associata e selezionare dal menu “Export…”
- Ci sarà chiesto di scegliere una password e sarà esportato un file in formato .p12, che caricheremo in seguito sul server Pushwoosh.
Step 3: Configurazione di Pushwoosh (per lo sviluppo)
- Dall’indirizzo https://cp.pushwoosh.com eseguire il login e selezionare “Add New”. Compilare il form e creare una nuova applicazione.
- Selezionata l’applicazione appena creata, click su “Edit” nel menu laterale destro per configurarla. In questo tutorial illustreremo la configurazione per iOS, ma, come si nota dal menu, il servizio è configurabile anche per numerosi altri sistemi.

- Carichiamo ora i due file generati negli step precedenti: il file .p12 (esportato da Keychain Access) ed il file .cer (scaricato da Provisioning Portal)
- Inserire la password scelta al momento dell’esportazione del file .p12
- Selezionare il gateway desiderato (“Sandbox” per applicazioni in sviluppo)

- Prima di lasciare il pannello di controllo, annotare il codice assegnato alla nostra applicazione, visibile appena sotto il nome della stessa

Step 4: Integrazione nella nostra app
- Dal pannello di controllo Pushwoosh, scaricare l’SDK per iOS. E’ anche possibile scaricare un’app di esempio.

- Decomprimere il file scaricato.
- Aprire XCode e importare l’SDK scaricata. Per effettuare l’import, click sul simbolo “+” in basso a sinistra e selezionare la voce “Add files to…”. Ci sarà richiesto di selezionare i file da importare e noi sceglieremo il file “PushNotificationManager.xcodeproj” dall’archivio appena decompresso.
- Selezionare il nostro progetto e aprire il tab “Build Settings”. Trovare la voce “Header Search Paths” ed aggiungere ai valori presenti il percorso per la cartella “Clases” dell’archivio decompresso. poi trovare la voce “Other Linker Flags” ed inserire il valore “-ObjC”.


- Aggiungere al file AppDelegate.m il seguente codice:
#import "PushNotificationManager.h"
- (void) onPushAccepted:(PushNotificationManager *)pushManager withNotification:(NSDictionary *)pushNotification {
NSLog(@"Push notification received");
}
- Aggiungere al file Info.plist la chiave Pushwoosh_APPID ed assegnarle il codice dell’applicazione che abbiamo ottenuto nel pannello di controllo in precedenza.
Ora siamo pronti per testare la nostra app, completa di notifiche push.
Ricordiamo sempre che le notifiche possono funzionare solo su device reali e non sul simulatore. Per inviare il nostro primo push, non ci resta che:
- accedere al pannello di controllo Pushwoosh all’indirizzo https://cp.pushwoosh.com
- Selezionare la nostra applicazione e scrivere il testo. Notiamo che utilizzando il form avanzato, sarà anche possibile programmare l’invio in data futura.
Step 5: Da sviluppo a produzione
Una volta testata la nostra applicazione e assicuratici che tutto funziona a dovere, non ci rimane che portarla in produzione e prepararla alla pubblicazione.
- Dal Provisioning portal, selezionare “Configure” per la riga “Production Push SSL Certificate” relativa alla nostra applicazione
- Ripetere i passi già eseguiti per il certificato utilizzato per lo sviluppo e salvare in locale il certificato .cer
- Accedere al pannello di controllo Pushwoosh e selezionare la nostra applicazione. Dal menu laterale destro, scegliere ora “Edit” relativamente alla voce iOS.
- Dalla finestra visualizzata, caricare il certificato di produzione ottenuto al passo precedente, spostando la selezione da “Sandbox” a “Production”.
Spero il tutorial vi sia utile 🙂
Alla prossima










35 Responses to “T#115 – Come implementare le notifiche push nelle applicazioni iOS con Pushwoosh”
26 Marzo 2013
LorenzoArticolo interessante. Grandi.
Una curiosità:
Ho un db SQLite che risiede su di un server: è possibile utilizzare Pushwoosh in modo tale da avvertire gli utenti (chiaramente tramite notifica push) quando viene aggiornato il db?
Grazie,
Lorenzo
26 Marzo 2013
Elisa BarindelliCiao Lorenzo, purtroppo la risposta è no, non direttamente.
Il servizio permette di programmare le notifiche, ma non di agganciarsi direttamente ad un database da monitorare. Dovresti in caso-credo, ma non ho mai provato-sviluppare una tua interfaccia che tenga monitorato il Database e si agganci alle API Pushwoosh per fargli inviare la notifica o schedularla.
Non è ricordo tuttavia se l’utilizzo delle api faccia parte del pacchetto gratuito o sia presente solo nel servizio premium.
29 Marzo 2013
ManuelCiao!
Ho seguito la guida e tutto, aiutandomi con altri tutoria..
ma il problema è che IOS non identifica come se è un app che richiede di utilizzare le push.. hai presente il solito messagiono: “App_nome” vorrebbe inviatri notifiche push bla bla
Dove è il problema???
30 Marzo 2013
Elisa BarindelliQuando il messaggio non appare, di solito si tratta di un problema con i certificati.
-Assicurati di averli scaricati DOPO aver abilitato le notifiche push
-Controlla di aver impostato correttamente l’ambiente “sandbox” o “produzione” sul pannello di controllo Pushwoosh
Fatto questo, ti consiglio di provare a leggere con attenzione il lob prodotto quando lanci l’applicazione: le librerie Pushwoosh vi indicano gli errore riscontrati.
5 Aprile 2013
LorenzoGrazie mile Elisa per la info. Complimenti di nuovo per l’articolo.
Lorenzo
10 Aprile 2013
MatteoCiao,
tutorial utilissimo, funziona perfettamente con l’app di test scaricata da PushWoosh, ma al momento di imlementarla nella mia app aggiungendo il singolo metodo indicato, all’avvio non succede nulla, ovvero non mi chiede se voglio ricevere notifiche push (messaggio classico), cosa ho omesso?
grazie
11 Aprile 2013
Elisa BarindelliCiao Matteo.
Quando il messaggio non appare, di solito si tratta di un problema con i certificati. Ti consiglio di ripercorrere tutta la procedura per crearli e caricarli, a volte basta una svista e le notifiche non funzionano.
Il log inoltre, contiene molte info utili: prova a scorrere con attenzione quello prodotto al lancio della tua app.
In bocca al lupo!
13 Aprile 2013
PaoloSalve, ho provato la procedura per phonegap ios è devo dire che funziona. Un unico problema però, sul iphone arriva il classico messaggio push, ma l’icona dell’applicazione non presenta il classico numeretto rosso 1. Avete idea perchè ?
Grazie
16 Aprile 2013
Elisa BarindelliCiao Paolo.
Per mostrare anche il numero, quando crei la notifica push dal pannello di controllo Pushwoosh, scegli la modalità avanzata.
In questa modalità, sotto al campo in cui inserire il testo della notifica, c’è anche la possibilità di impostare il numero che il badge mostrerà.
17 Aprile 2013
PaoloGrazie Elisa, funziona. Ho però un altro problema, spero di non disturbarti troppo. La maggior parte delle mie App è fatta con phonegap, quindi ho potuto usare solo una parte della tua guida, per il resto ho preso spunto dal sito. Comunque con la prima App funziona tutto perfettamente. Ho provato a replicare tutto con la seconda App ma le notifiche non arrivano. La prima volta che ho eseguito l’app mi ha chiesto se volevo accettare le notifiche (credo quindi che la parte di javascript venga letta). Non vedo però nessuna sottoscrizione, sembra quindi che l’app non si connetta al server di pushwoosh. Eppure name ed id sono corretti. I certificati anche, ho notato però che nel portachiavi il certificato ha lo stesso nome di quello della prima App, una data di creazione diversa, ma lo stesso nome. Non sò come procedere ! Qualche idea ?
Grazie
17 Aprile 2013
PaoloCiao Elisa che ne dici se integriamo la tua guida con una sezione per chi usa phonegap ?
19 Aprile 2013
Elisa BarindelliCiao Paolo, grazie dell’idea su Phonegap, ti contatto in privato e ne parliamo.
Quanto alla tua app, sei riuscito a farla funzionare?
Il log non dice nulla di utile?
20 Aprile 2013
PaoloHo risolto grazie, ho notato però una cosa che non capisco, quando arriva il messaggio push il telefono lo notifica, fin qui tutto ok, se tocco la notifica si apre l’app e si visualizza il messaggio, se invece non considero la notifica e apro direttamente l’app che ha pure il suo bel numeretto 1 rosso, non compare il messaggio. Questo è sicuramente un problema perchè la notifica resta a display pochi secondi, si deve poter consultare il messaggio anche aprendo l’app !
Qualcuno ha notato questo problema ?
Grazie
30 Aprile 2013
Elisa BarindelliSe ho capito bene la situazione, la visualizzazione del messaggio viene attivata solo al tap della notifica push, non all’avvio dell’app.
Per risolvere, prova ad inserire un controllo anche al passaggio in primo piano dell’app, che verifichi se c’è qualche messaggio da visualizzare.
13 Maggio 2013
giulioSalve, ottimo tutorial. Sapete se il codice sorgente che forniscono (hostato su github) lo si può modificare? Sapete sotto quale licenza è distribuito? sul repo non c’è scritto..
GRazie
13 Giugno 2013
mdjaxxciao Elisa , ho questo tipo di problema: faccio tutto bene ma al momento di esportare il certificato che ho scaricato da apple>Certificate,Identifier & profiles> App Ids e che ho installato nel “PORTACHIAVI”
non mi fa esportare nell estensione .p12, come mai!!!!
grazie!!!!
13 Giugno 2013
mdjaxxciao Elisa, volevo chiederti è possibile creare dei pannelli di controllo per i clienti ,
grazie!!!
13 Giugno 2013
mdjaxxElisa.. A I U T O !!! scusa se ti disturbo!
QUANDO VADO AD INSERIRE IL CODICE NEL FILE AppDelegate.m
e vado ad importare:#import “PushNotificationManager.h”
mi dice:file not found!!!!
non so piu cosa fare sto impazzendo ,
grazie!!
13 Giugno 2013
Elisa BarindelliCiao mdjaxx.
No, non è possibile creare pannelli per i clienti, almeno non che io sappia nella versione FREE di Pushwoosh
Quanto al “File not found” prova a controllare meglio se hai inserito correttamente il path per gli header con il parametro “Header Search Paths”.
14 Giugno 2013
mdjaxxElisa.. Grazie ..adesso provo e poi ti faccio sapere!
mario mdjaxx.
14 Giugno 2013
mdjaxxciao Elisa niente.:(.. per cortesia mi mandi un link ideale da inserire nel HEADER SERACH PATHS per questo tutoria fammi questa cortesia.. scusami perchè non ho capito se deve essEre un link interno nella mia applicazione o esterno fino al mio computer..dove ho scompattato lo zip (push-notifications-sdk-master) scaricato da PUSHWOOSH->https://github.com
…grazie!!!!
ciao
14 Giugno 2013
mdjaxxforse sbaglio quando carico il progetto….la spunta “copy items into destination group’s folder (if needed) come deve essere?
grazie!!! scusa se ti rompo ma non vedo l’ora di vedere la mia app con le push attivate 🙂
…..grazie!!
14 Giugno 2013
Elisa BarindelliLa spunta deve essere selezionata.
Il link a “header search path” è mostrato nel tutorial, con questa immagine: http://www.devapp.it/wordpress/wp-content/uploads/2013/03/xc1.png
Ciao!
15 Giugno 2013
mdjaxxciao, Elisa!!
scusami !! se ti rompo ..ma non riesco proprio ad “#import “PushNotificationManager.h”
mi da sempre file not found!
il link che inserisco nel “SERCH PATHS” è il seguente ed è il percorso dove ho decompresso il file.
/Users/xxxxxxxxxxxx/Documents/APPS/xxxxxxxxx/new_xxxxxxx/push-notifications-sdk-master/SDK/iPhone/Classes/
sbaglio qcosa?
il resto del tutorial l’ ho seguito passo passo “alla lettera”!
grazie!!
ciaoooooo!!!
16 Giugno 2013
mdjaxxciao Elisa finalmente ci sono riuscito ho inserito il link giusto e adesso mi vete tutto …..
ho un problema con i certificati……. quando creo il certificato in apple lo scarico ci clicco su 2 volte vado nel porachiavi loo vedo ci clicco col destro seleziono esporta ….. MA NON MI FA SALVARE IN ESTENSIONE.P12…… COME MAI COSA SBAGLIO!!! .. io creo un certificato del tipo APNs Development IOS è giusto?
CIAO E SCUSA SE TI ROMPO!!
mario mdjaxx
17 Giugno 2013
mdjaxxciao Elisa!! non mandarmi a quel paese!!
nel frattempo ho rifatto questo tutorial almeno 10 volte, A I U T O!… NON FUNZIONA,
ADESSO FACCIO TUTTO BENE .. MA NON MI FUNZIONA…..
DOVE SBAGLIO … FORSE.. DEVO AGGIUNGERE QUALCHE FRAMEWORK?
HO PROVATO ANCHE A GENERARE UN Developer Provisoning Profile e lho inserito nel code signing identity…. non riesco a capire!!
scusami …
17 Giugno 2013
Elisa BarindelliCiao Mdjazz,
come al solito il primo consiglio è quello di provare a leggere i log, che spesso offrono un grande aiuto.
Se non ne vien fuori nulla, la soluzione per noi programmatori è sempre la stessa: debuggare un pezzo alla volta e con pazienza, finchè non si scopre l’inghippo.
Buon lavoro! 😉
18 Giugno 2013
mdjaxxciao Elisa..
quando lancio l’app mi compare il messaggio ” L’APP .. VUOLE INVIARTI LE NOTIFICHE PUSH etc.etc.” io accetto con OK .. poi vado su PUSHWOOSH invio le push … ma non mi arrivano..
calcola che ho inserito in AppDelegate.m questo codice che prima non c’era.:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
ciao..
18 Giugno 2013
mdjaxxCiao Elisa, scusami mi sorge un dubbio?:
io ho gia distribuito un app AdHoc ad una persona adesso volevo integrare le push Notification . domanda: che GATEWAY devo selezionare? e a questo punto anche i certificati cosa devo selezionare :
grazie…
grazie davvero per la tua pazienza con me!:)!!!!
p.s. per cortesia mi rispondi anche al post precedente…. grazie!!!!!
19 Giugno 2013
Elisa BarindelliPer la distro ad hoc io userei la licenza di produzione.
Per il post precedente, mi spiace ma non saprei proprio come aiutarti
20 Giugno 2013
mdjaxxCiao Elisa.. Grazie.
Mdjaxx
11 Luglio 2013
GiovanniCiao Elisa, ottimo tutorial… però ho provato ad utilizzare il progetto di esempio fornito su pushwoosh e tutto funziona alla perfezione, ma tentando di utilizzare il mio progetto, quando vado ad eseguire l’app sul mio telefono, il server di pushwoosh, non lo registra… quale è lo script per xcode che permette la registrazione del token sul server… e dove lo dovrei inserire..grazie..!
30 Agosto 2013
crisAlbCiao, complimenti per il tutorial prima di tutto, ho eseguito attentamente tutti i passi e provato con entrambi i certificati ma niente, io ho già un app realizzata tempo fà e volevo aggiungere questa funzionalità, ma quando apro l’app non visualizzo il messaggio di conferma per abilitare le modifiche.. come posso fare ? (nei log non mi esce nemmeno un errore) sembra che non “legga” proprio il fatto delle modifiche, non è che devo inserire qualche stringa di codice nel mainVIew della mia app??
19 Gennaio 2014
PaoloCiao Elisa, ti chiedo un paio di chiarimenti:
Importare l’intera cartella scaricata mi sembra inutile, ho provato a trascinare la sola cartella della classe dentro il progetto e mi sembra funzioni lo stesso. In questo modo mi sembra tutto più pulito.
La parte di specificare il percorso è poco chiara e non l’ho fatta, mi sembra funzioni ugualmente, sei sicura serva ? Forse avendo trascinato la cartella della classe, specificare il percorso diventa superfluo.
La notifica arriva e sull’icona dell’APP compare anche il numerato 1, il problema è che se tocchi la notifica, si apre l’app ma non visualizza il messaggio, di conseguenza il numeretto sull’icona non si toglie.
Dove è il problema ??
Uso pushwoosh con alcune mie App fatte con phonegap è questo inconveniente non si presenta, se tocco la notifica si apre l’app e compare una finestra di allert con il testo.
La pagina web di avvio di phonegap ha del codice per visualizzare questo allerta, ma su una app nativa come si fa ?
Grazie
22 Gennaio 2014
DavideCiao Elisa
Io ho seguito tutti i passaggi del tutorial ma quando testo l’app mi da questo errore.
Pushwoosh Error
Yuor provisioning profile does not have APS entry. Please make your
profile push compatible.
Dove sto sbagliando?
Ciao e grazie di tutto