使用Asp.net推送通知(GCM)(未收到通知)(浏览器密钥)(Push Notification

2019-11-01 07:40发布

我已经建立在谷歌云端通讯(GCM)的应用程序,他们给我:

  1. 发件人ID
  2. API-KEY

我已经创建一个Android应用程序,客户可以用来注册他们的设备
云..(这是确定)。

现在,我要推休息设备的通知,如果任何用户使用数据我的Android应用程序改变的东西(SQL Server数据库)。

我发现这个代码...

 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";
         }


         public static bool ValidateServerCertificate(
                                                     object sender,
                                                     X509Certificate certificate,
                                                     X509Chain chain,
                                                     SslPolicyErrors sslPolicyErrors)
         {
             return true;
         }

但是,当我需要执行的方法(它要求我给它的参数Browser-APIKey

    string deviceId = "APA91bHsQUsnYLHSFkmmJE8AgXEU--_nqPOJ5q2sfZIpCI1ZiJnmi2-IrZCqwummfJB94uVmqgT-ZWkyeIrICU8GpPvAOdmUfiVtYRmmA7bVAaKPuerJUcRUisveOe5Jp36-3fUK7VlDvwcme0SaJiwJU9B1y1EkF6YTQ00g";
    string message = "some test message";
    string tickerText = "example test GCM";
    string contentTitle = "content title GCM";
    string postData =
    "{ \"registration_ids\": [ \"" + deviceId + "\" ], " +
      "\"data\": {\"tickerText\":\"" + tickerText + "\", " +
                 "\"contentTitle\":\"" + contentTitle + "\", " +
                 "\"message\": \"" + message + "\"}}";

首先, - >请问这种方法将有助于我正确地发送推送通知? 或可以提高到更好吗?

如果是好...

从哪里可以得到该Browser KEY

提前致谢 :)

Answer 1:

你必须要获得谷歌API控制台您的浏览器的关键。 https://code.google.com/apis/console

你Browserkey尺寸将是40个字节。

您可以参考http://developer.android.com/google/gcm/gs.html以获得更多帮助。



文章来源: Push Notification (GCM) Using Asp.net (the notification wasn't received) (Browser Key)