我是新来的所有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