サービスからユーザがログアウトしたときに、そのユーザのデバイスのプッシュトークンを確実に無効にする(サーバ上のユーザプロファイルから削除する)ユーザログアウト時にiOSデバイスのプッシュトークンを無効にする
ユーザープロファイルにapnsトークンを含む文字列を保持し、ユーザーが特定のデバイスでプッシュ通知を有効にするたびに1を追加します。
私はプッシュトークンがデバイス固有のものであることを理解していましたが、内部ユーザーアカウントは何も分かっていません。したがって、1人のユーザーがログアウトして別のユーザーがログインすると、同じトークンを持ちます。次に、デバイスの現在のユーザーは、いずれかのプッシュ通知を取得します。
基本的なソリューションはログアウト時にユーザープロファイルからデバイスのトークンを削除することですが、私は通過することを考えると、私は落とし穴の束とまで来ている:
- ログアウトがネットワークを必要とすべきではありませんアクセス - 私はサーバーに通知しようとすることはできますが、ユーザーにネットワークアクセス(?)がない場合でも非同期的に成功するにはログアウトが必要です
- 実際のデバイストークンは不明である可能性があります。現在のトークンは与えられません。 identifierFVendorがインストールごとに変更され、UDIDメソッドが非推奨になっているため、保存デバイス< - >重要な情報はあまりないようです。
- (アカウントにトークンを追加するときに、他のアカウントに同じトークンが設定されていないことを確認してください) - これはログインしている2番目のユーザーに依存しますが、これは保証されません。
私が紛失しているエッジケースが増えていますか、それらを回避するためにどのような戦略を使用できますか?
私は最初の段落にはっきりしません。私は基本的に前半を持っています(1つのトークンは複数のユーザーにリンクできます)が、どのユーザーが有効であるかをどのように区別するかはわかりません。おそらく、そのユーザープロファイルに最初に保存されたタイムスタンプのようなものなのでしょうか?最新のものは有効なものでしょうか? – owenfi
オフラインログアウトとそれに続くプッシュ通知に反応することについての点をありがとうございます。それはAPIに与えられた最良のケースのソリューションのように思えますし、注意点について私の喜びを緩和します。 – owenfi
最初の段落について、プッシュトークンをサーバーに保存すると、同時にユーザーIDを送信できます。あなたのサーバは、この時点で、ユーザが有効かどうかを知るでしょう。 私はあなたの質問を正しく理解していませんが...プッシュトークンは生成されたタイムスタンプに関係なく同じです。私はあなたの考えに従っているかどうかわからない – Nick