JSON Weg
user1551788 Antwort funktioniert gut, ich aber Ich mache es gerne in JSON, was besser ist, anstatt alles in eine Zeile einzufügen, denke ich.
Die interne Klasse ‚jsonObj‘ ist die gleiche wie die Dokumentation erfordert, überprüfen Sie die verschiedenen Anfragen Sie here
Eine kurze Beschreibung machen:
zu: das Telefon zu senden, legen Sie die registrationId, die Sie hier vom Telefon erhalten haben. delay_while_idle Mit dem Delay_while_idle-Flag werden Benachrichtigungen gesendet, sobald das Gerät aktiv wird. (nicht gesperrt, wenn der Benutzer das Telefon tatsächlich benutzt).
Daten: Setzen Sie data
mit benutzerdefinierten Schlüssel/Wert-Paaren, um zusätzliche Nutzlast an die Client-App zu übergeben. Sie können also jede beliebige Variable einfügen, wenn Sie eine JSON-Zeichenfolge möchten, die ein anderes Objekt enthält, solange sie nicht größer als 4 KB ist.
Einige, die auch verfügbar sind, habe ich nicht verwendet.
collapse_key: Wenn gesetzt, eine Benachrichtigung, dass die gleichen collapse_key
Namen hat, sollte die ältere Meldung (metter guter Umsetzung auf der Telefonseite werden überschreibt, wenn Benachrichtigung überschreibt senden, auf dem GCM-Server ist es, wenn die Benachrichtigung steht aus).
time_to_live: Direkt, wie lange die Benachrichtigung am Leben bleiben wird, derzeit nicht für IOS unterstützt.
Einige andere, siehe Dokumentation.
interne Klasse, weil ich dieses Objekt außerhalb meiner Klasse nicht benötigt, das ist besser für die Benennung wie "Daten", die alles sein könnten.
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; }
}
zu verwenden, einfach:
//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);
Ein weiterer großer Unterschied, den ich bemerkt haben, kehrt der Google-Dienst einen JSON-String nützliche Informationen enthält, erzählt sie, wie viele gelungen und wie viele gescheiterte usw.
Hallo Zishan, Danke für die Antwort. Sie haben einen Code veröffentlicht, der mit dem C2DM-Dienst implementiert wurde. –
Hallo, Gibt es eine Beispiel- oder Google Line, um Google Cloud Messaging (GCM) mithilfe der Asp.Net-Anwendung zu implementieren? –
Hallo, gibt es eine Lösung in Asp.net wie: http://developer.android.com/guide/google/gcm/demo.html –