アプリに統合しようとしGCM
ています。多くの場所で、共有設定onRegistered()
を保存する必要があることを読みました。regId
共有設定に ID を保存する必要があるのはなぜですか。GCMRegistrar.java
コードを見たところ、内部的にこのメカニズムを実行しています。次に、共有設定に ID を手動で保存する必要があるのはなぜですか。
5 に答える
sharedPreferenceに保存する必要はありません。次の行を使用してください
final String regId = GCMRegistrar.getRegistrationId(getApplicationContext());
if (regId.equals("")) {
GCMRegistrar.register(this,SENDER_ID);
} else {
//Already registered
}
登録IDがnullの場合は、登録に進むことができます。
この方法は、毎回デバイスを登録しないために使用されます。
- gcm-client.jarを使用する場合は、心配する必要はありません。これは、このjarファイルに実装されています。
自分で実装したい場合は、
- SharedPreferencesを使用してregistrationIdを保存するか、DBまたはファイルシステムなどに保存します。
- 毎回registrationIdを保存してデバイスを登録するわけではありませんが、アプリケーションの開始時にもう1回反復(Googleから登録IDを取得)する必要があるため、これは適切な設計上の選択ではありません。
それは簡単です。複雑にしないでください。お使いのデバイスは GSM に登録されているため、自動的に通知を受け取ることはありません。登録 ID を必要とするサードパーティ サーバーにデバイスを登録する必要があります。
IDはprefに保存されているため、デバイスを何度も登録することはありません。
将来、たとえば、regIDを指定してプッシュサーバーと通信するために使用するには、自分で登録する必要があると思います。
これはデザインの選択です。SharedPreferences
、ファイル、または SQLite データベースに保存することができます。それは、アプリケーションと、それを使用して何を達成しようとしているかに大きく依存します。
GCMRegistrar.java
例がそれを保存する理由についてSharedPreferences
-アプリが更新されたときにローカルに保存されたデバイスIDを無効化/削除する必要があるため、デバイスに保存されたプリミティブデータを削除することで簡単に実行できるため、完了したと思います。を介してデータベースにクエリを実行したり、ファイルを削除したりするよりもはるかに簡単で、リソースを節約できます (3 ~ 4 行のコードしか必要ありません) rmfile()
。