2012-07-21 13 views
43

C2DM kayıtlarının süresinin dolduğunu biliyorum ve kayıt kimliğini düzenli olarak yenilemeniz gerekiyor. GCM ile durum böyle mi? Android GCM rehberinde (aşağıda gösterilen) aşağıdaki kodlara bakarak, bunu yalnızca bir kez yapıyor ve yenilemenize gerek yok gibi görünüyor, ancak açıkça herhangi bir yerde yazıldığını görmüyorum, bu yüzden sadece kontrol etmek istedim.GCM kayıt kimliğinin sona ermesi var mı?

final String regId = GCMRegistrar.getRegistrationId(this); 
if (regId.equals("")) { 
    GCMRegistrar.register(this, SENDER_ID); 
} else { 
    Log.v(TAG, "Already registered"); 
} 
+0

Benzer: http://stackoverflow.com/questions/16838654/handling-registration-id-changes-in-google-cloud-messaging-on-android – trante

cevap

41

DÜZENLEME: BU CEVAP ŞEKİLDE TARİHİ IS, ben MEVCUT DAVRANIŞ


Kendimi cevap buldu IS hiçbir fikrim yok. Her zaman yeniden kayıt olmanız gerekmez, just once according to the example in the docs. GCM ve C2DM önceki sürümleri aksine Ayrıca

, , Google'ın kendisi şimdi kayıt kendisi yenilenmez vermez: ilk kayıt alınan kayıt kimliğe sahip kez bir vaka için hariç , gitmek iyidir : yeni bir sürüme kullanıcı yükseltmeleri (bu durumda da yukarıdaki linkte örnekte ele alınır) olduğunda yine yeniden kayıt gerekiyor: bir uygulama güncellendiğinde

, bu onun mevcut geçersiz kılmalıdır Yeni sürümle çalışması garanti edilmediği için kayıt numarası. Uygulama güncellendiğinde çağrılan yaşam döngüsü yöntemi olmadığından, bu doğrulamaya ulaşmanın en iyi yolu, bir kayıt kimliği kaydedildiğinde geçerli uygulama sürümünü depolamaktır.

+0

Ancak kayıt kimliği mannn nasıl oluşturulur ????? –

+1

@AndroidKiller: Dokümanlar aracılığıyla okuyun: http://developer.android.com/google/gcm/index.html –

+0

hey @MohamedHafez.İlk paragrafınız GCM dokümantasyonundan değil C2DM'den geliyor. Bu, GCM'ye uygulanmadığına inanıyorum. Bu, cevabınızı biraz yanıltıcı hale getirir. Thx – AndroidGecko

10

En sonunda yenilenmiş olduğunu düşünüyorum, evet. Resmi Dokümanlar:

Mevcut bir kayıt numarası da dahil olmak üzere, bir dizi senaryosu geçerli olmaktan çıkabilir: uygulama elle com.google.android.c2dm.intent.UNREGISTER niyet düzenlenmek suretiyle iptal ederse. Uygulama otomatik olarak kayıtsızsa, kullanıcı uygulamayı kaldıramazsa (ancak garanti edilemez). Kayıt kimliği sona eriyorsa. Google, kayıt kimliklerini yenilemeye karar verebilir. Tüm bu durumlarda, üçüncü taraf sunucudan bu kayıt kimliğini kaldırmalı ve mesaj göndermek için kullanmayı bırakmalısınız. Hata kodu NotRegistered olduğunda olur.

Bu hata Kayıtsız Cihaz ile bir json yanıtı döndürür da 3. taraf sunucusundan GCM'ye bir istekte gerçekleşebilir.

Bu gerçekleşirse, karşılık gelen kimliği yenilemek size kalmıştır.

http://developer.android.com/guide/google/gcm/gcm.html

+0

Yani belirteci olup olmadığını sadece kontrol etmek kurtarmak olduğunu "RegistationIntentService" içinde değişti? Belirteci paylaşılan tercihler bölümünde saklayabilir ve değişip değişmediğini görmek için her zaman kontrol edebilirim. – Zapnologica

İlgili konular