Ho seguito la demo fornita al http://developer.android.com/google/gcm/gs.html e ho ottenuto un'applicazione di prova, GCMTrial per funzionare correttamente.Errore GCM Android. Il server restituisce Non registrato quando il client è registrato
Ma, ho provato a seguire gli stessi passi su un'applicazione esistente ma non ha funzionato. Quindi ho fatto un progetto completamente nuovo. Ma anche allora, seguendo gli stessi identici passaggi, non ho potuto ottenere che GCM inviasse un messaggio con successo. Così ho provato a rinominare GCMTrial con il nome richiesto, e non anche quello non funziona.
mi iscrivo per GCM tramite l'attività principale e ottenere il seguente registro:
12-19 21:30:13.102: V/GCMRegistrar(15889): Registering receiver
12-19 21:30:13.112: D/GCMBaseIntentService(15889): handleRegistration: registrationId = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, error = null, unregistered = null
12-19 21:30:13.112: D/GCMRegistrar(15889): resetting backoff for com.XXX.XXX
12-19 21:30:13.117: V/GCMRegistrar(15889): Saving regId on app version 1
ma quando provo ad inviare un messaggio GCM, si restituisce il seguente errore
[ errorCode=NotRegistered ]
Codice Cliente:
public class MainActivity extends Activity {
TextView tve;
String TAG = "GCMTrial";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, "XXXXXX");
Log.v(TAG, "Reg");
} else {
Log.v(TAG, "Already registered");
}
}
GCMIntentService :
public class GCMIntentService extends GCMBaseIntentService {
@Override
protected void onError(Context arg0, String arg1) {
// TODO Auto-generated method stub
}
@Override
protected void onMessage(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Log.d("GCM", "RECIEVED A MESSAGE");
// Get the data from intent and send to notificaion bar
}
@Override
protected void onRegistered(Context arg0, String arg1) {
// TODO Auto-generated method stub
}
@Override
protected void onUnregistered(Context arg0, String arg1) {
// TODO Auto-generated method stub
}
}
manifesto:
CodiceServer:
System.out.println("Sending GCM");
String key = "XXX"; //Server API key taken from the site
clientID = "XXXXXXXXX"; // copied from the logs
Sender sender = new Sender(key);
Message message = new Message.Builder().build();
Result result = sender.send(message, clientID, 1);
System.out.println(result.toString());
E mi sta facendo impazzire .. Essa mostra come registrato nel telefono Android, anche chiama il metodo onRegistered della classe GCMIntentService .. ma quando provo a inviare un messaggio, bandiere "un errore NotRegistered" ... non so cosa sto facendo di sbagliato .. per favore darmi una mano ragazzi ....
Non ho idea di cosa stesse succedendo. Ma, ho reinstallato gli extra di GCM per Android, ho creato nuovamente una nuova applicazione e questa volta funziona !! :) Ho usato Risultato multicastResult = sender.send (message, devices, 5); invece di Risultato risultato = sender.send (messaggio, clientID, 1); non so se questo era il problema, ma ora funziona ...! – user1657709
Penso che il motivo per cui lo stai facendo funzionare dopo la reinstallazione perché hai già rivendicato un nuovo Reg ID. – neferpitou