アプリからユーザーにメッセージを通知するpush通知は、Androidの場合ステータスバーに忽然と現れ「なんですか最初から居ましたよ」みたいなわりと控えめな通知が一般的ですが、iOSのように画面にポンとアラートが現れるpush通知を実現することができました。

技術的に難しいことは特にないのですが、通知の際にAndroidManifest.xmlでLAUNCHER指定されたクラスが一緒に起動されてしまい、アラートだけを単独で起動させるための解決にハマったのでメモ。

GCMのAPIキー取得や送信用プログラム、サーバーの用意などPUSH通知の実装に必要な最低限のプログラムがデプロイされていることを前提にします。

まずはActivity継承のクラスをわかりやすく「DialogAlert.java」の名前で作成します。
アラートを呼び出す記述は下記
AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);


続いて、GCM通信要求の処理。
GCMBaseIntentServiceを継承したクラス内のonCreateにオーバーライドします。

    @Override
    protected void onMessage(Context context, Intent intent) {
        Intent i = new Intent(context,DialogAlert.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(i);
    }

これで動かすと、アラートだけでなくAndroidManifest.xmlでLAUNCHER指定されたクラスが一緒に起動されてしまうので、AndroidManifest.xmlでDialogAlert.javaの宣言をする際に下記のように記述します。

        <activity
            android:launchMode="singleInstance"
            android:theme="@android:style/Theme.Dialog"
            android:label="@string/app_name"
            android:name="info.pushtest.DialogAlert">
        </activity>



android:theme="@android:style/Theme.Dialog"がミソっぽい。