2013-05-03 1 views
0

잘못된 토큰 목록을 검색하기 위해 APN 피드백 서비스를 쿼리하는 node.js 스크립트를 구현했습니다. 불행히도, 나는 유효하지 않은 토큰을 얻을 수 없었습니다. 나는이 단계를 수행 :APN 피드백 서비스에서 토큰을 보내지 않습니다.

  1. 샌드 박스 모드로 푸시 알림으로 iOS 앱을 설치합니다.
  2. 일부 알림을 앱에 보냅니다 (완료되었습니다).
  3. 앱을 제거하십시오. 내가 제거한 앱이 푸시 알림이있는 유일한 앱인 경우 APN 서비스와의 연결이 끊어 지므로 앱이 제거되었다는 알림을 보낼 수 없지만 내 앱이 아니라는 것을 알았습니다. iPad에는 많은 푸시 알림 앱이 설치되어 있습니다 !!).
  4. 응용 프로그램 토큰이 더 이상 유효하지 않다는 것을 증명하기 위해 약 10 개 또는 20 개의 동일한 토큰을 가진 다른 많은 알림을 보냅니다 (앱이 방금 제거되었으므로 알림이 전달되지 않음).
  5. 피드백 서비스를 쿼리하여 유효하지 않은 토큰을 최종적으로 가져옵니다. 피드백 서비스는 아무 것도 보내지 않고 단지 어떤 종류의 데이터도없이 연결을 닫습니다.

이 내가 피드백 서비스 쿼리하는 데 사용하는 스크립트입니다

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이므로 연결이 설정되어 있다고 확신합니다. 내가 뭘 잘못하고 있니?

답변

0

프로덕션 인증서를 사용하여 샌드 박스 환경에 연결할 수 있습니까? 코드에서

:

VAR certPem = fs.readFileSync ('apns- 자극 -cert.pem', 인코딩 = '아스키');

var keyPem = fs.readFileSync ('apns-찌르는 -key-noenc.pem', 인코딩 = 'ascii');

그리고 :

VAR 스트림 = tls.connect (2196, '피드백 샌드 박스 .push.apple.com를.', 옵션, 기능()

그건 경우 그 이유는 그것이 작동하지 않는 이유입니다.

+0

발견 : 문제는 발견 : 나는 그 샌드위치 푸시 알림 응용 프로그램이 설치되어 있다는 것을 알지 못했기 때문에 제거 할 때 서비스와의 연결 중단되었습니다. 프로덕션 푸시 알림 앱과 샌드 박스 푸시 알림 앱을 구분하지 않았습니다. –

관련 문제