Sono nuovo a tutte le notifiche push GCM Android e ho letto i post dello stack ma non ho potuto ottenere una risposta diretta. Ho anche letto Create push notification in android per ottenere una migliore comprensione di come funziona GCM. Ho anche usato il gcm-demo-server e gcm-demo-client fornito dall'SDK. Tuttavia, qui ci sono i miei dubbi e quello che ho provato finora:Come inviare notifiche push Android tramite GCM su C# .Net
- Per quanto riguarda il collegamento che ho messo, il telefono che ha i registri delle app per ottenere la chiave di registrazione. È una chiave unica per tutti i telefoni che utilizzano la stessa app?
- Questo codice di registrazione scade in ogni caso? (Ad esempio App in esecuzione su sfondo)
Supponendo che ho la chiave di registrazione, ho provato il seguente frammento di codice per spingere la notifica tramite GCM alla mia app. Questo è scritto su C# .net. Per favore fatemi sapere se ciò che ho detto sopra può essere raggiunto utilizzando il seguente frammento di codice:
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"; }
C'è un modo diretto di invio di notifiche push senza il telefono prima di essere registrati nel nostro server personalizzato?
Per qualche motivo il codice sopra riportato non funziona. Ho assunto che l'ID dispositivo sia la chiave di registrazione qui. Tuttavia, quando provo a inviare messaggi utilizzando http://helmibaraja.com/gcm_demo.html, funziona. Qualche idea? –
Funziona cambiando "®istration_id =" in "& registration_id =". Grazie a tutti :) –
GoogleAppID = la chiave del server e & deviceid = l'ID di registrazione (184 caratteri) && SENDER_ID = ID di 12 cifre ID (il numero del progetto) (Grazie commenti sulla pagina del progetto codice. –