我无法将数据从 c# 服务器传递到 GCM 应用程序

Posted

技术标签:

【中文标题】我无法将数据从 c# 服务器传递到 GCM 应用程序【英文标题】:I can not pass data from c# server to GCM app 【发布时间】:2012-08-28 07:08:45 【问题描述】:

所以我正在尝试将一些数据从我的 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

有什么想法吗?

【问题讨论】:

【参考方案1】:

规则是名为“data.Foo”的 POST 字段作为名为“Foo”的 Intent Extras 传递。要检索一个名为“payload”的额外内容,您需要传递“data.payload”并检索`arg1.getStringExtra("payload")。

顺便说一句,您检索分数两次 - 作为“消息”和“data.payload”。两者都不对。

【讨论】:

以上是关于我无法将数据从 c# 服务器传递到 GCM 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 ios 应用程序传递到 C# Web 服务

谷歌云消息传递 GCM 可靠吗?

GCM 中使用上游消息传递的消息流程图

gcm 云连接服务器到应用服务器消息传递

Onesignal vs GCM(FCM)

关于 GCM 中的规范 ID(谷歌云消息传递)