2

私はGoogleCloudMessaging(GCM)でプロジェクトを作成しており、このチュートリアルに従っています。

クライアント側の作業が完了し、クライアント側でデバイスをセットアップしました。また、次のコードを使用してデバイスを登録しました。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    GCMRegistrar.checkDevice(this);
    GCMRegistrar.checkManifest(this);
    final String regId = GCMRegistrar.getRegistrationId(this);
    if (regId.equals("")) {
        GCMRegistrar.register(this, "483910217912");
        Log.d(tag, "Registered");
    }
    else {
        Log.v(tag, "Already registered");
    }
}

今、私は自分のGCMプロジェクト用のサーバーを作成する時点で立ち往生しています。新しいメッセージが受信されたときに通知するプロジェクトを作成していることに注意してください。ただし、メッセージを受信するサービスは実装していませんが、サーバーの設定が完了したら実装します。

4

6 に答える 6

6

ブログ投稿のGoogleクラウドメッセージング(GCM)チュートリアルを使用して、AndroidでGCMサーバーを作成できますが、サーバー側のコードにはPHPを使用したいと思います。簡単な手順でcURL(PHP)にGCMサーバーを作成できます。

  1. GoogleAPIコンソールページからサーバーキーを作成します。

  2. このメッセージの送信先のデバイスのデバイストークンを特定します。

簡単な手順は、Android用のGCMPHPプッシュサーバーを実装してプッシュサーバーを実装する方法にあります。

于 2012-10-11T10:06:10.040 に答える
5

このコードを使用できます

package yourpackage.android.gcm.server;

import com.google.android.gcm.server.Message;
import com.google.android.gcm.server.MulticastResult;
import com.google.android.gcm.server.Sender;

import java.util.ArrayList;

class Notify {
    public static void main(String args[]) {

        try {

            Sender sender = new Sender("AIzaSyCn3N2OIm-EDtiGwTyQfSIB8NRvDtIOx30");

            ArrayList<String> devicesList = new ArrayList<String>();
//add you deviceID
            devicesList.add("APA91bELVJbxB_NLnLbTkkkX87SDdkJc6OfCN2slhC9t4cLq-KA32eGgiW4-Gi--ZEsEMKIh0AtYJMs5rQGswfm3cH1qK853WcpV98bkaplAaC5AiycDmifuVFSRl21vgf-Rqj0dCrFF");
                        //devicesList.add("APA91bHIdM4XGqrjJLTuwCX5OOrTYG4ACXYEVkZDM1bPs5qFdzJP4Bpql-sZqyKB8BU7fDtdxB84aTygHLyASYg_XNY6lqrcA4wj4sZHJXGVFzz_0UEADMfFCx9NAfRZxunIYso_dkBa");
            //APA91bFA-i2l3iEMnIBs0JK80pTLHOsE7p1s-DysRpKGas1MQOVILyIs9xwY7soysSWGz5Uif68uXR6F5Xn0tCTYesv78uQZxhC310a1cvf8aFohhfMGY6awbOSg3t1GRz2i3U-8kVSF
            // Use this line to send message without payload data
            // Message message = new Message.Builder().build();

            // use this line to send message with payload data
            Message message = new Message.Builder()
                    //.collapseKey("message")
                    //.timeToLive(241000)
                    .delayWhileIdle(true)
                    .addData("message", "Your message send")
                    .build();


                   /**/
            // Use this code to send to a single device
            // Result result = sender
            // .send(message,
            // "APA91bGiRaramjyohc2lKjAgFGpzBwtEmI8tJC30O89C2b3IjP1CuMeU1h9LMjKhmWuZwcXZjy1eqC4cE0tWBNt61Kx_SuMF6awzIt8WNq_4AfwflaVPHQ0wYHG_UX3snjp_U-5kJkmysdRlN6T8xChB1n3DtIq98w",
            // 1);

            // Use this for multicast messages
            MulticastResult result = sender.send(message, devicesList, 1);
            //sender.send(message, devicesList, 0);

            System.out.println(result.toString());
            if (result.getResults() != null) {
                int canonicalRegId = result.getCanonicalIds();
                if (canonicalRegId != 0) {
                }
            } else {
                int error = result.getFailure();
                System.out.println(error);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
于 2012-10-11T10:01:25.907 に答える
5

com.google.android.gcm.serverライブラリは非推奨になりました。メッセージをJSONオブジェクトにエンコードし、GCMURLhttps://android.googleapis.com/gcm/sendにPOSTするだけです

JSONの例:

 {
   "registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",...],
   "data" : {
     "Team" : "Portugal",
     "Score" : "3",
     "Player" : "Varela",
   },
 }

こちらがhttp://developer.android.com/google/gcm/http.htmlです

于 2013-12-16T21:22:03.573 に答える
4

gcm-clientとgcm-serverのサンプルコードは、AndroidSDKディレクトリにあります。始めるのは良い点です。ディレクトリは:

path_to_android_sdk / extras / google / gcm / samples

于 2012-10-12T07:12:43.880 に答える
3
In your main function implement following code to send push notification to your app

final String apiKey = "specify your  api key generated by gcm";

To make http connection to gcm using following code

 URL url = new URL("https://android.googleapis.com/g...");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setRequestProperty("Authorization", "key="+apiKey);

        conn.setDoOutput(true);

JSON message format accepted by GCM

String input = "{\"registration_ids\" : [\"Specify token you got from GCM\"],\"data\" : {\"message\": \"hai  welcome\"},}";

To send notification

OutputStream os = conn.getOutputStream();
        os.write(input.getBytes());
        os.flush();

In your client app you need to have proper BroadcastReceiver  class to receive the message sent from GCM
于 2015-10-01T16:14:49.060 に答える
2

開発者サイトで提供されているデモをテストすることをお勧めします。これに基づいてデモサンプルを作成し、デモサンプルを実行するために従う必要のあるすべての手順を実行しました。私のブログをチェックして、私のgithubからソースを見つけることもできます。

于 2012-10-11T10:01:53.603 に答える