Android で画像つきプッシュ通知を配信する方法

※Growthbeat SDK 2.0.6を導入していることが前提となります。

最新版 Growthbeat SDKは こちらよりダウンロードしてください。

アプリ側の実装

public void onCreate(){
    super.onCreate();
    GrowthPush.getInstance().initialize(getApplicationContext(), "YOUR_APPLICATION_ID", "YOUR_CREDENTIAL_ID",
    BuildConfig.DEBUG ? Environment.development : Environment.production);
    GrowthPush.getInstance().requestRegistrationId("YOUR_SENDER_ID");

    GrowthPush.getInstance().setReceiveHandler(new DefaultReceiveHandler() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle extras = intent.getExtras();

        String endTimestamp = String.valueOf(System.currentTimeMillis());
        int maxIdRange = Integer.valueOf(endTimestamp.substring(endTimestamp.length() - 9, endTimestamp.length()));
        int randomNotificationId = new Random().nextInt(maxIdRange);

        NotificationCompat.Builder builder = super.defaultNotificationBuilder(context, extras, 
        defaultLaunchPendingIntent(randomNotificationId, context, intent.getExtras()));

        String image = extras.getString("YOUR_CUSTOM_KEY");
        if (image != null) {
            try {
                URL imageURL = new URL(image);
                InputStream istream = imageURL.openStream();
                Bitmap iBmp = BitmapFactory.decodeStream(istream);
                NotificationCompat.BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle(builder);
                builder.setStyle(bigPictureStyle.bigPicture(iBmp));
                istream.close();
                builder.setStyle(bigPictureStyle.setSummaryText(extras.getString("message")));
            } catch (Exception e) {
            }
        }
        super.addNotification(context, randomNotificationId, builder.build());
    }
});
}
private PendingIntent defaultLaunchPendingIntent(int requestCode, Context context, Bundle extras) {
    Intent intent = new Intent(context, AlertActivity.class);
    intent.putExtras(extras);
    intent.putExtra("dialogType", DialogType.none.toString());
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    return PendingIntent.getActivity(context, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
}

起動時のApplicationクラスのonCreate()内で、GrowthPushの初期化処理を実装した後に、上記を実装してください。 初期化処理がない場合や、Activityにセットしますと、プロセスがない場合に正しく動作いたしません。

"YOUR_CUSTOM_KEY"は、配信時にカスタムフィールドで定義する任意のキーのため、変更が可能です。
管理画面にて配信の設定
カスタムフィールドに下記 json を記述して配信設定を行ってください。
{"YOUR_CUSTOM_KEY":"imageURL"}
		
注意点
・"YOUR_CUSTOM_KEY"はアプリの実装のキーと一致している必要があります。

画像サイズ

Androidの通知欄の画像表示領域は下記となります。
192dp × 450dp

配信イメージ

・通知一覧のトップにくると自動で画像を開きます。

・トップ以外の場合は、通知を下にスワイプすることで画像を開きます。