我是新來的所有Android GCM推送通知,我已經閱讀過帖子,但無法得到直接的答案。我也讀了Create push notification in android以獲得更好的理解GCM如何工作。我也使用了SDK提供的gcm-demo-server和gcm-demo-client。但是,這裏是我的疑惑,以及我迄今爲止所嘗試的:如何在C#.Net上通過GCM發送Android推送通知
- 關於我所提供的鏈接,有應用的電話註冊獲取註冊密鑰。這是使用相同應用的所有手機的唯一密鑰嗎?
- 此註冊密鑰在任何情況下都會過期嗎? (例如在後臺運行的應用程序)
假設我有註冊碼,我嘗試了下面的代碼片段,通過GCM將通知推送到我的應用程序。這是寫在c#.net。請讓我知道我所提到的東西是否可以實現使用下面的代碼片段:
private string SendGCMNotification(string apiKey, string postData, string postDataContentType = "application/json") { ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateServerCertificate); // MESSAGE CONTENT byte[] byteArray = Encoding.UTF8.GetBytes(postData); // CREATE REQUEST HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://android.googleapis.com/gcm/send"); Request.Method = "POST"; Request.KeepAlive = false; Request.ContentType = postDataContentType; Request.Headers.Add(string.Format("Authorization: key={0}", apiKey)); Request.ContentLength = byteArray.Length; Stream dataStream = Request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); // SEND MESSAGE try { WebResponse Response = Request.GetResponse(); HttpStatusCode ResponseCode = ((HttpWebResponse)Response).StatusCode; if (ResponseCode.Equals(HttpStatusCode.Unauthorized) || ResponseCode.Equals(HttpStatusCode.Forbidden)) { var text = "Unauthorized - need new token"; } else if (!ResponseCode.Equals(HttpStatusCode.OK)) { var text = "Response from web service isn't OK"; } StreamReader Reader = new StreamReader(Response.GetResponseStream()); string responseLine = Reader.ReadToEnd(); Reader.Close(); return responseLine; } catch (Exception e) { } return "error"; }
是否有發送推送通知,而無需首先在我們的自定義服務器中註冊的電話直接的方式?
出於某種原因上述代碼無法正常工作。我在這裏假設設備ID是註冊碼。但是,當我嘗試推送消息使用http://helmibaraja.com/gcm_demo.html它的作品。有任何想法嗎? – 2013-04-27 17:44:36
通過將「®istration_id=」更改爲「&registration_id =」來實現它。感謝所有:) – 2013-04-27 18:03:49
GoogleAppID =服務器API密鑰&& deviceid =註冊ID(184個字符)&& SENDER_ID = 12位數的應用程序ID(項目編號)(感謝代碼項目頁面上的註釋 – 2014-11-12 02:01:02