11

Android에서 푸시 알림을 보내려면 다음 웹 서비스를 사용하고 있습니다. 처음으로이 웹 서비스를 호출하면 많은 시간이 걸리고 Android 디바이스에 푸시 알림이 전달되지 않습니다. Android에서 호출 될 때만 발생합니다. 그것은 완벽하게 webservice로 작동합니다.안드로이드에서 푸시 알림 보내기 .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

이상적으로는 안하지만 코드뿐만 아니라 구글 서버의 테스트 에코 서버와 함께 작동하는 경우 유 확인할 수 있습니다. – the100rabh

+0

아마도 조절로 인해 http://developer.android.com/google/gcm/adv.html#throttling – Slartibartfast

답변

0

사용이 - :

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