0

だから私は私の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");

問題は、スコア文字列が常に null であることです:S

何か案は?

4

1 に答える 1

1

ルールは、「data.Foo」と呼ばれる POST フィールドが「Foo」と呼ばれるインテント エクストラとして渡されることです。「ペイロード」と呼ばれるエクストラを取得するには、「data.payload」を渡して `arg1.getStringExtra(「ペイロード」) を取得する必要があります。

ところで、「メッセージ」と「data.payload」としてスコアを 2 回取得しています。どちらも正しくありません。

于 2012-09-04T01:30:29.400 に答える