it-swarm.asia

GCM 'Hata: Kayıtlı Değil'

GCM kodumu test etmeyi başardım.

Ama tam olarak aynı kod, GCM Push alamadım ve aldım:

GCM Hatası: Kayıtlı Değil.

39
LKM

GCM yanıt Not Registered şu anlama gelir: "NotRegistered ise, uygulama cihazdan kaldırıldığından ya da com.google.Android.c2dm.intent'i alacak şekilde yapılandırılmış bir yayın alıcısına sahip olmadığı için kayıt kimliğini sunucu veritabanınızdan kaldırmalısınız. ALMA niyetleri. " belgelerden . Bu hatayı hangi durumda aldığınızı, uygulama cihazdan kaldırıldığında veya AndroidManifest'te yanlış yayın alıcısını tanımladığınızı kontrol edin. GCM işlevselliğinizi my test GCM sunucusuyla test edebilirsiniz. Umarım, bu size yardımcı olur.

51
Samik

Test için bir cihaz kullanıyorsanız, jetonu almadan ve yeniden test etmeden önce InstanceID'yi silmeniz gerekir; çünkü APK'nizin üzerine yazdığınızda, InstanceId'nin kaydını kaldırır ve NotRegistered hatasını alırsınız. Bu nedenle, RegisterIntentService sınıfınızda onHandleIntent işlevinde aşağıdakileri yapın:

InstanceID instanceID = InstanceID.getInstance(this);
try
{
    instanceID.deleteInstanceID();
} catch(IOException e) 
{
    e.printStackTrace();
}
instanceID = InstanceID.getInstance(this);
18
Rhodesie

Not Registered, GCM aygıtın mesajı iletemediğini düşündüğünde gerçekleşir. Bu, uygulama kaldırılırsa veya iletiyi işlemek için yanlış yapılandırılmışsa gerçekleşir:

 enter image description here

@Samik ve @ O'Rilla cevaplarına dayanarak, aşağıdaki adımları öneriyorum:

  1. Geçerli yüklemeyi Android cihazdan kaldırın
  2. <receiver> ve <sender> öğelerinin <application> içindeki AndroidManifest.xml düğümünde tanımlandığından emin olun.
  3. <category Android:name="COM.COMPANY.YOURAPP" /> adresinizde doğru <receiver> olduğundan emin olun
  4. Alıcının uygulanmasının doğru olduğundan emin olun
9

Kodunuzun gerçekten doğru olduğunu düşünüyorsanız ve hala hata alıyorsanız

{"error": "NotRegistered"} 

uygulamayı telefondan manuel olarak kaldırmayı deneyin ve tekrar çalıştırın (cihazınız yeni kayıt kimliğini alır).

En azından benim durumumda sorun çözüldü!

5
naren

GCM için eski kullanımdan kaldırılan kodu kullanıyordum:

if (gcm == null) {
                gcm = GoogleCloudMessaging.getInstance(this);
            }
            String regId = gcm.register(SENDER_ID);
            msg = "Device registered, registration ID=" + regId;

ve yeni tarafa geçmeye çalışırken:

InstanceID instanceID = InstanceID.getInstance(this);
            String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
                    GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

Aynı hatayı alıyordum ve iki katı gün beni deli ediyordu.

Kitaptaki her şeyi denedikten sonra, geliştirici konsolunda GCM'yi devre dışı bırakmanın, yeniden etkinleştirmenin ve sonra buraya gitmenin ne düzeltici olduğunu: https://developers.google.com/mobile/add Android uygulamam için yeni bir google-services.jsonfile oluşturmak için.

Ayrıca, RegistrationIntentService paketinizin kökününde olmalı yoksa çalışmaz! (Android'de gcm uygulaması için bu örneğe bakın: https://github.com/google/gcm )

Umarım bu birileri yardımcı olur çünkü bu günlerde kaybettim !!!! > <

2
Micro

Bildirim dosyasında uygulamanın dışında gcm alıcısı olduğunda bu hatayı aldım. Alıcıyı uygulama alanına ve her şey işe yaradı. Şimdi çok mutlu bir tavşan.

<application>
...
<receiver>
...
</receiver>
...
</application>
2
G O'Rilla

Bir Google hesabı Android 4.0.4 veya daha düşük çalışan cihazlarda bir gerekliliktir . http://developer.Android.com/google/gcm/gcm.html

Ayrıca manifest dosyanızda <uses-permission Android:name="Android.permission.GET_ACCOUNTS" /> eklemelisiniz.

1
ztan

Bu demek oluyor ki, yanlış bir kayıt kimliği veriyorsunuz demektir .. .. Bunun için, önce mobil uygulamanızı çalıştırın ve kayıt kimliğiniz belirteç olarak gelecektir . Uygulama Kimliği için Google geliştirici konsolundan alabileceğiniz sunucu kimliğini, projenizi ve kimlik bilgilerini ..__ verin .. Gönderici kimliği için, projeden elde edilecek proje kimliğinizi, geliştirici konsolundaki ayarları ayarlayın. 

0