5

私のアプリでは、デバイスを登録すると、デバイスが既に登録されているかどうかを確認するために永続データとして保存されます。

サーバー側では、ユーザーの一意の ID である user_id と共にそれらをデータベースに保存します。

[user_id] [gcm_registration_id]

今、私はこのケースに取り組むことができません:

ユーザーがログアウトした場合:

  1. 次にアプリを起動したときに別のユーザーがログインする可能性があるため、SharedPreferences に格納されている registration_id をクリアする必要があります。

  2. さらに、そのデバイス (現在ログインしているユーザーがいない) はこれ以上通知を受信して​​はならないため、データベースからその registration_id に対応する行を削除する必要があります。

問題は、データベースが canonical_ids を使用して更新されるか、呼び出し時に取得した最新の registration_ids を言うことです

https://android.googleapis.com/gcm/send

そのため、削除するログアウトしたユーザーの古い registration_id が見つからない可能性があります。これにより、ログインしていないユーザーに通知を送信できます。

また、user_id に一致する DB の行を削除できません。これは、ユーザーが 1 つのデバイスからのみログアウトした可能性があり、まだログインしているデバイスが他にほとんどないためです。

この特定のユーザーとデバイスの登録 ID が変更されたことをどのように確認できますか?

すべての古い登録 ID とそれに対応する canonical_id をデータベースに保存する必要がありますか?

4

2 に答える 2

-1

private String android_id = Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID); この行は、任意のデバイスに対して一意の android_id を返します ( thx ) 任意のユーザーに対して、デバイスの配列を格納できます。ログを記録するときに、クライアントからメッセージを送信するか、数分ごとにチェックします。望み

于 2013-05-31T07:25:02.283 に答える