4

ここでは、特定のユーザーが新しく追加されたDynamoDBアイテムの一部である場合にSNSおよびAPNS経由で通知を送信します。デバイスのトークンではなく、ユーザーのCognito IDに送信します。AWS SNS Cognito Identity IDを使用して特定のユーザーに公開

したがって、アイテムが追加されるとLambdaがトリガーされ、アイテムの一部でもあるCognito IDのリストが表示されます。

次に、ラムダはプッシュ通知を各Cognito IDに公開することになっています。

すべてのデバイスは、sns内にエンドポイントとして登録されています。また、エンドポイントの「ユーザーデータ」行にCognito IDを保持します。

しかし、Cognito Identity IDに直接通知を送信する方法が見つかりませんでした。各ユーザーのトピックを追加して、そのトピックに通知を送信する必要がありますか?または、Cognito Identity IDをデバイストークンにマッピングするために別のDynamoDBテーブルを保存する必要がありますか?誰かがもっと簡単で、あまりにも高価ではない方法を知っていれば素晴らしいだろう!

ありがとうございました!

答えて

6

SNS経由でAPNSまたはGCMにプッシュ通知を送信する場合、プッシュ通知用に登録された各デバイストークンに対してSNSプラットフォームエンドポイントを作成する必要があります。 SNSエンドポイントを取得したら、そのエンドポイントをユーザーテーブルまたは別のマッピングテーブルのCognito IDでマップする必要があります。

新しい項目がDynamoDBに追加されると、イベントハンドラ(Lambda)は、受信したCognito Identity IDをユーザテーブルのSNSプラットフォームエンドポイントにマップし、次にそのエンドポイントにパブリッシュを指示する必要があります。

個々のエンドポイントにプッシュを送信するためにSNSトピックを作成する必要はありません。

+0

ありがとうございました!それはまさに私が知る必要があったものです!私はちょっと、特定のエンドポイントの「ユーザーデータ」列に格納されている値でエンドポイントにアクセスすることができると考えていました。私はちょうど私のユーザーテーブル内のすべてのユーザーのリストにエンドポイントarnsを格納することを知っています。 – weka1

+0

モバイルアプリでもこの機能が必要です。新しいファイルがS3にアップロードされるたびに、ラムダ関数がトリガーされるようにセットアップしました。私は特定の方法でファイル名を構造化し、 "fromuser"と "touser"のような情報を "fromuser_touser.txt"のように含むようにしました。しかし、私は、ユーザープロフィールの一部として属性ストアを返すCognito APIを見つけることはできません。 (私は属性としてエンドポインタンを保存することを考えています)。そのようなAPIがあるかどうか知っていますか? – user30646

関連する問題