ここを参考に
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\"}}"