11

複数のユーザーを許可するアプリケーションをサポートする必要があるプッシュアーキテクチャに取り組んでいます。これは、複数のユーザーが自分の資格情報を使用してアプリケーションにログインできることを意味します。私が遭遇している問題は、ユーザーAがプッシュ通知を許可してからログアウトし、次にユーザーBがログインして、ユーザーAのプッシュ通知の受信を開始した場合はどうなるでしょうか。

このタイプのものを処理するためのいくつかのベストプラクティスは何ですか?私が持っていた1つの考えは、最後にログインしたユーザーを思い出して、「ログインした」ユーザーにのみプッシュ通知を表示できるということでした。ログインしたユーザーと照合できるように、メッセージペイロードで何らかのユーザーコンテキストを送信する必要があります。しかし、これは少しファンキーな感じがします。

他の誰かがこれに遭遇しましたか?これは、特に家族がデバイスを共有する傾向があるタブレットにとって、本当に関連性のある問題のようです。

4

3 に答える 3

4

これを実装するには、デバイスをAPSNに登録し、デバイストークンを取得して、wsを介してサーバーに送信します。

サーバー側では、デバイストークンは最後にログインしたユーザーにのみ関連付けられます。

New app
User A (first ever user) uses IPAD A
Register with APSN, get token
Send token to our servers through ws
Search for token in db, token is new, store it
assign token to USER A

Next user logs into app
Register with APSN, get token
Send token to our servers through ws
Search for token in db, token exists already
Remove connection to USER A
assign token to USER B

SEND Notification to device WITH USERNAME
if username is logged in show it - else dont

最初にホーム画面に送信されるため、すべてのユーザーに送信されるため、まだ完全ではありません

于 2013-07-01T12:09:24.170 に答える
1

あなたの提案はマルチユーザーアプリで受け入れられると思います。これは、サーバー側よりもクライアント側で実装する方がはるかに簡単です。欠点は、不要な通知を送信するために余分な帯域幅が無駄になることです。ただし、使用法の大部分はおそらくシングルユーザーであるため、これはそれほど重要ではない可能性があります。

別の方法は、サーバーにログオンしているユーザーとその現在のreg_idを追跡することです。Aは複数のデバイスにログオンしてから、デバイス1からログアウトし、Bはデバイス1にログオンするなど、サーバーはこれらすべてを追跡する必要があるため、これはさらに複雑になる可能性があります。したがって、おそらく「ログオンユーザー」と「登録ID」の間の関係を追跡するための別のテーブルです。

不要な通知を送信するという考えが嫌いな場合は、サーバールートを使用してください。Keep-It-Simpleの原則を重視する場合は、クライアントルートを使用してください。

于 2012-09-21T15:42:49.230 に答える
0

アプリのユーザーがマルチデバイスにログオンできると仮定しましょう。

サーバー側で2つのAPIを作成する必要があります。

    func setUserDeviceNotifyToken(userId: Int, deviceToken: String) {}
    func removeUserDeviceNotifyToken(userId: Int, deviceToken: String {}

アプリ側では、setUserDeviceNotifyTokenログインごとにAPIを呼び出しremoveUserDeviceNotifyToken、ログアウトごとに呼び出す必要があります。

サーバー側では、すべてのユーザーを追跡しdeviceNotificationToken、正しいデバイスの通知を送信できます。

注意:サービスが1人のユーザーによるマルチデバイスログインをサポートすることを想定していない場合は、1人で処理し、ユーザーのデバイストークンの削除updateUserDeviceNotifyTokenに渡すことができます。null

注意2removeUserDeviceNotifyToken : APIを呼び出す前にユーザーをログアウトさせないでください。

于 2019-06-02T04:47:38.123 に答える