В зависимости от того, что вы подразумеваете под уведомлением, я предполагаю, что вы хотите отправить push-уведомление определенному пользователю (конечная точка Pinpoint).
Pinpoint сохраняет каждое устройство, связанное с пользователем, в качестве конечной точки, обычно создаваемой библиотекой аналитики на стороне клиента AWS (например, amplify Analytics).
Клиент
С библиотекой аналитики amplify я вызываю updateEndpoint
, чтобы указать userId
, доступный для Lambda, а также токен устройства и удалить optOut
, чтобы пользователь мог получать push-уведомления:
Address
— токен, созданный пользователем, давшим разрешение на получение push-уведомлений (iOS).
optOut
– NONE
, чтобы они могли получать push-уведомления.
userId
— уникальный идентификатор пользователя (подраздел Cognito).
Лямбда (узел.js)
Теперь вы можете отправлять push-уведомления, используя userId
и Pinpoint SDK.
Пример:
const sendMessagesParams = {
ApplicationId: process.env.PINPOINT_APP_ID,
SendUsersMessageRequest: {
Users: {
[receiverUserId]: {}
},
MessageConfiguration: {
APNSMessage: {
Action: 'OPEN_APP',
Title: 'Message received',
SilentPush: false,
Body: `You have a new message`
},
GCMMessage: {
Action: 'OPEN_APP',
Title: 'Message received',
SilentPush: false,
Body: `You have a new message`
}
}
}
};
console.log('sendMessagesParams', JSON.stringify(sendMessagesParams));
pinpoint.sendUsersMessages(sendMessagesParams, (sendMessagesErr, sendMessagesData) => console.log('push sent')
Для вашего конкретного сценария я настраиваю поток DynamoDB и запускаю Lambda при изменении записи в таблице. Возможно, вам потребуется добавить разрешения IAM вручную после создания лямбда-выражения.
Источники
person
Dylan w
schedule
29.03.2019