2015-04-07 4 views
-1

Я получаю уведомления с сервера, но я не могу правильно проанализировать данные.Как проанализировать сообщение, полученное от GCM?

это то, что получает от extras.toString();

Пачка [{MessageType = 1, contentText = тело содержания, от = 23105361257, contentTitle = заголовок содержания, сообщения = тестового сообщения, android.support.content.wakelockid = 1, collapse_key = do_not_collapse, tickerText = тикер текст message}]

Я хочу напечатать только сообщение из пакета в уведомлении. , а также если я получаю другое уведомление. Я хочу отобразить его ниже в том же уведомлении в стиле Bigview. Как это возможно?

например.

тестовое сообщение

другое тестовое сообщение

public class GCMNotificationIntentService extends IntentService { 
    public static final int notifyID = 9001; 
    public static final String TAG = "GCM Demo"; 

    public GCMNotificationIntentService() { 
     super("GcmIntentService"); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     Bundle extras = intent.getExtras(); 
     GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this); 

     String messageType = gcm.getMessageType(intent); 

     if (!extras.isEmpty()) { 
      if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR 
        .equals(messageType)) { 
       sendNotification("Send error: " + extras.toString()); 
      } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED 
        .equals(messageType)) { 
       sendNotification("Deleted messages on server: " 
         + extras.toString()); 
      } else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE 
        .equals(messageType)) { 
       for (int i = 0; i < 5; i++) { 
        Log.i(TAG, "Working... " + (i + 1) 
          + "/5 @ " + SystemClock.elapsedRealtime()); 
        try { 
         Thread.sleep(5000); 
        } catch (InterruptedException e) { 
        } 
       } 
       Log.i(TAG, "Completed work @ " + SystemClock.elapsedRealtime()); 
       sendNotification(extras.toString()); 
       Log.i(TAG, "Received: " + extras.toString()); 
      } 
     } 
     GcmBroadcastReceiver.completeWakefulIntent(intent); 
    } 


    private void sendNotification(String msg) { 
     Intent resultIntent = new Intent(this, HomeActivity.class); 
     resultIntent.putExtra("message", msg); 
     PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, 
       resultIntent, PendingIntent.FLAG_ONE_SHOT); 

     NotificationCompat.Builder mNotifyBuilder; 
     NotificationManager mNotificationManager; 

     mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     mNotifyBuilder = new NotificationCompat.Builder(this) 
       .setContentTitle("Notification") 
       .setContentText("New Notification") 
       .setSmallIcon(R.drawable.launcher_icons) 
       .setStyle(new NotificationCompat.BigTextStyle() 
       .bigText(msg)); 

     mNotifyBuilder.setContentIntent(resultPendingIntent); 

     int defaults = 0; 
     defaults = defaults | Notification.DEFAULT_LIGHTS; 
     defaults = defaults | Notification.DEFAULT_VIBRATE; 
     defaults = defaults | Notification.DEFAULT_SOUND; 

     mNotifyBuilder.setDefaults(defaults); 
     mNotifyBuilder.setContentText(msg); 
     mNotifyBuilder.setAutoCancel(true); 
     mNotificationManager.notify(notifyID, mNotifyBuilder.build()); 
    } 
} 
+0

как насчет 'extras.getString (" message "," not set! ")'? – Yazan

+0

Что вы получаете в намерении, если 'HomeActivity.class' –

+0

@ PratikButani-AndroidButs: Можете ли вы мне помочь со второй частью? как показать сообщения в большом представлении. например. WhatsApp. если я получаю сообщения от одного и того же пользователя несколько раз, он показывает их в уведомлении .. как это сделать? в настоящее время .. уведомление заменяется новым. – Veer3383

ответ

0

Вы должны отправить как:

sendNotification(extras.getString("message"));

вместо

sendNotification(extras.toString());

Таким образом, вы получите тестовое сообщение в аргументе sendNotification(), а затем вы можете передать его в Intent

Надеются, что вы получите. Благодарю.

Смежные вопросы