JSON cách
user1551788 câu trả lời hoạt động tốt, tuy nhiên tôi thích làm điều đó trong JSON, đó là thực hành tốt hơn thay vì chèn mọi thứ vào một dòng, tôi nghĩ vậy.
Lớp nội 'jsonObj' cũng giống như các tài liệu yêu cầu, kiểm tra các yêu cầu khác nhau mà bạn có thể làm cho here
Một mô tả ngắn gọn:
để: điện thoại để gửi đến, chèn registrationId mà bạn đã nhận được từ điện thoại tại đây. delay_while_idle Bằng cách sử dụng cờ delay_while_idle, thông báo sẽ được gửi sau khi thiết bị hoạt động. (ngoài khóa, khi người dùng thực sự sử dụng điện thoại).
dữ liệu: đặt data
với cặp khóa/giá trị tùy chỉnh để chuyển tải trọng bổ sung cho ứng dụng khách. Vì vậy, bạn có thể đặt vào bất kỳ biến nào bạn muốn, nếu bạn thích một chuỗi json chứa một đối tượng khác, miễn là nó không vượt quá 4 KB.
Một số cũng có sẵn mà tôi không sử dụng.
collapse_key: Nếu thiết lập, một thông báo rằng có cùng collapse_key
tên nên được ghi đè lên các thông báo cũ (Metter thực hiện tốt ở bên cạnh điện thoại khi thông báo là gửi, trên máy chủ GCM nó sẽ ghi đè khi thông báo là đang chờ xử lý).
time_to_live: Thẳng về phía trước, thời lượng thông báo sẽ vẫn hoạt động, hiện không được hỗ trợ cho IOS.
Một số khác, xem tài liệu.
lớp nội bộ vì tôi không cần đối tượng đó bên ngoài lớp học, tốt hơn là đặt tên như 'dữ liệu' có thể là bất kỳ thứ gì.
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; }
}
Để sử dụng, bạn chỉ cần:
//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);
Một khác biệt tuyệt vời, tôi đã nhận thấy, dịch vụ google trả về một chuỗi json chứa thông tin hữu ích, nó nói có bao nhiêu thành công và có bao nhiêu thất bại vv
Hi Zishan, Cảm ơn bạn đã trả lời. Bạn đã đăng mã đã được triển khai bằng cách sử dụng dịch vụ C2DM. –
Xin chào, có bất kỳ dòng mẫu hoặc gudie nào có sẵn để triển khai Google Cloud Messaging (GCM) bằng cách sử dụng ứng dụng Asp.Net không? –
hi là có bất kỳ giải pháp có sẵn trong Asp.net giống như: http://developer.android.com/guide/google/gcm/demo.html –