2009-07-03 8 views
48

Est-il possible de tester les services de notification Apple Push sans une application iPhone? (Création d'un émulateur sur Windows?)Comment puis-je tester Apple Push Notification Service sans iPhone?

Si non, comment pourrais-je tester cela? Existe-t-il un exemple d'application gratuite compilé pour cela?

J'ai créé le fournisseur de serveur, mais j'ai besoin de tester la fonctionnalité.

+0

Il est temps de mettre à jour la meilleure réponse. Bibliothèque de ma réponse est très utile, merci 'acoomans' pour ça! – kaspartus

Répondre

64

Désolé de le dire, mais vous aurez besoin de trouver du matériel pour tester cette fonctionnalité.

Les notifications push ne sont pas disponibles dans le simulateur. Ils nécessitent un profil d'approvisionnement depuis iTunes Connect, et doivent donc être installés sur un périphérique. Cela signifie également que vous devrez probablement être accepté dans le programme Apple iPhone Developer et payer vos 99 $. Par contre, avec la mise à jour iPhone OS 3.0, vous pouvez tester cette fonctionnalité sur n'importe quel appareil, y compris les premiers iPhones.

+2

je suis tombé sur le même problème, vous répondez n'est pas clair en parlant de la deuxième partie de la question: 'Si non, comment pourrais-je tester cela? Existe-t-il un exemple d'application gratuite compilé pour cela? J'ai créé le fournisseur du serveur, mais j'ai besoin de tester la fonctionnalité. » – JackLeo

+16

C'est clair. Vous avez besoin d'un appareil pour tester. –

5

Le simulateur ne fait pas de notifications push.

Et de pousser à partir d'un serveur, vous devez avoir des appareils à pousser ainsi que votre application sur cet appareil.

Le jeton contient l'identité de l'application ainsi que l'ID du périphérique.

43

Vous ne pouvez pas tester les notifications push réelles. Cependant,, vous pouvez tester la réponse de votre application à une notification push simulée en créant un déclencheur par programmation et manuellement de la méthode - application:application didReceiveRemoteNotification:notification de votre AppDelegate.

Pour déclencher ce à partir d'une autre classe (comme un UIViewController):

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

Le testNotification devrait avoir le même format comme une véritable notification, à savoir un NSDictionary contenant des objets de la liste des biens ainsi que NSNull.

Voici un exemple de la façon de fournir les testNotification ci-dessus:

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"]; 

Cela devrait créer un NSDictionary de notification raisonnable de travailler.

+0

Y a-t-il un exemple d'implémentation de ceci trouvé quelque part? –

+0

Je n'en ai pas (mon implémentation de test prend une route différente, même si elle devrait vraiment faire ce que j'ai suggéré ci-dessus). Classique "fais comme je dis, pas comme je le fais" scénario je suppose. –

+0

Ajout d'un échantillon. –

26

De nos jours, nous pouvons tester les notifications push avec this library.

Il est assez facile d'envoyer pousser via le terminal:

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

vous devez utiliser

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]; 
Questions connexes