잘못된 토큰 목록을 검색하기 위해 APN 피드백 서비스를 쿼리하는 node.js 스크립트를 구현했습니다. 불행히도, 나는 유효하지 않은 토큰을 얻을 수 없었습니다. 나는이 단계를 수행 :APN 피드백 서비스에서 토큰을 보내지 않습니다.
- 이 샌드 박스 모드로 푸시 알림으로 iOS 앱을 설치합니다.
- 일부 알림을 앱에 보냅니다 (완료되었습니다).
- 앱을 제거하십시오. 내가 제거한 앱이 푸시 알림이있는 유일한 앱인 경우 APN 서비스와의 연결이 끊어 지므로 앱이 제거되었다는 알림을 보낼 수 없지만 내 앱이 아니라는 것을 알았습니다. iPad에는 많은 푸시 알림 앱이 설치되어 있습니다 !!).
- 응용 프로그램 토큰이 더 이상 유효하지 않다는 것을 증명하기 위해 약 10 개 또는 20 개의 동일한 토큰을 가진 다른 많은 알림을 보냅니다 (앱이 방금 제거되었으므로 알림이 전달되지 않음).
- 피드백 서비스를 쿼리하여 유효하지 않은 토큰을 최종적으로 가져옵니다. 피드백 서비스는 아무 것도 보내지 않고 단지 어떤 종류의 데이터도없이 연결을 닫습니다.
이 내가 피드백 서비스 쿼리하는 데 사용하는 스크립트입니다
function pollAPNFeedback() {
var certPem = fs.readFileSync('apns-prod-cert.pem', encoding='ascii');
var keyPem = fs.readFileSync('apns-prod-key-noenc.pem', encoding='ascii');
var options = { key: keyPem, cert: certPem };
console.log("Connecting APN feedback service");
var stream = tls.connect(2196, 'feedback.sandbox.push.apple.com', options, function() {
if (stream.authorized == false) {
return console.log('not connected')
} else {
console.log('connected');
};
var bufferlist = [];
stream.on('data', function(data) {
// APN feedback starts sending data immediately on successful connect
console.log('-->Data: ', data);
//bufferlist.push(data);
});
stream.on('readable', function(){
console.log('we have incoming data');
});
stream.on('error', function(err){
console.log('error: ', err);
});
stream.on('close', function(){
console.log('closed');
console.log('stream.data = ', stream.data);
});
});
}
당신이 볼 수 있듯이을, 나는 스트림 변수에 일부 청취자를 넣어. 'data'리스너의 콜백 함수는 호출되지 않으며 'close'이벤트 만 콜백을 트리거합니다. stream.authorized가 true이므로 연결이 설정되어 있다고 확신합니다. 내가 뭘 잘못하고 있니?
발견 : 문제는 발견 : 나는 그 샌드위치 푸시 알림 응용 프로그램이 설치되어 있다는 것을 알지 못했기 때문에 제거 할 때 서비스와의 연결 중단되었습니다. 프로덕션 푸시 알림 앱과 샌드 박스 푸시 알림 앱을 구분하지 않았습니다. –