JSON sposób
user1551788 odpowiedź działa dobrze, jednak ja lubię to robić w JSON, co jest lepszą praktyką zamiast wstawiania wszystkiego w jedną linię, tak myślę.
Klasa wewnętrzny „jsonObj” jest taka sama jak dokumentacja wymaga, sprawdzić różne wnioski można dokonać here
A Skrócony opis:
do: telefon, aby wysłać do, włóż registrationId, które otrzymałeś z telefonu tutaj. delay_while_idle Używając flagi delay_while_idle, powiadomienia zostaną dostarczone, gdy urządzenie stanie się aktywne. (wyjście z blokady, gdy użytkownik naprawdę korzysta z telefonu).
Dane: ustaw data
z niestandardowymi parami klucz/wartość, aby przekazać dodatkowe ładunki do aplikacji klienckiej. Możesz więc wstawić dowolną zmienną, jeśli chcesz ciąg json zawierający inny obiekt, o ile nie przekracza 4 KB.
Niektóre są również dostępne, których nie używałem.
collapse_key: Jeśli ustawiony jest powiadomienie, że ma taką samą collapse_key
nazwę należy zastąpić starszą powiadomienia (Metter dobrej implementacji po stronie telefonu, gdy zgłoszenie jest wysłać na serwer GCM będzie go zastąpić, gdy zgłoszenie jest w oczekiwaniu).
time_to_live: Prosto, jak długo powiadomienie pozostanie przy życiu, obecnie nie jest obsługiwane przez IOS.
Niektóre inne, patrz dokumentacja.
klasa wewnętrzna, ponieważ nie potrzebowałem tego obiektu poza moją klasą, co jest lepsze w przypadku nazywania "danych", które mogą być dowolne.
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; }
}
Aby go wykorzystać, po prostu:
//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);
Kolejną wielką różnicę zauważyłem, usługa google zwraca łańcuch json zawierający przydatne informacje, mówi ile udało i ile udało itp
Cześć Zishan, dzięki za odpowiedź. Użytkownik wysłał kod, który został zaimplementowany przy użyciu usługi C2DM. –
Witam, Czy jest dostępna jakaś próbka lub linia gudie do wdrożenia Google Cloud Messaging (GCM) za pomocą aplikacji Asp.Net? –
Witam, czy istnieje jakieś rozwiązanie dostępne w Asp.net, takie jak: http://developer.android.com/guide/google/gcm/demo.html –