0

C# webservices を使用して、登録 ID を GCM に渡しています。私は2つのAndroid携帯を持っていて、有効な登録IDを持っています.それらを個別に渡すと、GCmはエラーを返さず、デバイスに通知されます.しかし、それらをJSONとして一緒に渡そうとすると、エラーが発生します."Error = missing registration".

以下は、登録IDをGCMに渡す私のWebサービスのコードです..

 public string Notify(string deviceId, string 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(HttpRequestHeader.Authorization, "key=AIzaSyCUJX_f_NZzYbigWMDK9U5vkzZ9mPiK8jA");
       tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID));
       int count = 2;

           SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["Login"]);
           conn.Open();

           string send_notification = "select RegId from REG_ID ";//where RegId <> '"+deviceId+"'";
           SqlCommand cmd2 = new SqlCommand(send_notification, conn);
           DataSet ds2 = new DataSet();
           SqlDataAdapter adapter2 = new SqlDataAdapter(cmd2);
           adapter2.Fill(ds2);
           int count1 = ds2.Tables[0].Rows.Count;
           registration[] r = new registration[count1];
           for (int i = 0; i < count1; i++)
           {
               r[i] = new registration();
               r[i].registration_ids = ds2.Tables[0].Rows[i]["RegId"].ToString();
           } 
        JavaScriptSerializer js = new JavaScriptSerializer();
        string strJson = js.Serialize(r);
        string postData = /*"collapse_key=score_update&time_to_live=108&delay_while_idle=1&*/"data.message=" + message + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id= "+ deviceId + "";
        Console.WriteLine(strJson);
        Byte[] byteArray = Encoding.UTF8.GetBytes(strJson);
        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;
    }

私は開発が初めてで、非常に単純なものが欠けている可能性があります。どんな助けでも大歓迎です..事前に感謝します

4

1 に答える 1