How to send Android push notifications via GCM on C# .Net

后端 未结 6 1114
礼貌的吻别
礼貌的吻别 2020-12-13 08:02

I\'m new to all Android GCM push notifications and I have read stack posts but couldn\'t get a straight answer.I have also read Create push notification in android to get a

6条回答
  •  不思量自难忘°
    2020-12-13 08:34

    Code looks bit long but it works. I just sent a push notification to my phone after struggling 2 days by implementing the following code in C# project. I referred a link regarding this implementation, But couldn't find it to post here. So will share my code with you. If you want to test the Notification online you may visit to this link.

    note : I have hardcorded apiKey, deviceId and postData, please pass the apiKey,deviceId and postData in your request and remove them from the method body. If you want pass message string also

    public string SendGCMNotification(string apiKey, string deviceId, string postData)
    {
        string postDataContentType = "application/json";
        apiKey = "AIzaSyC13...PhtPvBj1Blihv_J4"; // hardcorded
        deviceId = "da5azdfZ0hc:APA91bGM...t8uH"; // hardcorded
    
        string message = "Your text";
        string tickerText = "example test GCM";
        string contentTitle = "content title GCM";
        postData =
        "{ \"registration_ids\": [ \"" + deviceId + "\" ], " +
          "\"data\": {\"tickerText\":\"" + tickerText + "\", " +
                     "\"contentTitle\":\"" + contentTitle + "\", " +
                     "\"message\": \"" + message + "\"}}";
    
    
        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;
    }
    

    You may not familiar with words like apiKey, deviceId. Dont worry i will explain what are they and how to create those.

    apiKey
    What & why :This a key that will be used when sending requests to GCM server.
    How to create : Refer this post

    deviceId
    What & why : This id also known as RegistrationId. This is a unique id to identify the device. When you want to send a notification to a specific device you need this id.
    How to create: This depends on how you implement the application. For cordova i used a simple pushNotification Plugin You can simply create a deviceId/RegistrationId using this plugin. To do that you need to have a senderId. Google how to create a senderId it is really simple =)

    If anyone needs some help leave a comment.

    Happy Coding.
    -Charitha-

提交回复
热议问题