Je cherche à créer APNS (Apple Push Notification Service), où le serveur enverra des notifications aux appareils iOS. Je suis en mesure de faire fonctionner les notifications push via PHP en utilisant le même jeton de périphérique et le même certificat. Cependant, je souhaite envoyer des notifications via Node JS au lieu de PHP.APNS (Apple Push Notification Service) avec le nœud JS
Je les fichiers valides/certificats pour me aider à démarrer:
- cert.pem
- key.pem
- aps_development.cer
- cert.p12 touche
- . p12,
- ck.pem
J'ai cherché à travers plusieurs ressources/liens tels que:
Après cela, j'ai pu trouver le code exemple suivant, où MOT DE PASSE signifie le mot de passe de l'key.pem et TOKEN signifie le jeton de mon appareil:
var apn = require("apn");
var path = require('path');
try {
var options = {
cert: path.join(__dirname, 'cert.pem'), // Certificate file path
key: path.join(__dirname, 'key.pem'), // Key file path
passphrase: '<PASSWORD>', // A passphrase for the Key file
ca: path.join(__dirname, 'aps_development.cer'),// String or Buffer of CA data to use for the TLS connection
production:false,
gateway: 'gateway.sandbox.push.apple.com', // gateway address
port: 2195, // gateway port
enhanced: true // enable enhanced format
};
var apnConnection = new apn.Connection(options);
var myDevice = new apn.Device("<TOKEN>");
var note = new apn.Notification();
note.expiry = Math.floor(Date.now()/1000) + 3600; // Expires 1 hour from now.
note.badge = 3;
note.sound = "ping.aiff";
note.alert = "You have a new message";
note.payload = {'msgFrom': 'Alex'};
note.device = myDevice;
apnConnection.pushNotification(note);
process.stdout.write("******* EXECUTED WITHOUT ERRORS************ :");
} catch (ex) {
process.stdout.write("ERROR :"+ex);
}
Je reçois aucune erreur lorsque execut Ce problème est dû au fait qu'aucune notification n'est reçue sur mon appareil iOS. J'ai également essayé de mettre en place le cal: null & debug: true (dans var options). Mais la même chose arrive.
Encore une fois, lorsque j'utilise le jeton de périphérique ck.pem & que j'ai et que je l'utilise avec PHP, cela fonctionne, mais je ne suis pas capable de le faire fonctionner dans Node JS. S'IL VOUS PLAÎT AIDE !!
Merci beaucoup!
Je vous remercie de votre réponse. Merci pour les clarifications, je comprends maintenant un peu plus à ce sujet. Pour tester, j'ai placé les événements dans setInterval comme indiqué. Malheureusement, quand je l'exécute, il renvoie les erreurs suivantes: ** si j'appelle "apnConnection.pushNotification (note);" alors 'transmissionError' est appelé et j'obtiens un code d'erreur 2 (qui manque le jeton de périphérique). ** Si j'appelle "apnConnection.pushNotification (note, myDevice);" Je reçois le message d'erreur suivant: [Erreur: connexion expiré] – galhe2
Essayez de supprimer certaines de vos options inutiles, en particulier ca, passerelle, port et amélioré. Dans ma configuration, j'utilise seulement trois options: 'cert',' key', et 'production': true/false. J'ai suivi les instructions sur https://github.com/argon/node-apn/wiki/Preparing-Certificates pour préparer les fichiers cert et key. –
D'accord, j'ai fait tout ce que vous avez dit. Je reçois des événements maintenant si je fais une erreur sur le but. La demande semble passer, mais je ne reçois aucune réponse. La seule chose que je reçois est: [Error: Connect a expiré] de l'événement 'transmissionError'. Après avoir regardé en ligne, j'ai constaté que les gens disent que c'est peut-être à cause d'un problème de réseau. J'ai donc appelé HostGator pour vérifier, mais ils ont déclaré que je ne devrais pas avoir de problèmes du tout. Avez-vous une idée de ce qui peut causer ce problème? Voici mon lien de référence: https://github.com/argon/node-apn/issues/327#issuecomment-152564768 – galhe2