Amazon SNS: Amazon .net SDK を使用してトークン (registrationId) で EndpointArn を取得するにはどうすればよいでしょうか? 質問する

Amazon SNS: Amazon .net SDK を使用してトークン (registrationId) で EndpointArn を取得するにはどうすればよいでしょうか? 質問する

私は aws .net sdk を使用して登録 ID で EndpointArn を取得しようとしています。 しかし、それを実行する良い方法が見つかりませんでした。

私の最初の試みは、クライアント (Android) によって送信され、以前に SNS アプリケーションに登録された同じ登録 ID を使用して CreatePlatformEndpointRequest を実行することでした。この方法では、aws API によってこの登録 ID の EndpointArn が提供されます。

アマゾン: CreatePlatformEndpoint アクションはべき等であるため、リクエスタが同じデバイス トークンと属性を持つエンドポイントをすでに所有している場合は、新しいエンドポイントを作成せずにそのエンドポイントの ARN が返されます。

ただし、以前に CustomUserData に何かを保存していた場合は、この登録 ID のエンドポイント arn を取得するために同じユーザー データを送信する必要があり、そうでない場合は以下のような例外が発生します。

無効なパラメーター: トークン理由: エンドポイント {My Endpoint ARN} は同じトークンで属性が異なるものが既に存在します。

ユーザー データなしで CreatePlatformEndpoint() を使用し、登録 ID のエンドポイント Arn が必要な場合は、この登録 ID のみを使用して CreatePlatFormEndpoint を実行するつもりです。

上記のソリューションよりも優れたトークンで EndpointArn を取得する別の方法はありますか?

ありがとう。

ベストアンサー1

私たちがやったことは、CreatePlatformEndpointから返されたエンドポイントARNをアプリケーションデータベースに保存することです。特定のデバイス登録IDにエンドポイントARNの関連付けがすでにある場合は、

getEndpointAttributes は、データベースからエンドポイント arn を渡します。結果が返された場合は、エンドポイントが有効としてマークされているかどうかを確認し、有効でない場合は setEndpointAttributes を呼び出して、キー "Enabled" を "true" に設定します。

残念ながら、Amazaon API には「CustomUserData」または「Token」で検索するための「findBy」メソッドが用意されておらず、既存のエンドポイントをすべてリストする「list」メソッドしかありません。これは、エントリが数千または数百万になる可能性があるほとんどのアプリケーションでは不十分です。まるで、API が Amazon コンソール UI のユースケースを満たすためだけに作成されたかのようです。

また、APIリクエストとレスポンスの例についてはAmazonドキュメントを参照してください。

詳しくは、https://docs.aws.amazon.com/sns/latest/api/API_GetEndpointAttributes.html をご覧ください。 詳細は、https://docs.aws.amazon.com/sns/latest/api/API_SetEndpointAttributes.html を参照してください。

おすすめ記事