Comment envoyer Android notifications push via GCM sur C# .Net

Je suis nouveau sur Android GCM notifications push et j'ai lu pile de postes, mais ne pouvait pas obtenir une réponse claire.J'ai aussi lu Créer de notification push sur android pour obtenir une meilleure compréhension de la façon dont GCM œuvres. J'ai également utilisé le gcm-démo-serveur et gcm-démo-client fourni par le SDK. Cependant, voici mes doutes et de ce que j'ai essayé jusqu'à présent:

  1. Concernant le lien que j'ai mis, le téléphone qui a l'application enregistre pour obtenir la clé d'enregistrement. Est-ce une clé unique pour tous les téléphones qui utilisent la même application?
  2. N'cette clé d'enregistrement expire dans tous les cas? (E. g. Une application qui s'exécute en tâche de fond)
  3. En supposant que j'ai la clé d'enregistrement, j'ai essayé le code suivant extrait de notification push via GCM à mon application. C'est écrit en c# .net. S'il vous plaît laissez-moi savoir si ce que j'ai mentionné ci-dessus peut être réalisé à l'aide de l'extrait de code suivant:
         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";
        }
  4. Est-il un moyen direct de l'envoi de notifications push sans le téléphone d'abord être enregistrés sur notre serveur personnalisé?

OriginalL'auteur Pavan Welihinda | 2013-04-27