A method for establishing two-way push communication between an application provider and a first mobile device associated with a first user, the method comprising: receiving an indication that a first application provider has selected to receive push notifications from a set of one or more mobile devices (D1, D2) associated with one or more users; receiving an indication that a first user has selected to receive push notifications from a set of one or more application providers; monitoring presence information associated with the first user and the first application provider, the presence information indicating whether the first user and the first application provider, respectively, are currently connected to a network and listening for push notifications; and in response to receiving a push notification for the first user, identifying a current network location of the first user and forwarding the push notification to the first user; and in response to receiving a push notification for the first application provider from the set of one or more users, identifying a current network location, from the monitored presence information, over which the first application provider is listening for push notifications and forwarding the push notification to the first application provider, wherein forwarding the push notification to the first application provider comprises selecting between a first gateway and a second gateway over which to transmit the push notification, and wherein the selecting further comprises: measuring channel quality for packets transmitted between the first application provider and a first gateway and between the first application provider and a second gateway; and selecting between the first gateway and the second gateway based on the measured channel quality. receiving an indication that a first application provider has selected to receive push notifications from a set of one or more mobile devices (D1, D2) associated with one or more users; receiving an indication that a first user has selected to receive push notifications from a set of one or more application providers; monitoring presence information associated with the first user and the first application provider, the presence information indicating whether the first user and the first application provider, respectively, are currently connected to a network and listening for push notifications; and in response to receiving a push notification for the first user, identifying a current network location of the first user and forwarding the push notification to the first user; and in response to receiving a push notification for the first application provider from the set of one or more users, identifying a current network location, from the monitored presence information, over which the first application provider is listening for push notifications and forwarding the push notification to the first application provider, wherein forwarding the push notification to the first application provider comprises selecting between a first gateway and a second gateway over which to transmit the push notification, and wherein the selecting further comprises: measuring channel quality for packets transmitted between the first application provider and a first gateway and between the first application provider and a second gateway; and selecting between the first gateway and the second gateway based on the measured channel quality. measuring channel quality for packets transmitted between the first application provider and a first gateway and between the first application provider and a second gateway; and selecting between the first gateway and the second gateway based on the measured channel quality.