我有一个iOS应用程序,其后端由MobileHub
与API Gateway
,Lambda
和DynamoDB
构建。我注意到SNS
的MobileHub
函数已被Pinpoint
取代,我想使用这个新服务创建一个通知系统。
当用户通过API Gateway
创建新帖子时,将触发lambda函数,我想我可以通过Pinpoint
向订阅者发送通知。但我在Pinpoint
的官方网站上找不到任何示例或参考文档。
你有这个场景或任何想法的资源吗?非常感谢你!
取决于您通知的含义,我假设您希望向特定用户发送推送通知(pinpont端点)。
Pinpoint将与用户相关联的每个设备存储为“端点”,通常由AWS客户端分析库创建(例如,放大分析)。
客户端
使用放大分析库,我调用updateEndpoint,以便我可以指定lambda可用的userId,以及设备令牌并删除optOut,以便用户可以接收推送通知:
Lambda(node.js)
现在,您可以使用userId和精确版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。创建lambda后,您可能需要手动添加IAM权限。
来源
亚马逊Pinpoint当然可以实现这一点。您可以找到Javascript SDK文档here。
Pinpoint有2种发送模式。
因此,在Lambda支持的API中,您可以选择直接发送给订阅者(如果您有他们的地址),也可以选择发送整个订阅者(如果您已将端点加载到Pinpoint中)。