8

私が作業しているアプリケーションでは、Google Cloud Messaging を統合する必要があります。さまざまな例で少し遊んだ後、デバイスで通知を送受信することができました。
しかし、興味深い状況に遭遇しました。私が知っているように (間違っている場合は訂正してください)、registration_id はデバイスごとおよびアプリケーションごとに発行されます。

私が作業しているアプリケーションは、ログイン機能をサポートしています。アプリケーションがインストールされ、ユーザーが初めてログインするとき (「UserA」とします)、GCM に registration_id を要求し、それをサーバーに送信します。

ここで、UserA がログアウトし、自分のデバイスを UserB に渡してログインさせたとします。つまり、UserB は UserA のデバイスを使用してログインします。

問題は、その間に UserA が通知を受信すると、UserB がそれを傍受できることです。また、UserB が通知を受け取った場合、彼はそれを受け取ることができません。
registration_id はデバイスごとおよびアプリケーションごとであるため、これは正常に思えますが、私の場合は妥当ではないようです。

したがって、registration_id を (デバイスとアプリ以外の) ユーザー ID に依存させる方法があるかどうかを尋ねています。または、ログインしたユーザーが自分の通知のみを受け取るようにするにはどうすればよいですか?

4

1 に答える 1

7

はい、デバイスごとにアプリの Google 登録 ID が 1 つあるのは事実です。

ただし、実際にGCMにメッセージを送信する独自​​のサーバーでユーザーをいつでも登録および登録解除でき、GCMはこれを登録済みデバイスに送信します。

registerOnServer や unRegisteronServer などのサーバー用のいくつかのインターフェースを定義し、このインターフェースで各ユーザーに一意の値を送信します。

したがって、あなたの場合、 A が Log ins を使用すると、最初に GCM で登録が行われ、 registerOnServer インターフェイスを使用してサーバーにユーザーを登録し、ユーザーがログインしている間に、彼に関する通知を GCM に送信してデバイスに送信します。

A がログアウトしたら、unRegisterServer を使用して登録を解除し、A が登録解除されているため、サーバーから GCM にメッセージを送信しないでください。

したがって、B が同じデバイスでもログインする場合は、サーバーに登録してメッセージを送信します。

これであなたの問題は解決します!

于 2013-07-22T12:11:10.140 に答える