2017-05-11 10 views

答えて

0

これは私が私のプロジェクトでそれを解決する方法である:

[アンドロイド]あなたが反応してノード-GCMにトークンの配列を渡す場合は、長さequalsと配列を取得しますトークン数。その配列には、各トークンに対する応答(成功またはエラー)が含まれます。あなたがトークンを削除するかどうかを決定するかができないエラーに基づいて:

// This is response from Google 
response.results.map((item,index) => { 
    if (item.error) { 
     // If Google doesn't recognize token I don't need to keep it anymore 
     if (item.error === 'NotRegistered') { 
      failedTokens.push(androidTokens[index]); 
     } else { 
      logger.error(`Push notification was not sent because: ${item.error}`); 
     } 
    } 
}); 

failedTokens.map(token => { 
    this.deleteDeviceToken('android', appName, token); 
}); 

[iOSの]

私はiOS用の似た何かを持っています。しかし、我々はHTTP2 APNを使用することに注目する価値がある。したがって、APNにHTTP2を使用する場合にのみ、以下の解決方法が有効です:

// Response from Apple 
response.failed.map(failure => { 
    if (failure.error) { 
     logger.error(`Error during sending notification: ${JSON.stringify(failure.error)}`); 
    } else { 
     // If APN returned HTTP 400 with status BadDeviceToken or HTTP 410 with status Unregistered 
     // then delete invalid tokens. 
     if (failure.response.reason === 'BadDeviceToken' || failure.response.reason === 'Unregistered') { 
      this.deleteDeviceToken('ios', appName, failure.device); 
     } else { 
      logger.error(`Push notification was not sent because: ${failure.response.reason}`); 
     } 
    } 
}); 
関連する問題