push.aspx 파일
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="push.aspx.cs" Inherits="mobile_push" %>
<!DOCTYPE html>
<html>
<head>
<title>푸쉬 전송 TEST</title>
</head>
<body>
<asp:Literal ID="SendResult" runat="server" />
</body>
</html>
push.aspx.cs 파일
using System;
using System.Net.Security;
using System.Net;
using System.Text;
using System.IO;
using System.Security.Cryptography.X509Certificates;
public partial class mobile_push : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 브라우저APIkey
string BrowserAPIKey = Request.QueryString["ApiKey"];
// BrowserAPIKey = "AIzaSyBi0pn1ckaJhRL9kK3mbwsHzk7x0fdE_Z8";
// regId(받을사람이 지급받은 registration_ids - 여러명일 경우 배열로 받아처리하면 될 듯 최대 1000)
string RegId = Request.QueryString["RegId"];
// RegId = "APA91bFNkzpbgBJnWkDgyGmU0XsF8ZLMAEhVaAtcbf9po8_i1GoA4JNt4HiUc6xScBMEOoJMIHHybZECIns9e2EF4AGalfOgZqwmQIEUG1UpVk08nTapx0iY17vOELD_9wIQTUdRwUsR";
// 알림명
string tickerText = Request.QueryString["Ticker"];
// tickerText = "알림테스트";
// 알림 제목
string contentTitle = Request.QueryString["Title"];
// contentTitle = "알림제목";
// 알림 내용
string message = Request.QueryString["Msg"];
// message = "안녕하세요~~~푸쉬입니다.";
string postData = "";
postData += "{";
postData += " \"registration_ids\": [ \"" + RegId + "\" ]";
postData += ", \"data\": {";
postData += " \"tickerText\":\"" + tickerText + "\"";
postData += " , \"contentTitle\":\"" + contentTitle + "\"";
postData += " , \"message\": \"" + message + "\"";
postData += " }";
postData += "}";
string response = SendGCMNotification(BrowserAPIKey, postData);
SendResult.Text = response;
}
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";
Console.Write(text);
}
else if (!ResponseCode.Equals(HttpStatusCode.OK))
{
var text = "Response from web service isn't OK";
Console.Write(text);
}
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;
}
}