10

現在、ログイン システムを使用して GCM をアプリケーションに実装しています。アプリケーションにログインしたユーザー (1 つのデバイス、複数のユーザー) に基づいて、アプリケーションに通知を送信したかったのです。こうしたプロセスを経ています。

  1. 「ユーザーA」でログイン
  2. GCM を登録 (登録 ID を取得) サーバー側に送信
  3. ユーザー A へのブロードキャスト通知
  4. ログアウト 登録解除
  5. 「ユーザーB」でログイン
  6. GCMを登録する(Registration IDを取得 - ときどきユーザーAと同じ登録IDを返す、ときどき別の登録IDとして返す-)
  7. ユーザー A への GCM プッシュ通知 (ユーザーが登録解除した場合でも)

アプリケーションがデバイスにログインしたユーザーを識別し、その特定のユーザーのみにプッシュ通知を送信する方法がわかりません。ユーザー B がログインする代わりに、ユーザー A の通知を受け取ります。コメントや回答は大歓迎です!私のプロジェクトの特定のコードを確認する必要がある場合は、お知らせください。

4

1 に答える 1

10

登録 ID は、特定のデバイス上の特定のアプリケーションを識別します。アプリケーション内のユーザーのログインに関する知識はありません。したがって、GCM の登録を解除するとき (ユーザーがログアウトするとき) は、サーバーを呼び出して、ユーザーがログアウトしたことを知らせる必要があります。

これにより、このユーザーがログアウトしたことがサーバーに通知され、サーバーは GCM メッセージの送信を停止します。

ユーザー A がログアウトし、ユーザー B がログインした後に同じ登録 ID を取得しても問題ありません (新しい登録 ID を取得しても、古い登録 ID は引き続き機能する可能性があります。そのため、デバイスがアプリケーションの登録 ID が複数あります)。

編集 :

サーバーが通知を送信した後にユーザー A がログアウトしたが、ユーザー B がログインした後にのみ通知が Google からアプリケーションに配信されるという特別なシナリオ (比較的まれなシナリオ) を考えてみましょう。このケースを処理する最も安全な方法は、アプリケーションで通知を受信し、それを破棄して、ユーザー B には何も表示しません。受信した通知をいつ破棄するかを知るためにuser、ユーザー名を値として通知データにプロパティを追加できます。アプリで通知を処理する場合は、通知を表示する前に、ユーザー プロパティがログインしているユーザーと一致することを確認してください。

于 2013-04-11T11:15:09.147 に答える