Google Cloud Messaging for Androidによるプッシュサーバの実装

ここを参考に
http://inon29.hateblo.jp/entry/2014/04/10/220556

curlを叩くサーバのグローバルIPホワイトリストに入れることを忘れない

Toastのとこだけ書き換えた
onReceive()内ではToastが使える このへんの非同期の仕組みがよく分かってない
GcmBroadcastReceiver.java

package com.test.myapplication;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
import android.support.v4.content.WakefulBroadcastReceiver;
import android.util.Log;
import android.widget.Toast;

/**
 * Created by shohei on 4/14/15.
 */
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver{
    public GcmBroadcastReceiver(){
        super();
    }

    private String extra;
    private Handler handler = new Handler();

    @Override
    public void onReceive(Context context,Intent intent){
        ComponentName comp =
                new ComponentName(context.getPackageName(),GcmIntentService.class.getName());
        startWakefulService(context, (intent.setComponent(comp)));
        setResultCode(Activity.RESULT_OK);
        //ここから
        extra = intent.getExtras().getString("message");
        Toast.makeText(context,"Received message" +extra,Toast.LENGTH_LONG).show();
        Log.v("HOGE","Received message: "+extra);
        //ここまで
    }
}

VPSからの叩き方

curl --header "Authorization: key=<サーバーAPI key>" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"<アプリを立ち上げるごとに発行される端末固有のregistration ID>\"],\"data\":{\"message\":\"Hello\"}}"