为android通知获取数字而不是文本

时间:2016-04-26 22:32:22

标签: android google-cloud-messaging android-notifications android-notification-bar

我已经在我的应用程序中实现了android通知,它工作正常,只是它显示了一个数字而不是实际的消息体。这是我得到的屏幕截图,

enter image description here

这是我的代码,

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中提取标题和正文?

感谢。

1 个答案:

答案 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));
}