Я использую веб-службы C# для регистрации идентификаторов регистрации в GCM. У меня есть два телефона для Android, и у меня есть действующие регистрационные идентификаторы. Когда я передаю их отдельно, GCm не возвращает никаких ошибок, и устройства не уведомлены. Но когда я пытаюсь передать их вместе как JSON, я получаю ошибку, поскольку "Error = missing registration".
GCM, возвращающий отсутствующую регистрационную ошибку
это код моего веб-сервиса, который проходит registtration идентификаторами в GCM ..
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() + "®istration_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;
}
Я новичок в разработке и может быть что-то очень простое отсутствует. Любая помощь appreciated..Thanks заранее
Thx .. но я получил решение. Я поместил каждый регистрационный идентификатор индивидуально внутри цикла. Вышеуказанный формат, который вы показали, правильный, но я не могу легко это сформировать, поскольку мне нужно получить идентификаторы регистрации из базы данных. Это мой код, и он работает успешно. –