7
votes

iPhone push-notification fonctionne dans le sandbox mais pas en mode de production

Comme le dit le titre, j'ai une application avec APN construite. Cela fonctionne parfaitement en mode sandbox. Mais en mode de production, il échoue de manière misérablement.

Il semble que j'ai les bons certificats sur le serveur, car je ne reçois pas d'erreur du service APNS. Tout semble fonctionner bien. J'utilise Apnsphp par Aldo Armiento. Il possède une fonction intégrée pour cracher les résultats du serveur APNS. Lorsque j'essaie d'utiliser le sandbox avec l'application du magasin, je reçois - comme prévu - une erreur de jeton invalide (puisque les jetons de la boite de sable et la production sont différentes). Lorsque j'utilise le certificat de production avec l'application du magasin, je n'ai aucune erreur. Rien, Nada, Zilch - Il semble que cela aient livré la notification. Hélas, il n'arrive pas sur mon téléphone. P>

Donc, apparemment, les certificats doivent être ok. Il se connecte au serveur, il envoie la notification, tous passe sans erreurs (j'ai d'abord eu des certificats erronés, alors je sais ce qui se passe s'il n'est pas correct :) p>

Toutes idées Le bogue se cache? p>

[modifier] Voici ce que je revenons du service APNS: P>

Tue, 03 Jan 2012 03:13:55 +0100 ApnsPHP[13049]: INFO: Trying ssl://gateway.push.apple.com:2195...
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Connected to ssl://gateway.push.apple.com:2195.
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Sending messages queue, run #1: 1 message(s) left in queue.
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: STATUS: Sending message ID 1 [custom identifier: Message-Badge-000] (1/3): 107 bytes.
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Disconnected.


0 commentaires

5 Réponses :


11
votes

Voici trois cas que vous pouvez vérifier à votre fin: -

  1. Assurez-vous que vous avez utilisé le bon certificat de production de votre côté serveur. Puisque nous devons créer deux certificats différents pour la production et le bac à sable. Assurez-vous d'utiliser le certificat correct sur le serveur.

  2. Deuxièmement, vous pouvez vérifier que vous utilisez la bonne passerelle et le numéro de port sur le côté serveur. Depuis que la passerelle pour la production et le bac à sable sont différentes. La passerelle utilisée pour la production est la suivante: - gateway.push.apple.com. Et vous utilisez également un mot de passe correct sur le serveur pour votre certificat, vous avez utilisé sur votre serveur.

  3. Troisième Vous pouvez vérifier si la notification de votre appareil est activée ou non. Vous devez également l'activer sur votre iPhone. Assurez-vous que c'est sur votre appareil.

    laissez-moi savoir si cela fonctionne pour vous.


5 commentaires

Merci - mais j'ai vérifié tout ça. Tout est configuré comme c'est censé être. Et comme mentionné, je ne reçois aucune erreur du service push-service, il apparaît comme les messages ont traversé ... très étrange.


Avez-vous essayé de créer à nouveau le certificat de production et de mettre cela sur votre serveur?


Dommage sur moi :) C'était le certificat. Je développe pour une autre entreprise et le développeur original est parti - son certificat semble toujours être actif (je l'ai remplacé par le mien, cependant). Donc, le certificat était valide et il était valable pour l'application. Mais le binaire a été compilé avec ma clé privée qui a dû faire la confusion. Merci pour ton aide!


J'ai un problème avec cela aussi ... J'ai eu des notifications push travaillant sur le développement, mais ils ne travailleront pas sur la vie / la production. Pourriez-vous élaborer un peu ce dernier commentaire? "Le binaire a été compilé avec ma clé privée" ?? Je signe le code avec un profil de provisioning de distribution qui possède des autorisations de notification push, mais ma clé de production SSL .PEM n'a rien à voir avec la construction de l'application. (à droite?)


S'avère - j'ai le même problème que possible. Il fonctionne en mode Dev / Adhoc, mais la distribution de l'App Store refuse de recevoir des notifications push-push. Il semble que l'iPhone n'envoie plus ses informations d'identification au serveur qui héberge le script PHP pour envoyer le PNS. Comme je l'ai développé avec Cordoue et quelques plugins d'IBM-Bluemix, je n'ai aucune idée de ce qui pourrait aller mal ...



1
votes

voir réponse dans https://stackoverflow.com/a/11623162/496222

En bref: Assurez-vous que les deux certificats SSL sont dans un fichier PEM distinct. Avoir un seul fichier PEM avec sandbox et certificat de production entraînera l'échec de l'environnement.


0 commentaires

0
votes

Veuillez également vérifier si votre identifiant d'application a activé la notification push


0 commentaires

10
votes

Pour moi, je me luttise cela pendant des jours. Utilisation du certificat de production et de la clé correctes, ainsi que de la passerelle correcte pour envoyer le message à mon iPhone en développement, il a envoyé avec succès en mode Sandbox, mais a échoué avec le mode de production. C'est parce qu'il existe également deux types de jeton de périphérique, le jeton de périphérique iPhone tester est un jeton de sandbox, ne peut pas être utilisé en mode de production. Il est préférable d'utiliser le jeton d'un autre appareil pour tester les APN de production.

L'explication détaillée est ici

Le problème le plus courant est un jeton de périphérique non valide. Si le jeton est venu du bac à sable environnement, comme lorsque vous testez une construction de développement dans la maison, vous ne pouvez pas l'envoyer au service de poussée de production. Chaque environnement de poussée émettra un jeton différent pour le même appareil ou ordinateur. Si vous envoyez un jeton d'appareil au mauvais environnement, la poussée Le service verra cela comme un jeton non valide et jetera la notification.


2 commentaires

Cet homme est devenu mort .. Merci d'avoir partagé cette information.


Deuxièmement que vous êtes sur place. Merci! Une fois qu'un jeton de périphérique a été utilisé dans la demande de sandbox (api.sandbox.push.apple.com), assurez-vous de redémarrer le téléphone et de réinstaller l'application pour obtenir un nouveau jeton de périphérique avant de tester dans l'environnement de production (API.PUSH .apple.com).



0
votes

Ceci résolu mon problème, assurez-vous de définir la valeur correcte pour kgglinstanceidapnsservertypesandboxopoption . Pour le mode de développement défini sur Oui et pour le mode de production 'Non'.


1 commentaires

Je pense que cela semble être pour la messagerie de Google Cloud? développeurs.google.com/cloud-Messaging/ios/client