11

Ich verwende folgenden Webservice zum Senden Push-Benachrichtigung von Android. Wenn ich diesen Webservice zum ersten Mal anrufe, dauert es so lange und Push-Benachrichtigungen werden nicht auf Android-Geräten übermittelt. Es passiert nur, wenn es von Android aus aufgerufen wird. Es funktioniert perfekt als Webservice. diesenAndroid senden Push-Benachrichtigung durch .net Webservices

[WebMethod] 

    public string SendGcm(String serviceKey,String registrationId ,string message) { 
     WebClient wc=new WebClient(); 
     wc.Headers.Add("Authorization", "key=" + serviceKey); 
     NameValueCollection nameValues=new NameValueCollection 
      { 
       {"registration_id", registrationId}, 
       {"collapse_key", Guid.NewGuid().ToString()}, 
       {"data.payload", message} 
      }; 

     var resp=wc.UploadValues("https://android.googleapis.com/gcm/send", 
        nameValues); 

     var respMessage = Encoding.Default.GetString(resp); 
       return respMessage; 
    } 
+0

Im Idealfall sollte es nicht, kann aber u überprüfen, ob Ihr Code mit einem Test Echo-Server anstelle von Google-Server als gut funktioniert. – the100rabh

+0

Wahrscheinlich aufgrund der Drosselung http://developer.android.com/google/gcm/adv.html#throttling – Slartibartfast

Antwort

0

Gebrauch -:

public void MakeNotificationForAndroid(string DeviceToken, string Body, string Sound, string CustomFrom, string CustomeMsg) 
     { 
      String DeviceID = ""; 

      DeviceID = DeviceToken; 
      WebRequest tRequest; 
      tRequest = WebRequest.Create("https://android.googleapis.com/gcm/send"); 
      tRequest.Method = "post"; 
      tRequest.ContentType = "application/x-www-form-urlencoded"; 
      tRequest.Headers.Add(string.Format("Authorization: key={0}", "AIzaSyBX1gD47uiVp0W_UjNxhwtVsQCNJYfg5vI")); 

      String collaspeKey = Guid.NewGuid().ToString("n"); 
      //String postData=string.Format("registration_id={0}&data.payload={1}&collapse_key={2}", DeviceID, "Pickup Message", collaspeKey); 
      String postData = string.Format("registration_id={0}&data.message={1}&collapse_key={2}&data.sound={3}&data.type={4}", DeviceID, Body, collaspeKey, Sound, CustomeMsg); 

      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(); 
     }