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 からアクセスできないか、アクセスが大変なのかも知れません。