5

私は現在、オンラインオフラインでサポートされているアプリケーションを調査してAPNSの使用法を把握していますが、アプリケーションが1人のユーザーのみを扱っている場合は非常に簡単に理解できます(SMSと同様)。

私の理解では、特定のデバイスにインストールされた各アプリケーションには独自のデバイストークンがあります(APNSへの登録を解除して再登録した後でも変更されません)。したがって、ユーザーがさまざまなデバイスからログインすると、APNS、さらにはサーバーが識別できます。

しかし、複数のアカウントのアプリ(Facebookのように、さまざまな人が同じ電話を使用してログインできる)を実装しようとすると、いくつかの質問が発生しました。

ユーザーAがログインし、アプリがバックグラウンド状態にあるとき、はい、通知を受信しました。

ただし、ユーザーAがログアウトした場合(電話にインターネット接続がない場合、つまりアカウントを削除するためにサーバーを一度に更新できない場合)、ユーザーBがログインした場合、サーバーはユーザーの電話に通知をプッシュしようとしましたA、通知はすでに電話で受信されており(ただし、これはユーザーAの通知です)、ユーザーBはそれを受信します(実際のシナリオでは発生しないはずです)。

APNSはアプリケーション内アカウント認証をチェックできないようです。

だから、私の質問は、

  1. 電話で通知を確認して削除する方法はありますか(Apple Doc。を読み、最後の通知を保存するQoSがあることに気づきました)?

  2. APNSを使用する際に、このような種類の認証の問題を処理するための良い方法は何ですか?

概念的な誤解がある場合は、訂正してください。そして、私の質問が愚かで不器用に聞こえないこと、そして質問の重複がないことを願っています...

4

2 に答える 2

3

(新しいユーザーにログインせずに)アプリから「ログアウト」する機能がある場合、ユーザーがログアウトしたことをサーバーに通知する以外に、プッシュ通知の送信を停止する方法が見つかりません。

インターネットに接続されていない場合、適切なログアウトを行うことはできません。この機能が必要な場合は、サーバーでログアウトを確認する必要があります。サーバーに到達できなかったため、ログアウトに失敗したことがユーザーに通知される可能性があります。

次に例を示します。

  • ユーザーAは、デバイストークンTXを持つデバイスXにログインします。

    ->サーバーはトークンTXをユーザーAに属するように関連付けます。

  • ユーザーAは、デバイストークンTYを持つデバイスYにログインします。

    ->サーバーはトークンTXとTYをユーザーAに属するように関連付けます。

  • ユーザーAに送信されたプッシュメッセージ

    ->サーバーはプッシュメッセージをTXとTYに送信します。

  • ユーザーAはデバイスXからログアウトし、ユーザーBはデバイスXにログインします。

    ->サーバーはトークンTXのユーザーAへの関連付けを削除します

    ->サーバーはトークンTXをユーザーBに関連付けます。

  • ユーザーAに送信されたプッシュメッセージ

    ->サーバーはプッシュメッセージをTYに送信します。

  • ユーザーBに送信されたプッシュメッセージ

    ->サーバーはプッシュメッセージをTXに送信します。

  • ユーザーBはログアウトしますが、インターネットに接続していません

    ->ログインに失敗しましたが、ユーザーBはまだログインしていますが、「ログアウトできませんでした」というダイアログが表示されます

于 2012-08-02T10:29:03.457 に答える
2

したがって、最初は:

ユーザーAはインターネットなしでFacebookにログアウトしてログインするにはどうすればよいですか?

ユーザーBがログインしているため、インターネットに接続されている場合は、サーバーに送信できます。このデバイストークンでuserBになります。

そして、ケース:ユーザーBがログインしている間、サーバーはユーザーAの電話に通知をプッシュしようとしました

アプリが実行されている場合は、APNS通知が届きます

application: (UIApplication*)app didRegisterForRemoteNotificationsWithDeviceToken: (NSData*)deviceToken

デバイス通知センターのメッセージウィンドウにありません。

そして、あなたはこれを行うことができます:

1)userAがすでにログに記録されている場合は、通知を表示するためにローカル通知を送信します

2)ログ内の他のユーザーまたはユーザーがログアウトしている場合は、何もしません

お役に立てば幸いです。あなたが他を意味するならば、多分私は間違っています。

于 2012-08-02T09:51:48.370 に答える