manera JSON
user1551788 respuesta funciona bien, sin embargo, me gusta hacerlo en JSON, que es una mejor práctica en lugar de insertar todo en una línea, creo.
La clase interna 'jsonObj' es lo mismo que la documentación requiere, comprobar las diferentes solicitudes usted puede hacer here
Una breve descripción:
a: el teléfono para enviar a, insertar el registrationId que recibió del teléfono aquí. delay_while_idle Al utilizar la marca de delay_while_idle, las notificaciones se enviarán una vez que el dispositivo se active. (fuera de bloqueo, cuando el usuario realmente usa el teléfono).
datos: configure data
con pares de clave/valor personalizados para pasar carga adicional a la aplicación del cliente. Entonces, puede poner cualquier variable que desee, si le gusta una cadena json que contiene otro objeto, siempre que no exceda los 4 KB.
Algunos que también están disponibles y que no he usado.
collapse_key: Si se activa, una notificación de que tiene el mismo nombre collapse_key
debe sobrescribir la notificación de más edad (metter de buena ejecución en el lado del teléfono cuando la notificación se envía, en el servidor de GCM se sobrescribe cuando la notificación es pendiente).
time_to_live: Adelante, cuánto durará la notificación, actualmente no es compatible con IOS.
Alguna otra, vea la documentación.
clase interna porque no necesitaba ese objeto fuera de mi clase, lo cual es mejor para nombrar como 'datos' que podría ser cualquier cosa.
private void SendPostsToGCM(jsonObj jsonObj)
{
string senderId = "your project number (google)";
string apiKey = "your apiKey, found on console";
WebRequest tRequest;
tRequest = WebRequest.Create("https://android.googleapis.com/gcm/send");
tRequest.Method = "post";
tRequest.ContentType = "application/json";
tRequest.Headers.Add(string.Format("Authorization: key={0}", apiKey));
tRequest.Headers.Add(string.Format("Sender: id={0}", senderId));
string jsonPostData = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObj); //download Newtonsoft NuGet package
Byte[] byteArray = Encoding.UTF8.GetBytes(jsonPostData);
tRequest.ContentLength = byteArray.Length;
Stream dataStream = tRequest.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse tResponse = tRequest.GetResponse();
dataStream = tResponse.GetResponseStream();
StreamReader tReader = new StreamReader(dataStream);
String sResponseFromServer = tReader.ReadToEnd();
string response = sResponseFromServer;
tReader.Close();
dataStream.Close();
tResponse.Close();
}
internal class jsonObj
{
public bool delay_while_idle { get; set; }
public data data { get; set; }
public string to { get; set; }
}
internal class data
{
public int Id { get; set; }
public string text { get; set; }
}
de usar, basta:
//some filtering to select some posts or whatever.
jsonObj jsonPostData = new jsonObj()
{
delay_while_idle = true,
to = registrationGCMid,
data = new data()
{
Id = post.id,
text = post.text,
}
};
SendPostsToGCM(jsonPostData);
Otra gran diferencia que he notado, el servicio de Google devuelve una cadena JSON que contiene información útil, que indica cuántos tuvieron éxito y cuántos fracasaron, etc.
Hola Zishan, gracias por la respuesta. Ha publicado un código que se implementó mediante el servicio C2DM. –
Hola, ¿hay alguna línea de muestra o gudie disponible para implementar Google Cloud Messaging (GCM) utilizando la aplicación Asp.Net? –
Hola, hay alguna solución disponible en Asp.net igual que: http://developer.android.com/guide/google/gcm/demo.html –