as3c2dm というライブラリを使うのを想定しています。
結論から言うと、C2DM サーバに送る POST パラメータには、
- data.parameters
- data.tickerText
- data.contentTitle
- data.contentText
を含める必要があります。
アプリから Google のC2DM のサーバから Registration ID を受け取るときには、ActionScript で onRegisterd() 関数を定義しておきます。通常は、この関数の中でどっかのサーバに Registration ID を登録するような処理をします。
Java レベルでは BroadcastReceiver が、com.google.android.c2dm.intent.REGISTRATION というインテントを受け取ったら、onRegisterd() を呼び出します。
ところが、C2DM サーバからメッセージデータがプッシュされたとき(インテントは com.google.android.c2dm.intent.RECEIVE)の関数定義が、サンプルにはありません。onMessage() みたいなのを呼び出すこともない。で、ソースを見てみると...
public class C2DMBroadcastReceiver extends BroadcastReceiver { // ... @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals( // ... } else if (intent.getAction().equals( "com.google.android.c2dm.intent.RECEIVE")) { handleMessage(context, intent); } } // ... private void handleMessage(Context context, Intent intent) { try { // ... String parameters = intent.getStringExtra("parameters"); CharSequence tickerText = intent.getStringExtra("tickerText"); CharSequence contentTitle = intent.getStringExtra("contentTitle"); CharSequence contentText = intent.getStringExtra("contentText"); // ...
待てやコラ ヽ(`Д´)ノ
この後、Notification オブジェクトを作って、端末に表示する処理が入っています。
なんで onRegstered() と同じレイヤで受けられるようになってないのか、唐突に tickerText じゃねーよなどと思ったわけです。が、事情をよく分かっていないのでなんとも。Notification とか Toast ってプラットフォームの機能なので、ActionScript からアクセスできないか、アクセスが大変なのかも知れません。