Uygulamamda GCM kullanıyorum ve GCM jetonları oluşturmak için InstanceId
API'yi kullanıyorum. InstanceId
API tarafından döndürülen belirtecin geçersiz olduğu bu sorunla karşı karşıyayım.InstanceID API tarafından döndürülen GCM Token NotRegistered hatası veriyor
Jetonu kontrol etmek için Postacı'yı kullanıyorum ve her şimdi ve sonra bazı aygıtlarda, belirtecin kullanılmaya çalışılması, Not Edilmiş bir hatayı atar. Yine de, GCMInstanceIdListener
hizmetini zorla çalıştırırsam, yine GCMRegistrationService
'u çağırır ve bu kez doğru belirteci alırım.
GCMRegistrationService
'da aldığım belirteç çalışıp çalışmadığını kontrol etmenin bir yolu var mı? https://android.googleapis.com/gcm/send
numaralı telefona çağrı yapabildiğimizi ve jetonu doğrulayabildiğimizi biliyorum, ancak sunucu anahtarının üstbilgide iletilmesini gerektiriyor ve istemciye saklamak istemiyorum.
public class GCMInstanceIdListener extends InstanceIDListenerService {
@Override
public void onTokenRefresh() {
Intent intent = new Intent(this, GCMRegistrationService.class);
startService(intent);
}
}
public class GCMRegistrationService extends IntentService {
private static final String TAG = "GCMRegistrationService";
public GCMRegistrationService() {
super(TAG);
}
@Override
protected void onHandleIntent(Intent intent) {
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(BuildConfig.GCM_SENDER_ID,
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Log.d(TAG, "GCM Token : " + token);
}
}
Bunu yapabilirdik ama kullanım durumumuzda, uygulamayı ilk kez açtıklarında kullanıcıya bir push mesajı göndermemiz gerekiyor. 'GCMRegistrationService' çalıştırıldığında, yalnızca ikinci seferden itibaren yardımcı olur. Temiz bir kurulumda bile, GCMRegistrationService 'ilk kez çağrıldığında geçersiz bir belirteç alıyorum. – akshayt23
Neden Google'ın örnek gcm istemcisini takip etmiyorsunuz? Kayıt işleminin tamamlandığını bildirmek için yerel bir yayın kullanır. Daha sonra mantığın geri kalanı ile devam edebilirsiniz. Geçersiz bir jetona gelince, benim düşünebildiğim sadece 2 şey google-services.json dosyanızın (bozuk dosya, belki) veya GET_ACCOUNTS iznine sahip olmamanızdır (Android 6.0+ izinler sorunu, belki de) – Rohan
Hmm bunu kontrol edeceğim. Bizim manifestimizde 'GET_ACCOUNTS' iznine sahip olmamıza rağmen ve json dosyasını bir kaç kez kopyaladım, fakat bu sorunu çözmüyor. – akshayt23