2014-05-21 8 views
5

Sto usando apn per inviare notifiche push dall'app node.js ad Apple.App bloccata con "Immettere la pass phrase PEM" dopo aver inviato la notifica push

Il mio codice:

// send to development**** 
    var dev_cert_path = path.join(__dirname, '..', 'cert.pem'); 
    var dev_key_path = path.join(__dirname, '..', 'key.pem'); 
    var devOptions = { "gateway": "gateway.sandbox.push.apple.com" , "cert": dev_cert_path, "key": dev_key_path, "passphrase":'XXXXX'}; 


    var devApnConnection = new apn.Connection(devOptions) 
    , devMyDevice = new apn.Device(token) 
    , devNote = new apn.Notification(); 

    devNote.expiry = Math.floor(Date.now()/1000) + 3600; // Expires 1 hour from now. 
    devNote.badge = 3; 
    devNote.sound = "xxx.aiff"; 
    devNote.alert = message; 
    devNote.payload = {'messageFrom': ''}; 
    devApnConnection.pushNotification(devNote, devMyDevice); 
    var options = { 
    "batchFeedback": true, 
    "interval": 1 
    }; 

    var devFeedback = new apn.Feedback(options); 
     devFeedback.on("feedback", function(devices) { 
      devices.forEach(function(item) { 
       logger.debug("device error : " + item.device); 
       // Do something with item.device and item.time; 
      }); 
    }); 

    devApnConnection.on('transmitted', function(res){ 
     logger.debug("sent this message:"+JSON.stringify(devNote)+ " to this device: " + devMyDevice); 
    }); 

    devApnConnection.on('error', function(res){ 
     logger.error("sending message failed to this device: " + devMyDevice + " data: " + JSON.stringify(res)); 
    }); 


} 
catch(e) 
    {logger.error("Push notification error: ",e.message);} 

Il mio problema:

Quando si invia una richiesta di node.js, è l'invio di una notifica push, ma sto ottenendo molti Enter PEM pass phrase: nel terminale :

/projects/my_app$ node app.js 

POST /requests 200 14ms 
Enter PEM pass phrase: 
Enter PEM pass phrase: 
Enter PEM pass phrase: 
Enter PEM pass phrase: 
Enter PEM pass phrase: 
Enter PEM pass phrase: 

Quindi la mia app è bloccata fino al riavvio del nodo ... Qualche idea?

Edit:

Ho provato a rimuovere la password dal file:

openssl rsa -in key.pem -out nopassword.pem 

Ma sto ancora ricevendo questo in console app - ma quando si preme entrare, si ferma girare questo messaggio , fino alla prossima richiesta (prima di rimuovere il pass, mostra molti messaggi fino al riavvio dell'app, anche quando si fa clic su enter o la passphrase) ...

risposta

6

Ho trovato il problema ...

Ho dovuto aggiungere cert, chiave e passphrase alle opzioni di feedback.

var options = { 
    "batchFeedback": true, 
    "interval": 300 
}; 

var devFeedback = new apn.Feedback(options); 
     devFeedback.on("feedback", function(devices) { 
      devices.forEach(function(item) { 
       logger.debug("device error : " + item.device); 
       // Do something with item.device and item.time; 
      }); 
}); 

Le opzioni dovrebbero essere:

+1

Non funziona per me –

+0

Ancora ottenere 'Immettere la passphrase PEM:'? Condividi il tuo codice. – user2503775

0

Sembra si mette una sfida password quando si genera la chiave privata & CSR. Finché sai che la password usa openssl per estrarla in un nuovo file che dovrai usare.

openssl rsa -in private.key -out private-wo.key -passin pass:<PASSWORD> 
Problemi correlati