In meiner Xamarin Android App nenne ichGCM - Gerät nicht registrierter trotz zurück Token
var instanceID = InstanceID.GetInstance(this);
string token = instanceID.GetToken("xxx", GoogleCloudMessaging.InstanceIdScope, null);
und ich bekomme ein Token im Gegenzug im Format e63498f: oijafa89fjaasi ...
In meinem C# Programm, das ich rufen
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=xxxx");
//Get current connection
string url = "https://gcm-http.googleapis.com/gcm/send";
var message = new JObject();
var data = new JObject();
data.Add("message", "hello from csharp");
message.Add("to", "e63498f:oijafa89fjaasi...");
message.Add("data", data);
HttpResponseMessage response = null;
try
{
response = await client.PostAsync(url, new StringContent(message.ToString(), Encoding.Default, "application/json"));
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
return;
}
//Handle errors
if (!response.IsSuccessStatusCode)
MessageBox.Show("Error: " + response.ToString());
string responseBody = await response.Content.ReadAsStringAsync();
textBox2.Text = responseBody;
ich die Antwort erhalten:
{Text = "{\"multicast_id\":xxxx,\"success\":0,\"failure\":1,\"canonical_ids\":0,\"results\":[{\"error\":\"NotRegistered\"}]}"}
Ich habe viele Dinge versucht, aber ich kann es nicht funktionieren. Wenn ich das alte GCM (gcm.register) verwende, gibt es keine Fehlermeldung, aber ich möchte keine veraltete Funktionalität verwenden. Warum sagt GCM, dass der Token nicht registriert ist, als ich gerade ein Token von GCM zurückerhalten habe? (Die App ist natürlich offen, während ich den Test mache). Muss ich irgendeine Art von Methode aufrufen, um das Token tatsächlich zu registrieren?
Ok, ich habe diesen Fehler oft gefunden, es gibt zwei Fälle: 1-Sie haben die ID zu schnell verwendet, geben Sie mindestens 5-10 Sekunden von dem Moment an, als Sie das Token erhalten haben es. 2-Token werden mit Debug-Builds "beschädigt" (invalidiert? Deprecated?) Mit Debug-Builds (überprüft es die Signatur? Keine Ahnung), löscht das aktuelle Token, wartet 10 Sekunden, registriert ein neues und benutzt es, es funktioniert. – Gusman
Gusman: Danke für deine Antwort. – MortenGR