PHPサーバーページからJAXLを使用してAndroidクライアントにデータを正常に送信しました..
Google Cloud Message の公式ウェブサイトのガイドを注意深く読みました。Upstream については、次のドキュメントのみがあります。
public void onClick(final View view) {
if (view == findViewById(R.id.send)) {
new AsyncTask() {
@Override
protected String doInBackground(Void... params) {
String msg = "";
try {
Bundle data = new Bundle();
data.putString("my_message", "Hello World");
data.putString("my_action","SAY_HELLO");
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("");
}
}
これ言ってみて:
アプリ サーバーで XMPP メッセージを受信する
When GCM receives an upstream messaging call from a client app, it generates the necessary XMPP stanza for sending the upstream message.
GCM はカテゴリと from フィールドを追加し、次のようなスタンザをアプリ サーバーに送信します。
<message id="">
<gcm xmlns="google:mobile:data">
{
"category":"com.example.yourapp", // to know which app sent it
"data":
{
"hello":"world",
},
"message_id":"m-123",
"from":"REGID"
}
</gcm>
</message>
しかし、アップストリームのドキュメントが限られているため、いくつか質問があります。
1-) Android は、アップストリームの送信者 ID を使用して JSON データを送信します...しかし、API に登録すると、アプリサーバーについて尋ねられませんでした。送信者 ID は、Gmail アカウントのアプリケーションをパッケージで識別します。アプリサーバーではありません。では、gcm はクライアントからのデータをどこに送信するのでしょうか? GCM がアプリ サーバーを認識する方法..
2-) 予算が限られているため、サーバーは共有アカウントの Web サーバーです。だから私はphpを使わなければなりません...しかし、私はドキュメントを読みました、「あなたのアプリサーバーは永続的な接続でなければなりません」定期的に接続して切断しないでください...アプリサーバーをphpとして使用できますか? そのGCMは、データをエミュレートしてAndroidクライアントに応答するPHPスクリプトを接続しますか?