1

이 오류가 발생했습니다. gcm 푸시 알림을 사용하는 동안받는 사람 키 'registrationTokens'의 거짓 값입니다.수신자 키 'registrationTokens'에 대한 위변조 값

당신이 내 코드를 찾을 수 아래 : 함수 gcmPush의

Device.find({ user: { $in: users }}, function (err, devices) { 
      if (err) { 
      logger.error('500 ' + err) 
      return res.status(500).json({ 
       code: config.errorCode.status500.code, 
       message: config.errorCode.status500.message 
      }) 
      } 

     var androidRegTokens = [] 
     var iOSReqTokens = [] 

      for (var i = 0; i < devices.length; i++) { 
      if (devices[i].platform == 'Android') { 
       androidRegTokens.push(devices[i].deviceToken) 
      } else { 
       iOSReqTokens.push(devices[i].deviceToken) 
      } 
      } 

      if (androidRegTokens.length > 0) { 
      gcmPush('Notification is sent.', androidRegTokens) 
      } 

      if (iOSReqTokens.length > 0) { 
      apnsPush('Notification is sent.', iOSReqTokens) 
      } 
      return res.json({ msg: 'Operation succeed.'}) 
}) 

바디 ('. 알림이 전송됩니다', androidRegTokens)이다

this.sender.send(message, { registrationTokens: deviceTokens }, function (err, response) { 
    if (err) { 
    console.error(err) 
    }else { 
    console.log(response) 
    } 
}) 

누구 잘못이 함께 알고 있나요 내 암호? 첫 번째 푸시 알림이 완벽하게 작동했습니다. 서비스를 호출 할 때마다이 오류가 발생했습니다.

편집 :

나는 루이스 페르난도이 고맙습니다을 해결했다. 그것은 일 수

function GcmPush (title, message, deviceTokens) { 
this.sender = new gcm.Sender(config.gcmSender) 
this.sendPushNotification(title, message, deviceTokens) 
} 

답변

1

deviceTokens 목적은 falsy 값이다 : 미정 널 0 I 생성자의 일부 타이틀을 추가 잊은

gcmPush('Notification is sent.', androidRegTokens) 

: 문제는 함수 , '', NaN, 거짓.

아마도 iOSReqTokens와 androidRegTokens를 비동기 작업으로 중첩하여 작성했기 때문에 발생했을 수 있습니다 (Device.find가 비동기 임). 따라서 Device.find 및 for 루프의 콜백은 다른 시간에 발생합니다. 아마도 for-loop가 응답 후에 발생하기 때문에이 응답은 정의되지 않을 것입니다 (실제로 있습니다).

따라서 비동기 제어 흐름 라이브러리 (예 : Promise 또는 Async)를 사용해야하며 정확한 순서가 작동해야합니다.

또한 푸시 된 등록을 사용 하시겠습니까?

+1

답변 해 주셔서 감사합니다. 비동기 제어 흐름 (비동기)으로 시도했지만 동일한 오류가 발생했습니다. 그런 다음 문제가 푸시 된 등록을 사용하는 곳에서 발생한다는 것을 알았습니다. 솔루션으로 내 질문을 업데이트했습니다. – andzaOs