2016-04-03 7 views
0

Ich versuche GCM mit C# zu drücken. Es gelingt mir, die Nachricht an das Telefon zu senden. Aber nur dass die gesamte Zeichenfolge zusammen mit den Parametern auf dem Telefon angezeigt wird, und nicht nur der Parameter "message".

Dh: für meine Nachricht string: "gcmAction = gcmActionFeedback, title = Bitte geben Sie Ihr Feedback, message = Ihr Feedback bitte"
in der Telefon Mitteilung ich in der Lage bin, um zu sehen „gcmAction = gcmActionFeedback, title = Bitte geben Sie Ihr Feedback, Nachricht = Dein Feedback bitte "wo soll ich sehen" Dein Feedback bitte nur ".

Der Titel wird auch nicht angezeigt. Wenn ich die gleiche GCM-Nachricht über http://gcm-alert.appspot.com/ sende, scheint alles perfekt zu funktionieren.GCM Parameter angezeigt zusammen mit der Nachricht

Plz PLZ Hilfe. Dies ist der Code


public string SendNotification2(string deviceId, string message) 
     { 
      string GoogleAppID = "AIza.......xkQk"; 
      var SENDER_ID = "6666666666"; 
      var value = message; 
      WebRequest tRequest; 
      tRequest = WebRequest.Create(" https://android.googleapis.com/gcm/send "); 
      tRequest.Method = "post"; 
      tRequest.ContentType = " application/x-www-form-urlencoded;charset=UTF-8"; 
      tRequest.Headers.Add(string.Format("Authorization: key={0}", GoogleAppID));

 tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID)); 

     string postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.message=" + value + "&data.time=" + 
     System.DateTime.Now.ToString() + "&registration_id=" + deviceId + ""; 
     Console.WriteLine(postData); 
     Byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
     tRequest.ContentLength = byteArray.Length; 

     Stream dataStream = tRequest.GetRequestStream(); 
     dataStream.Write(byteArray, 0, byteArray.Length); 
     dataStream.Close(); 

     WebResponse tResponse = tRequest.GetResponse(); 

     dataStream = tResponse.GetResponseStream(); 

     StreamReader tReader = new StreamReader(dataStream); 

     String sResponseFromServer = tReader.ReadToEnd(); 

     tReader.Close(); 
     dataStream.Close(); 
     tResponse.Close(); 
     return sResponseFromServer; 
    } 

Antwort

1

Sie können einfach nicht alle Felder in einem einfachen Meldungs-String setzen. Wenn die Nachricht eine Zeichenfolge ist, zeigt Android die Zeichenfolge genau so an, wie sie ist.

Also statt ...data.message=" + value +... teilen Sie Ihre Wert in die verschiedenen Felder, die Sie wollen (gcmAction, Titel, ...) und fügen Sie sie entsprechend an die URL

string msg = "foo", title="bar", gcmAction="bla"; 
string postdata = "....&data.message="+msg+"&data.title="+title+"&data.gcmAction="+gcmAction +"&..." 

Ich weiß nicht, die genauen Namen der Felder benötigt und/oder unterstützt, müssen Sie möglicherweise in der Dokumentation nachschlagen.

Oder als Alternative: Sie könnten ein JSON-Objekt mit der jeweiligen Nutzlast erstellen und diese playload im Körper übertragen, wie in this blog

+0

Arbeits Perfekt gezeigt. Danke vielmals! –

Verwandte Themen