11

Androidからプッシュ通知を送信するために、次のWebサービスを使用しています。このWebサービスを初めて呼び出すと、時間がかかり、Androidデバイスでプッシュ通知が配信されません。 Androidから呼び出されたときにのみ発生します。それはWebサービスとして完全に動作します。Android webサービスからプッシュ通知を送信

[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

理想的にはそれがないはずですが、あなたのコードは、同様の試験echoサーバの代わりに、Googleのサーバーで動作するかどうかuが確認できます。 – 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(); 
     } 
関連する問題