2010-05-25 8 views
2

Lorsque j'exécute mon application en mode développement, les notifications push que j'envoie à PushMeBaby me sont envoyées sans problème. Cependant, lorsque j'essaie de le tester dans l'environnement de production, je ne peux pas recevoir de notifications push. J'ai re-généré tous les certificats et les profils de provisionnement, utilisé l'aps_production_identity.cer comme certificat pour les notifications push, changé le SSL en gateway.push.apple.com, et fait une version de construction pour l'application, mais je n'ai toujours pas pu obtenir pour travailler. J'ai trouvé que dans PushMeBaby, la ligneLes notifications push ne fonctionnent pas dans l'environnement de production

result = SSLHandshake(context); 

renvoie l'erreur -9844. Est-ce que cela signifie que quelque chose ne va pas avec le fichier aps_production_identity.cer?

+0

-vous vous dire avez fait une construction Adhoc plutôt qu'un communiqué (distribution) construire? Vous ne devriez pas être en mesure d'exécuter des versions de distribution sur votre appareil à moins que vous ne signiez du code vaudou. –

Répondre

1

Oui, j'ai résolu cette erreur. J'ai perdu quelques jours à trouver la solution. Le problème est dans la ligne:

result = SSLSetPeerDomainName(context, "gateway.sandbox.push.apple.com", 30); 
NSLog(@"SSLSetPeerDomainName(): %d", result); 

Vous devez changer le port au numéro 30. Cela résout le problème.

+3

30 n'est pas le numéro de port! Mais la longueur de la chaîne de domaine. Donc pour "gateway.sandbox.push.apple.com" c'est 30. Mais pour "gateway.push.apple.com" c'est 22 ... –

+0

Martijn, vous ROCK !!!! Enfin ça marche pour moi aussi !!!!! –

+0

Je pensais aussi que 30 était le numéro de port :-). Quelle erreur stupide !!! –

1

Je pense qu'il est préférable de ne pas coder de tels chiffres dans le code, même s'il s'agit d'un exemple de code. Je pensais que le 30 était un numéro de port (honte à moi de ne pas faire plus d'évaluation de code).

j'ai changé cette ligne à quelque chose comme ceci:

#define kApplePushGateway "gateway.push.apple.com" //"gateway.sandbox.push.apple.com" 

result = SSLSetPeerDomainName(context, kApplePushGateway, [[NSString stringWithUTF8String:kApplePushGateway] length]); 
NSLog(@"SSLSetPeerDomainName(): %d", result); 
Questions connexes