You mentioned "Real time messaging app". I hope you are not using "push notifications" as the design to send messages because as Ivo and Michael have mentioned, they are unreliable and not real time. You need to use a cloud based real time service like PubNub, Pusher, etc. or make one of your own for an actual 'real time' end user experience (< 10 seconds delays, may be even better).
I use PubNub for realtime messaging for my app. Its practically real time and serves the purpose while the app is open.
But what happens if the app is not running (in the background or as a service or in foreground). Ideally, it should always be running and always be connected but that may not be feasible all the time. In such a case, it makes sense to use push notifications so that at the very least, the phone shows a notification to the user about the arrival of some new unread message tempting him/her to open the app. For only this scenario, Push notifications make sense in a real time app. Now for this, while you can use any push notification service as mentioned above by others, in case you are using PubNub, you can use their own Push Notification add on service.
From what I have understood (I still need to implement this functionality in my app, hence no actual experience with this), using PubNub's push notification add-on along with PubNub for real time messaging will only send push notifications to those devices which are not connected with PubNub's backend (and hence won't be able to get the message in real time.). Exactly the situation in which Push notifications are needed for real time apps.