Urbanairship定制推送通知消息内容

时间:2016-04-18 11:19:15

标签: android json notifications push-notification urbanairship.com

我使用城市飞艇向我的Android应用程序发送推送通知。我从后端服务器发送json内容作为推送内容

推送正常工作&我可以获得推送内容。推送消息也显示在设备通知栏中。

但问题是推送通知显示了json的内容。我需要定制它&显示人类可读的信息。

这是我的IntentReceiver类中的onPushReceived方法..

@Override
protected void onPushReceived(Context context, PushMessage message, int notificationId) {
    Log.i(TAG, "Received push notification. Alert: " + message.getAlert() + ". Notification ID: " + notificationId);

    String data = message.getAlert();
    try {
        JSONObject dataObj = new JSONObject( data );

        Logger.info("Data obj " + dataObj.toString());

        JsonDecoders.decodePushMessage(dataObj); // method to decode the json content

    } catch (JSONException e) {
        e.printStackTrace();
    }

    // try to build a new notification message.
    Intent intent = new Intent(context, MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder b = new NotificationCompat.Builder(context);

    b.setAutoCancel(true)
            .setDefaults(Notification.DEFAULT_ALL)
            .setWhen(System.currentTimeMillis())
            .setSmallIcon(R.mipmap.ic_launcher)
            .setTicker("Ticker")
            .setContentTitle("Title")
            .setContentText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
            .setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_SOUND)
            .setContentIntent(contentIntent)
            .setContentInfo("some info");


    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(1, b.build());

}

我可以解码推送内容。

我尝试通过NotificationManager添加通知,但随后它会在通知栏中显示两个通知。我需要覆盖城市飞艇推进的内容。有没有任何方法或方法可以做到这一点。我浏览了文档&找不到任何东西。

希望任何人都可以帮助我..

先谢谢。

1 个答案:

答案 0 :(得分:2)

Urban Airship支持自定义通知,但您需要让Urban Airship发布通知。您需要提供custom notification factory而不是在接收器中建立发布通知。但是,您可以通过不发送JSON内容作为消息警报来避免这种情况,而是在推送有效负载中将额外数据作为额外数据发送。