2009-07-03 12 views
48

È possibile provare i servizi di notifica push Apple senza un'applicazione iPhone? (Creazione di un emulatore su Windows?)Come posso testare Apple Push Notification Service senza un iPhone?

Se non lo è, come posso testarlo? C'è un'applicazione di esempio gratuita compilata per farlo?

Ho creato il server provider, ma ho bisogno di testare la funzionalità.

+0

E 'tempo di aggiornare migliore risposta. La biblioteca della mia risposta è così utile, grazie a "acoomans" per questo! – kaspartus

risposta

64

Mi dispiace dirlo, ma è necessario trovare dell'hardware per testare questa funzionalità.

Le notifiche push non sono disponibili nel simulatore. Richiedono un profilo di provisioning da iTunes Connect e, quindi, devono essere installati su un dispositivo. Ciò significa anche che dovrai probabilmente essere accettato nel programma per sviluppatori Apple iPhone e pagare i tuoi $ 99.

Sul lato positivo, con l'aggiornamento di iPhone OS 3.0, è possibile testare questa funzionalità su qualsiasi dispositivo, inclusi gli iPhone di prima generazione.

+2

mi sono imbattuto nello stesso problema, la risposta non è chiara parlando della seconda parte della domanda: 'Se non lo è, come posso testarlo? C'è un'applicazione di esempio gratuita compilata per farlo? Ho creato il server provider, ma ho bisogno di testare la funzionalità. – JackLeo

+16

È chiaro. Hai bisogno di un dispositivo per testare. –

5

Il simulatore non esegue notifiche push.

E per passare da un server, è necessario disporre di dispositivi (s) per spingere così come la vostra app su quel dispositivo.

Il token contiene l'identità dell'app e l'ID del dispositivo.

43

Non è possibile verificare le notifiche push reali. Tuttavia,, è possibile verificare la risposta della tua app a una notifica push simulata creando un metodo di attivazione e attivazione manuale del metodo - application:application didReceiveRemoteNotification:notification di AppDelegate.

Per attivare questo da una diversa classe (come un UIViewController):

[[[UIApplication sharedApplication] delegate] 
        application:[UIApplication sharedApplication] 
    didReceiveRemoteNotification:testNotification]; 

Il testNotification dovrebbe avere lo stesso formato di una vera e propria comunicazione, vale a dire un NSDictionary che contiene oggetti elenco di proprietà più NSNull.

Ecco un esempio di come fornire la testNotification sopra:

NSMutableDictionary *notification = [[NSMutableDictionary alloc] init]; 
[notification setValue:@"Test" forKey:@"alert"]; 
[notification setValue:@"default" forKey:@"sound"]; 

NSMutableDictionary *testNotification = [[NSMutableDictionary alloc] init]; 
[testNotification setValue:notification forKey:@"aps"]; 

Questo dovrebbe creare un NSDictionary di notifica ragionevole con cui lavorare.

+0

c'è qualche esempio di implementazione di questo trovato da qualche parte? –

+0

Non ne ho uno (l'implementazione del mio test richiede un percorso diverso, anche se in realtà dovrebbe fare ciò che ho suggerito sopra). Immagino che lo scenario classico "fai come dico io, non come faccio io". –

+0

Aggiunto un campione. –

26

Al giorno d'oggi, siamo in grado di testare le notifiche push con this library.

è abbastanza facile per inviare spinta attraverso il terminale:

echo -n '{"message":"message"}' | nc -4u -w1 localhost 9930 

echo -n '{"aps":{"alert" : "message","badge" : 99,"sound" : "default"}, "myField" : 54758}' | nc -4u -w1 localhost 9930 
3

è necessario utilizzare

NSString *notificationString = @"{\"aps\":{\"alert\":\"Test alert\",\"sound\":\"default\"}}"; 

NSData *notificationData = [notificationString dataUsingEncoding:NSUTF8StringEncoding]; 

NSDictionary *testNotification = [NSJSONSerialization JSONObjectWithData:notificationData options:0 error:&error]; 

[[[UIApplication sharedApplication] delegate] application:[UIApplication sharedApplication] didReceiveRemoteNotification:testNotification fetchCompletionHandler:nil];