1

開発者の Android サイトから GCM を理解しようとしています。http://developer.android.com/google/gcm/client.htmlの指示に従って、クライアント側の Android アプリを実装しました。彼らが言及したように、私が使用したコードはhttps://code.google.com/p/gcm/からダウンロードされます。GCM 登録機能は、私の電話で完全に機能します。

問題は、Android アプリ コードのどこにも xmpp ベースのアプリ サーバー名を記載する場所がないことです。サーバー名を指定しない場合、メッセージはどのようにサーバーに送信されますか? アプリがサーバーとどのようにやり取りするかについて混乱しています。Android アプリからサーバーにメッセージを送信する正確なコードは次のとおりです。

// Send an upstream message.
public void onClick(final View view) {

    if (view == findViewById(R.id.send)) {
        new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... params) {
                String msg = "";
                try {
                    Bundle data = new Bundle();
                    data.putString("my_message", "Hello World");
                    data.putString("my_action", "com.google.android.gcm.demo.app.ECHO_NOW");
                    String id = Integer.toString(msgId.incrementAndGet());
                    gcm.send(SENDER_ID + "@gcm.googleapis.com", id, data);
                    msg = "Sent message";
                } catch (IOException ex) {
                    msg = "Error :" + ex.getMessage();
                }
                return msg;
            }

            @Override
            protected void onPostExecute(String msg) {
                mDisplay.append(msg + "\n");
            }
        }.execute(null, null, null);
    } else if (view == findViewById(R.id.clear)) {
        mDisplay.setText("");
    }
}
4

1 に答える 1

0

デバイスからクラウドへのメッセージをアプリからサーバーに送信するときは、次の呼び出しを使用します。

gcm.send(SENDER_ID + "@gcm.googleapis.com", id, data);

GCM CCS サーバーは、SENDER_ID によってサーバーを識別します (サーバーは、GCM CCS サーバーとの XMPP 接続を確立するときにその SENDER_ID を使用するため)。

于 2013-08-31T11:10:13.923 に答える