11

Tôi đang sử dụng dịch vụ web sau để gửi thông báo Đẩy từ Android. Khi tôi gọi dịch vụ web này lần đầu tiên, phải mất rất nhiều thời gian và thông báo đẩy không được gửi trên Thiết bị Android. Nó chỉ xảy ra khi được gọi từ Android. Nó hoạt động hoàn hảo như webservice.Android gửi thông báo đẩy thông qua .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

Lý tưởng nhất là nó không nên, nhưng u có thể kiểm tra nếu mã của bạn làm việc với một server test tiếng vang thay vì google máy chủ là tốt. – the100rabh

+0

Có thể là do Điều chỉnh chi tiết http://developer.android.com/google/gcm/adv.html#throttling – Slartibartfast

Trả lời

0

Sử dụng này -:

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(); 
     } 
Các vấn đề liên quan