我使用城市飞艇向我的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添加通知,但随后它会在通知栏中显示两个通知。我需要覆盖城市飞艇推进的内容。有没有任何方法或方法可以做到这一点。我浏览了文档&找不到任何东西。
希望任何人都可以帮助我..
先谢谢。
答案 0 :(得分:2)
Urban Airship支持自定义通知,但您需要让Urban Airship发布通知。您需要提供custom notification factory而不是在接收器中建立发布通知。但是,您可以通过不发送JSON内容作为消息警报来避免这种情况,而是在推送有效负载中将额外数据作为额外数据发送。