JSON путь
user1551788 ответ работает нормально, но я как сделать это в JSON, что лучше, а не вставлять все в одну строку, я думаю.
Внутренний класс «jsonObj» такой же, как документация требует проверки различных запросов вы можете сделать here
Краткое описание:
к: телефон для отправки, вставьте registerId, что вы получили от телефона здесь. delay_while_idle С помощью флага delay_while_idle уведомления будут доставлены после активации устройства. (из-за блокировки, когда пользователь действительно использует телефон).
данные: набор data
с настраиваемыми парами ключ/значение для передачи дополнительной полезной нагрузки клиентскому приложению. Таким образом, вы можете поместить любую переменную, которую хотите, если вам нравится строка json, содержащая другой объект, если она не превышает 4 КБ.
Некоторые из них также доступны, которые я не использовал.
collapse_key: Если установлено, уведомление, что имеет такое же collapse_key
имени следует переписать старое уведомление (РАЗНИЦУ хорошей реализации на стороне телефона, когда извещение высылается, на сервере GCM будет перезаписывать, когда уведомление в ожидании).
time_to_live: Прямо вперед, как долго уведомление останется в живых, в настоящее время оно не поддерживается для IOS.
Некоторые другие, см. Документацию.
внутренний класс, потому что мне не нужен этот объект за пределами моего класса, что лучше для именования как «данные», которые могут быть чем угодно.
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; }
}
Для использования, просто:
//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);
Еще одно большое различие, которое я заметил, служба Google возвращает строку JSON, содержащий полезную информацию, он сообщает, сколько удалось, и сколько не удалось, и т.д.
Привет, Zishan, Спасибо за ответ. Вы опубликовали код, который был реализован с использованием службы C2DM. –
Привет, Есть ли образец или линия gudie для внедрения Google Cloud Messaging (GCM) с помощью приложения Asp.Net? –
привет, есть ли решение доступно в Asp.net так же, как: http://developer.android.com/guide/google/gcm/demo.html –