1

Android'de GCM kullanıyorum.InstanceID, geçersiz jetonu döndürür

Bir itme belirteci almak için InstanceID.getInstance(...).getToken(...) kullanıyorum, ancak bazı durumlarda (uygulama güncelleştirmelerinden veya yeniden yüklemeden sonra) geçersiz bir belirteç alıyorum.

Sunucu bir NotRegistered hatası döndürdüğünde, bir hata ayıklayıcısına bağlandım ve InstanceID.getInstance(...).getToken(...) olarak adlandırdım. Ancak bu belirteci geçerli değil (curl -s "https://android.googleapis.com/gcm/send" ... aracılığıyla bu belirteci kullanarak göndermeyi denedim), NotRegistered hatası alıyorum.

Neden instanceID geçersiz belirteci döndürüyor?

cevap

0

Son olarak, bir çözüm buldum.

İki farklı ileti dizisinden instanceID ile çalıştım. Aynı anda iki kez getToken(...)'u aradım. Örneğin bir önbellek yoksa, ağdan jeton alır. Sanırım, benim durumumda iki istek gönderiyor ve siparişin garantisi yok. Yani instanceID bir jetonu önbelleğe aldı, ancak google bulut başka bir tane.

0

Geçersiz belirteci göstermemelidir.

Tüm yordamları uyguladınız mı?

  • InstanceIDListenerService: app güncellemeler aracılığıyla belirteç değişiklikleri, vb
  • RegistrationIntentService Ne zaman: belirteci değişirse InstanceIDListenerService aracılığıyla alır ve ne zaman yeni bir jetonu almak üzere bu niyeti diyoruz.
+0

Olmaması gerektiğini biliyorum. Evet, tüm bu prosedürleri yaptım. En ilginç kısım, örnek kimliği üzerinden belirteci almak ve gcm ile bu belirtecin gönderilmesini sağlamak ve Hatalı bir hata almamaktır. Örnek kimliğinin geçersiz jetonu döndürdüğü bir an var. –

+0

Kod parçalarınızı belirteçle paylaşmak mümkün mü? Bu arada, doğru JSON tanımlayıcı dosyasını kullandığınızdan emin olun. – ashazar