2

アプリに統合しようとしGCMています。多くの場所で、共有設定onRegistered()を保存する必要があることを読みました。regId共有設定に ID を保存する必要があるのはなぜですか。GCMRegistrar.javaコードを見たところ、内部的にこのメカニズムを実行しています。次に、共有設定に ID を手動で保存する必要があるのはなぜですか。

4

5 に答える 5

8

sharedPreferenceに保存する必要はありません。次の行を使用してください

final String regId = GCMRegistrar.getRegistrationId(getApplicationContext());
if (regId.equals("")) {
      GCMRegistrar.register(this,SENDER_ID);
 } else {
        //Already registered
 }

登録IDがnullの場合は、登録に進むことができます。

于 2012-10-15T11:56:55.587 に答える
4

この方法は、毎回デバイスを登録しないために使用されます。

  1. gcm-client.jarを使用する場合は、心配する必要はありません。これは、このjarファイルに実装されています。
  2. 自分で実装したい場合は、

    • SharedPreferencesを使用してregistrationIdを保存するか、DBまたはファイルシステムなどに保存します。
    • 毎回registrationIdを保存してデバイスを登録するわけではありませんが、アプリケーションの開始時にもう1回反復(Googleから登録IDを取得)する必要があるため、これは適切な設計上の選択ではありません。
于 2012-10-12T07:43:33.123 に答える
3

それは簡単です。複雑にしないでください。お使いのデバイスは GSM に登録されているため、自動的に通知を受け取ることはありません。登録 ID を必要とするサードパーティ サーバーにデバイスを登録する必要があります。

IDはprefに保存されているため、デバイスを何度も登録することはありません。

于 2012-10-11T09:22:00.057 に答える
1

将来、たとえば、regIDを指定してプッシュサーバーと通信するために使用するには、自分で登録する必要があると思います。

于 2012-10-11T09:26:21.777 に答える
1

これはデザインの選択です。SharedPreferences、ファイル、または SQLite データベースに保存することができます。それは、アプリケーションと、それを使用して何を達成しようとしているかに大きく依存します。

GCMRegistrar.java例がそれを保存する理由についてSharedPreferences-アプリが更新されたときにローカルに保存されたデバイスIDを無効化/削除する必要があるため、デバイスに保存されたプリミティブデータを削除することで簡単に実行できるため、完了したと思います。を介してデータベースにクエリを実行したり、ファイルを削除したりするよりもはるかに簡単で、リソースを節約できます (3 ~ 4 行のコードしか必要ありません) rmfile()

于 2012-10-11T08:20:24.977 に答える