Growth Push からの配信の判別方法(Android)

複数のPush通知機能サービスを併用する場合、もしくは Growth Push からの配信であることを判断したい場合の実装手順を以下に説明します。

Growth Push レシーバークラスを作成

public class MyReceiverService extends GcmListenerService {

    @Override
    public void onMessageReceived(String from, Bundle data) {
        super.onMessageReceived(from, data);
        Intent intent = new Intent();
        intent.putExtras(data);
        if(intent.getExtras().containsKey("growthpush"))
            GrowthPush.getInstance().getReceiveHandler().onReceive(getApplicationContext(), intent);
    }
}

Growth Pushの送信画面で「カスタムフィールドに通知IDを追加」のオプションを設定いただくと、プッシュ通知のペイロードに、growthpush というキーのオブジェクトが追加されます。そちらのオブジェクトを取得して Growth Push からの通知の場合、通知を表示させるよう設定します。

※ 下記記述の場合、「カスタムフィールドに通知IDを追加」オプションを設定していない場合は配信が行われないためご注意ください。

if(intent.getExtras().containsKey("growthpush"))
    GrowthPush.getInstance().getReceiveHandler().onReceive(getApplicationContext(), intent);

また、独自のパラメータを使用する場合は、「カスタムフィールド」にて設定いただけます。カスタムフィールドについては、 カスタムフィールド(JSON)の設定方法をご参照ください。

AndroidManifest.xml の書きかえ

<service
    android:name="com.growthpush.ReceiverService"
    android:exported="false" >
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    </intent-filter>
</service>

android:name="com.growthpush.ReceiverService" を先ほど作成したファイルのパスに書き変える

<service
    android:name="com.growthbeat.sample.MyReceiverService"
    android:exported="false" >
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    </intent-filter>
</service>