0

私はGoogleクラウドメッセージング(GCM)でアプリケーションを作成しました、そして彼らは私に与えます:

  1. SENDER-ID
  2. APIキー

クライアントがデバイスをクラウドに登録するために使用できるAndroidアプリケーションを作成
しました..(そしてそれはOKです)。

ここで、Androidアプリケーションを使用しているユーザーがデータ(SQL SERVER DATABASE)で何かを変更した場合に、残りのデバイスに通知をプッシュしたいと思います。

このコードを見つけました...

 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か?

前もって感謝します :)

4

1 に答える 1

1

Google API コンソールから Browser-Key を取得する必要があります。https://code.google.com/apis/console

Browserkey のサイズは 40 バイトになります。

詳細については、 http://developer.android.com/google/gcm/gs.htmlを参照してください。

于 2013-01-07T09:38:30.347 に答える