所以我试图将一些数据从我的c#服务器发送到我的gcm android应用程序。它工作得很好(工作一整天后),但我无法弄清楚如何实际发送一些数据(并收到它)。在我的c#方面,我有:
using (var wc = new WebClient())
{
wc.Headers.Add("Authorization", "key=" + "key");
var nameValues = new NameValueCollection
{
{"registration_id", "id"},
{"collapse_key", Guid.NewGuid().ToString()},
{"data.payload", "works!!!!!!"},
{"message", "YES it works!!!"}
};
var resp = wc.UploadValues("https://android.googleapis.com/gcm/send",nameValues);
var respMessage = Encoding.Default.GetString(resp);
MessageBox.Show("Got respose from GCM: " + respMessage);
}
在Android应用程序的onmessage方法中我有:
protected void onMessage(Context arg0, Intent arg1) {
Log.i("Registration", "Got a message!");
Log.i("Registration", arg0.toString() + " " + arg1.toString());
String score = arg1.getExtras().getString("message");
score=arg1.getExtras().getString("data.payload");
问题是我的得分字符串始终为空:S
有什么想法吗?
答案 0 :(得分:1)
规则是名为“data.Foo”的POST字段作为名为“Foo”的意图附加项传递。要检索额外的“有效负载”,您需要传递“data.payload”并检索`arg1.getStringExtra(“payload”)。
顺便说一句,你要两次检索得分 - “message”和“data.payload”。两者都不对。