GCM Registrierung mit zwei unterschiedlichen Registrierungs-ids

Ich habe da ein kleines Problem mit den Geräte-Registrierung-management auf meinem client/server für push-Benachrichtigungen.

Problem

Das problem, dass ich habe ist, dass wenn ich die Anwendung deinstallieren und neu installieren Sie die Anwendung eine leere Zeichenfolge zurück, die für die Registrierungs-id ( GCMRegistrar.getRegistrationId(this) ), die ich re-registrieren Sie das Gerät mit meinem server. Das problem ist, dass ich einen neuen, verschiedenen Registrierungs-id (manchmal), und BEIDE ARBEITEN! Also ich weiß nicht, wie die server-Seite an, um zu wissen, ob es für das gleiche Gerät. Ich sollte auch beachten ich bin nicht ändern Sie die version der Anwendung. Müssen änderungen an der manifest-trigger eine neue Registrierungs-id ausgestellt werden?

Auf der Android-Seite, ich Tue das folgende:

 /** 
* Register, die diese android-Gerät mit GCM 
*/
private void registerDeviceWithGCM() { 
GCMRegistrar.checkDevice(this); 
GCMRegistrar.checkManifest(this); 
String Registrierungs-id = GCMRegistrar.getRegistrationId(this); 
wenn (Registrierungs-id.equals("")) { 
log.debug("Registrieren der Anwendung mit GCM"); 
GCMRegistrar.register(this, ApplicationData.SENDER_ID); 
} else { 
log.debug("Bereits registriert:" + Registrierungs-id); 
deviceRegistrationService.updateServerRegistrationData(dieser, Registrierungs-id); 
} 
} 

In meinem GCMIntentService.java ich Folgendes tun:

 /** 
* Bedingung für die Auslösung neuer Geräte-Registrierung und-updates die Registrierung info mit dem server 
* 
* @param context Kontext erhielt von 
* @param spiegeladapter Gerät die Registrierungs-id 
*/
@Override 
protected void onRegistered(Context context, String Registrierungs-id) { 
Log.d(TAG, "Registrierung:" + Registrierungs-id); 
Intent intent = new Intent(RegistrationReceiver.REGISTRATION_INTENT); 
Absicht.putExtra(RegistrationReceiver.REGISTRATION_ID, Registrierungs-id); 
Kontext.sendBroadcast(intent); 
} 

In meinem RegistrationReceiver.java habe ich Folgendes:

 /** 
* Löst das Gerät die Registrierung mit cirrus 
* 
* @param context unbenutzt 
* @param Absicht verwendet, um Registrierungs-id 
*/
@Override 
public void handleReceive(Context context, Intent intent) { 
log.debug("Empfangen, die Registrierung mit der Absicht der Aktion:" + Vorsatz.getAction()); 
if (intent.getAction().equals(REGISTRATION_INTENT)) { 
String Registrierungs-id = Vorsatz.getStringExtra(REGISTRATION_ID); 
log.debug("Empfangen der Registrierung Vorsatz mit Registrierungs-id:" + Registrierungs-id); 
deviceRegistrationService.updateServerRegistrationData(loginActivity, Registrierungs-id); 
} else if (intent.getAction().equals(REGISTRATION_FAILED_INTENT)) { 
log.debug("Received Registrierung fehlgeschlagen Absicht, die Anzeige von Fehler-Nachricht"); 
showRegistrationFailedMessage(Vorsatz); 
} 
} 

Wieder, das problem hier ist, dass ich zwei oder mehrere Registrierungs-id ist, dass alle arbeiten (es wäre kein problem, wenn ich die alte einfach nicht funktioniert, wenn Sie versuchen, eine Nachricht vom server, da kann ich einfach sauber,).

Schreibe einen Kommentar