2016-07-06 39 views
0

目前我正在推送通知。 我想通知像whatsapp。像Whatsapp一樣在一個標題下生成一個通知

它適用於單一通知完美。 當我從同一個ID獲得另一個通知時,我希望在一個圖標和標題(應用程序名稱)下顯示兩個通知。

我在這裏上傳我的代碼。

public class GCMIntentService extends GCMBaseIntentService { 

private static final String TAG = "GCMIntentService"; 
WebService w = new WebService(); 
JSONArray msendsuccess; 
SharedPreferences preferences; 
SharedPreferences.Editor editor; 
String user_id/* , temp_id */; 
int temp_id; 
private final int NOTIFICATION_ID = 237; 
private static int value = 0; 
Notification.InboxStyle inboxStyle = new Notification.InboxStyle(); 
public ArrayList<String> msg; 

public GCMIntentService() { 
    super(SENDER_ID); 
} 

@Override 
protected void onRegistered(Context context, String registrationId) { 
    Log.e(TAG, "Device registered: regId = " + registrationId); 
    displayMessage(context, "Your device registered with GCM"); 
    preferences = PreferenceManager.getDefaultSharedPreferences(context); 
    preferences.edit(); 
    editor = preferences.edit(); 
    user_id = preferences.getString("id", ""); 
    msendsuccess = w.sendNotification(registrationId, user_id); 
    try { 

     SharedPreferences.Editor pref = preferences.edit(); 
     pref.putString("registrationId", registrationId); 
     pref.commit(); 

    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

@Override 
protected void onUnregistered(Context context, String registrationId) { 
    Log.i(TAG, "Device unregistered"); 
    displayMessage(context, getString(R.string.gcm_unregistered)); 

} 

@Override 
protected void onMessage(Context context, Intent intent) { 
    Log.i(TAG, "Received message"); 
    String message = intent.getExtras().getString("price"); 

    // For notification ID 
    String id = intent.getExtras().getString("id"); 

    if (id.equals("")) { 
     temp_id = 0; 
    } else { 
     temp_id = Integer.parseInt(id); 
    } 
    // temp_id = Integer.parseInt(id); 
    displayMessage(context, message); 
    // notifies user 
    generateNotification(context, message, temp_id); 

} 

@Override 
protected void onDeletedMessages(Context context, int total) { 
    Log.i(TAG, "Received deleted messages notification"); 
    String message = getString(R.string.gcm_deleted, total); 
    System.out.println("Message is" + message); 

    displayMessage(context, message); 
    // notifies user 
    generateNotification(context, message, temp_id); 
} 

@Override 
public void onError(Context context, String errorId) { 
    Log.i(TAG, "Received error: " + errorId); 
    displayMessage(context, getString(R.string.gcm_error, errorId)); 
} 

@Override 
protected boolean onRecoverableError(Context context, String errorId) { 
    Log.e(TAG, "Received recoverable error: " + errorId); 
    displayMessage(context, 
      getString(R.string.gcm_recoverable_error, errorId)); 
    return super.onRecoverableError(context, errorId); 
} 

private void generateNotification(Context context, String message, int id) { 
    int icon = R.drawable.notification_icon; 

    String title = context.getString(R.string.app_name); 
    NotificationManager nManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    Notification.Builder builder = new Notification.Builder(this); 
    builder.setContentTitle(title); 

    builder.setSmallIcon(icon); 
    builder.setAutoCancel(true); 
    builder.setGroup(title); 
    builder.setContentIntent(
      PendingIntent.getActivity(context, id, new Intent(
        context, JobCardDetailsNotification.class) 
        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 
        .putExtra("id", id), 0)); 
    builder.setGroupSummary(true); 
    inboxStyle.setBigContentTitle(title); 
    inboxStyle.setSummaryText(value+""); 
    for (int i = 0; i < value; i++) { 
     builder.setContentText(message); 
     inboxStyle.addLine(message); 
    } 

    value++; 
    builder.setStyle(inboxStyle); 
    nManager.notify(NOTIFICATION_ID, builder.build()); 

} 
} 

回答

0

這包括到您創建通知代碼

builder.setGroup("groupkey") 
builder.setGroupSummary(true); 
+0

謝謝回答。在我的代碼中,我收到了羣組中的通知,但接下來的通知會生成兩次,而舊通知會由新通知更新。這是通過更新值變量的值來實現的。如果我沒有更新值變量,那麼新通知會克服舊通知 –