【发布时间】:2013-04-27 04:47:52
【问题描述】:
我是所有 Android GCM 推送通知的新手,我已阅读堆栈帖子但无法得到直接答案。我还阅读了 Create push notification in android 以更好地了解 GCM 的工作原理。我还使用了 SDK 提供的 gcm-demo-server 和 gcm-demo-client。但是,这是我的疑问以及到目前为止我所尝试的:
- 关于我放的链接,有应用程序的手机注册以获取注册密钥。这是所有使用相同应用的手机的唯一密钥吗?
- 此注册密钥是否会过期? (例如,在后台运行的应用)
-
假设我有注册密钥,我尝试了以下代码 sn-p 通过 GCM 将通知推送到我的应用程序。这是写在 c# .net 上的。请让我知道我上面提到的是否可以使用以下代码sn-p来实现:
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"; } 是否有直接发送推送通知的方法,而无需先在我们的自定义服务器中注册手机?
【问题讨论】:
标签: c# android google-cloud-messaging