0
プッシュ通知機能[AndroidとiOS]を持つモバイルアプリケーションを開発中です。プッシュの送信にnode-gcmとnode-apnを使用しています。iosとアンドロイドの無効なプッシュトークンを見つける
トークンが無効かどうかを確認する方法はありますか(iOS/Android登録トークン)、データベースから削除できますか?
プッシュ通知機能[AndroidとiOS]を持つモバイルアプリケーションを開発中です。プッシュの送信にnode-gcmとnode-apnを使用しています。iosとアンドロイドの無効なプッシュトークンを見つける
トークンが無効かどうかを確認する方法はありますか(iOS/Android登録トークン)、データベースから削除できますか?
これは私が私のプロジェクトでそれを解決する方法である:
[アンドロイド]あなたが反応してノード-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}`);
}
}
});