プッシュ通知のエンドポイントがアクティブにならないのはなぜですか?

所要時間2分
0

Amazon SNS エンドポイント (Android または iOS デバイス) にプッシュ通知を送信するたびに、エンドポイントが非アクティブ化されます。

簡単な説明

Amazon Simple Notification Service (Amazon SNS) は、モバイルデバイスにプッシュ通知メッセージを送信できます。これらのメッセージは、バッジの更新、サウンドアラート、またはメッセージアラートとしてモバイルアプリケーションに表示されます。

デバイストークンをエンドポイントとしてプラットフォームアプリケーションに追加すると、そのエンドポイントの Enabled 値が True に設定されます。SNS が通知を公開すると、Apple プッシュ通知サービス (APNs) や Firebase クラウドメッセージング (FCM) などのプッシュ通知サービスに接続します。その後、プッシュ通知サービスがメッセージをモバイルデバイスに送信します。

プッシュ通知サービスがモバイルデバイスと通信できない場合、メッセージ配信の失敗に関するフィードバックを SNS に送信します。通知サービスがエンドポイントが無効であることを示した場合、SNS はエンドポイントを非アクティブとしてマークします (つまり、Enabled 属性が False に設定されます)。エンドポイントが非アクティブ化されると、SNS はそのエンドポイントへの以降の公開呼び出しを拒否します。詳細については、「エンドポイント属性の取得」を参照してください。

解決策

有効なデバイストークンが関連付けられていないエンドポイントにプッシュ通知が送信されると、エンドポイントは非アクティブ化されます。

エンドポイントが非アクティブ化される理由

エンドポイントが非アクティブ化される一般的な理由は以下のとおりです。

  • エンドユーザーがデバイスからアプリケーションをアンインストールした。対応する SNS エンドポイントに公開すると、エンドポイントは非アクティブ化されます。
  • エンドユーザーがアプリケーションを再インストールした。デバイスは新しいトークンを取得し、古いトークンを無効としてレンダリングします。
  • エンドユーザーがデバイスのオペレーティングシステムをアップグレードした。既存のトークンはアップグレードされたソフトウェアと互換性がなくなります。アプリケーションは新しいトークンをリクエストする必要があります。
  • エンドユーザーは、Apple の App Store または Google Play からアプリケーションをアップグレードした。エンドユーザーはまだアプリケーションを起動していないため、アプリケーションはトークンを更新できます。
  • APN の場合、プッシュ版の SSL (セキュア・ソケット・レイヤー) 証明書は有効ではありません。または環境 (本番環境またはサンドボックス) と一致しません。
  • エンドユーザーがバックアップからデバイスを復元した。
  • トークンは有効ではなく、デバイスに現在インストールされているアプリケーションのものでもありません。
  • エンドユーザーがアプリケーションデータを消去すると、アプリケーションがトリガーされて新しいトークンを取得します。

エンドポイントを有効化する

APN の場合、Apple デバイスは SNS に、認証情報が期限切れ、無効、または取り消されたことを通知します。Apple デベロッパーポータルでステータスを確認してください。

非アクティブ化されたトークンを再アクティブ化する

非アクティブ化されたエンドポイントはアクティブ化しないでください。SNS は、アプリケーションのエンドポイントに送信されるすべてのメッセージが失敗すると判断した場合にのみ、アプリケーションを非アクティブ化します。トークンが有効かどうかを確認してください。そうでない場合は、まず SetEndpointAttributes を使用して更新してください。次に、アクティブにします。

トークンを更新せずにエンドポイントを再アクティブ化することは、同じトークンを使用してデバイスのアプリケーションをアンインストールしてから再インストールする場合にのみ機能します。

エンドポイントの作成またはアクティブ化には、次の擬似コードを使用します。

Retrieve the latest device token from the mobile operating system
if (the platform endpoint ARN isn't stored)
  # this is a first-time registration
  call create platform endpoint
  store the returned platform endpoint ARN
endif

call get endpoint attributes on the platform endpoint ARN

if (you get a not-found exception while getting the attributes)
  # the platform endpoint was deleted
  call create platform endpoint with the latest device token
  store the returned platform endpoint ARN
else
  if (the device token in the endpoint does not match the latest one) or
      (get endpoint attributes shows the endpoint as disabled)
    call set endpoint attributes to set the latest device token and then enable the platform endpoint
  endif
endif

モバイルアプリイベントベストプラクティスを使用して、作成、更新、削除、障害などのプラットフォームエンドポイントの変更を追跡します。このようなイベントに対するトリガー通知は、特定のイベントが発生したときにアプリケーションがプログラムによるアクションを実行できます。

プラットフォームエンドポイントの属性を変更する場合は、SNS プラットフォームアプリケーションで EventEndpointUpdatedd の SNS トピック宛先を設定します。この例は、サブスクライバーに送信される EventEndpointUpdated のペイロードを示しています。

{
"EndpointArn": "arn:aws:sns:us-east-1:<account_ID>:endpoint/GCM/TestApplication/bdf172d4-f9b4-3b76-bc0b-f2XXXXXXXXXX",
"EventType": "EndpointUpdated",
"Resource": "arn:aws:sns:us-east-1:<account_ID>:app/GCM/TestApplication",
"Service": "SNS",
"Time": "2023-07-05T13:04:40.058Z",
"Type": "EndpointUpdated"
}

関連情報

プッシュ・プラットフォーム・アプリケーションが非アクティブ化されるのはなぜですか?

トラブルシューティング

プッシュ通知の Amazon SNS トピック配信ログにアクセスする方法を教えてください。

Amazon SNS または Amazon Pinpoint を通じて APN プッシュ通知を発行する場合の「DeviceTokenNot ForTopic」エラーのトラブルシューティング方法を教えてください。

Amazon SNS でプッシュ通知用の Android プラットフォームアプリケーションを作成する方法を教えてください。

AWS公式
AWS公式更新しました 10ヶ月前
コメントはありません

関連するコンテンツ