我已经在我的应用程序中实现了android通知,它工作正常,只是它显示了一个数字而不是实际的消息体。这是我得到的屏幕截图,
这是我的代码,
public static final int MESSAGE_NOTIFICATION_ID = 435345;
private int MESSAGE_TYPE ;
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("message");
String type = data.getString("type");
if(type.equalsIgnoreCase("Load Messages"))
{
MESSAGE_TYPE = Global.NOTIFICATION_LOAD_MESSAGE;
EventBus.getDefault().post(new HandyManEvents.ReloadMessages(true));
}
else
{
MESSAGE_TYPE = Global.NOTIFICATION_LOAD_LIVE_JOBS;
}
createNotification(from, message);
}
// Creates notification based on title and body received
private void createNotification(String title, String body) {
Context context = getBaseContext();
Intent notificationIntent = new Intent(context, MainActivity.class);
notificationIntent.putExtra("menuFragment", MESSAGE_TYPE);
PendingIntent pending= PendingIntent.getActivity(context, 0,notificationIntent, 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.mipmap.ic_launcher).setContentTitle(title)
.setContentIntent(pending)
.setContentText(body);
NotificationManager mNotificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(MESSAGE_NOTIFICATION_ID, mBuilder.build());
}
有什么线索在这里出错?
更新 当应用程序在前台运行时,我看到了这种行为。这是我从通知中获得的捆绑包,
Bundle[{type=Load Messages, notification=Bundle[{e=1, body=You have a new message, icon=app_icon, title=New Message}], collapse_key=com.company.app}]
如何从Bundle中提取标题和正文?
感谢。
答案 0 :(得分:0)
您正在使用Google Play服务API来捕获GCM消息。此代码所属的类是扩展GcmListenerService并且您覆盖onMessageReceived(String from, Bundle data)
的类,它将发件人ID作为第一个参数(来自)以及您的通知中显示的内容将其指定为标题。
您需要以正确的方式解析捆绑包才能获取数据,这取决于服务器发送的有效负载。您可以通过记录来查看捆绑中可用的密钥
for (String key : bundle.keySet()){
Log.d(TAG, key + " = " + bundle.get(key));
}