使用AWS Pinpoint通过Lambda函数发送通知

问题描述 投票:1回答:2

我有一个iOS应用程序,其后端由MobileHubAPI GatewayLambdaDynamoDB构建。我注意到SNSMobileHub函数已被Pinpoint取代,我想使用这个新服务创建一个通知系统。

当用户通过API Gateway创建新帖子时,将触发lambda函数,我想我可以通过Pinpoint向订阅者发送通知。但我在Pinpoint的官方网站上找不到任何示例或参考文档。

你有这个场景或任何想法的资源吗?非常感谢你!

node.js amazon-web-services aws-lambda aws-cognito aws-pinpoint
2个回答
2
投票

取决于您通知的含义,我假设您希望向特定用户发送推送通知(pinpont端点)。

Pinpoint将与用户相关联的每个设备存储为“端点”,通常由AWS客户端分析库创建(例如,放大分析)。

客户端

使用放大分析库,我调用updateEndpoint,以便我可以指定lambda可用的userId,以及设备令牌并删除optOut,以便用户可以接收推送通知:

  1. 地址: - 用户接受推送通知权限(iOS)生成的令牌
  2. optOut:'NONE',以便他们可以接收推送通知
  3. userId: - 用户的唯一ID(cognito的子)

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权限。

来源


0
投票

亚马逊Pinpoint当然可以实现这一点。您可以找到Javascript SDK文档here

Pinpoint有2种发送模式。

  1. Direct send - 这实际上与SNS传统上一样。您需要设备令牌,您可以使用该令牌直接发送给您的推送提供商。
  2. Segmentation sends - 此模式略有不同,假设您已通过Mobile SDK将所有设备加载到Pinpoint中,作为应用程序的一部分,或通过S3导入。这样做的好处是,您可以对设备进行细分并发送到该细分受众群(例如“Ryans Friends”)。

因此,在Lambda支持的API中,您可以选择直接发送给订阅者(如果您有他们的地址),也可以选择发送整个订阅者(如果您已将端点加载到Pinpoint中)。

© www.soinside.com 2019 - 2024. All rights reserved.