non ti conviene fare un campo (nel db) con i nuovi messaggi ed uno con quelli letti?
il messaggio viene salvato in nuovi messaggi, e quando viene letto lo sposti.
La notifica la fai apparire se nuovi messaggi non è vuoto..io avevo fatto così e funzionava