Este es mi servidor de muestra creado para GCM.La respuesta de GCM es: Error = No registrado
class Program2
{
public static string SenderId = "318115091714";
public static string RegistrationID = "APA91bF9hn6VeessobraNuauBcrFdlJ9eH1eVb44FAQ2oawerBeFWS48IEIFTPo8fdvWm93hwFY0tKszpPuSObPbTqgW-za1RLhCw-GDCn4JQZLQ-CmGwnnr6F5X8gYhNa2DNvFhCEM7HNgvdxtcnBqVX0dVnEynXQ";
public static string ApiKey = "AIzaSyAl2HdB4bbukkcmJwoxUmhof15IAiuJ16U";
public static string Message = "Testing GCM Server";
public static string ApplicationId = "com.google.android.gcm.demo.app";
/// <summary>
/// Main method
/// </summary>
public static void Main(string[] args)
{
try
{
Program2 objProgram2 = new Program2();
Console.WriteLine("\nPlease wait while GCM server is processing...");
string Text = objProgram2.SendMessage();
Console.WriteLine("\nSendMessage Response: " + Text);
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("\n" + ex.Message);
Console.WriteLine("\n" + ex.StackTrace);
Console.ReadLine();
}
}
/// <summary>
/// Send Push Message to Device
/// </summary>
public string SendMessage()
{
//-- Create Query String --//
string postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.Message=" + Message + "&data.time=" + System.DateTime.Now.ToString() + "®istration_id=" + RegistrationID + "";
//Console.WriteLine(postData);
Byte[] byteArray = Encoding.UTF8.GetBytes(postData);
//-- Create GCM Request Object --//
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://android.googleapis.com/gcm/send");
Request.Method = "POST";
Request.KeepAlive = false;
Request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
Request.Headers.Add(string.Format("Authorization: key={0}", ApiKey));
Request.Headers.Add(string.Format("Sender: id={0}", SenderId));
Request.ContentLength = byteArray.Length;
//-- Delegate Modeling to Validate Server Certificate --//
ServicePointManager.ServerCertificateValidationCallback += delegate(
object
sender,
System.Security.Cryptography.X509Certificates.X509Certificate
pCertificate,
System.Security.Cryptography.X509Certificates.X509Chain pChain,
System.Net.Security.SslPolicyErrors pSSLPolicyErrors)
{
return true;
};
//-- Create Stream to Write Byte Array --//
Stream dataStream = Request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
//-- Post a Message --//
WebResponse Response = Request.GetResponse();
HttpStatusCode ResponseCode = ((HttpWebResponse)Response).StatusCode;
if (ResponseCode.Equals(HttpStatusCode.Unauthorized) || ResponseCode.Equals(HttpStatusCode.Forbidden))
{
return "Unauthorized - need new token";
}
else if (!ResponseCode.Equals(HttpStatusCode.OK))
{
return "Response from web service isn't OK";
//Console.WriteLine("Response from web service is not OK :");
//Console.WriteLine(((HttpWebResponse)Response).StatusDescription);
}
StreamReader Reader = new StreamReader(Response.GetResponseStream());
string responseLine = Reader.ReadLine();
Reader.Close();
return responseLine;
}
}
Después de ejecutarlo con estos valores válidos y claves, recibí esta respuesta.
Please wait while GCM server is processing...
SendMessage Response: Error=NotRegistered
Estoy recibiendo Error=NotRegistered
. Esta respuesta ni siquiera está especificada en la guía para desarrolladores de Android. ¿Cuál debería ser el motivo por el que recibo esta respuesta? ¿Puede alguien ayudarme con esto? Gracias por adelantado.
recibo una respuesta Respuesta 'InvalidRegistration', ¿cuál sería el motivo? – yadavr