TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: How does Blackberry push work

5 pointsby wagerlabsover 14 years ago
I understand that Blackberry push is the one, the only true "realtime push". Supposedly, this requires installing Blackberry software (hardware?) with the telcos.<p>iPhone implements push by polling every so often and quickly runs down my battery so I leave push notifications off. Blackberries can go for (almost) a day on a single battery charge while connected all the time.<p>How does Blackberry implement realtime push? Is it necessary to plug into the telco infrastructure for this?

3 comments

chunkbotover 14 years ago
There are three parties involved (besides the network):<p>A) Push Initiator (PI) (NOT the device, but the push content provider)<p>B) Push Proxy/Gateway (PPG) (this is BlackBerry's Infrastructure)<p>C) Push client (BlackBerry device)<p>An example push message in a confirmed (ie. connection-oriented) manner:<p>1) The content provider (PI) sends a PAP push request to the BlackBerry Infrastructure (PPG). This request includes a list of the subscribed BlackBerry devices to which the data should be delivered, as well as the data to be delivered. 2) The BlackBerry Infrastructure returns a response to the content provider, acknowledging receipt of the request, and queues the request for delivery. 3) The BlackBerry Infrastructure pushes OTA the data to the specified BlackBerry devices. This doesn't have to be only a notification of new content; I think content (up to 8KB in size) can be pushed. 4) Each BlackBerry device returns a response to the BlackBerry Infrastructure, acknowledging receipt of the data. 5) The BlackBerry Infrastructure forwards the acknowledgement on to the content push initiator. 6) The Read notification is returned to the BlackBerry Infrastructure.<p>(One-way push only does steps 1. and 3.)<p>The push (step 3.) actually works through a Network Operating Center (NOC). RIM is able to do this because the BlackBerry device necessarily registers itself with a Telco, which then forwards the information on to the RIM NOC. The result is that the NOC now knows exactly where to push a message to. This is also the reason why a normal data plan is not adequate to give a BlackBerry push services. The PPG is able to send a Session Initiation Request to a device in a connectionless manner using e.g. SMS, indicating that it wants to push some content to a specific application on the push client. Content can be pushed in this manner as well. I think there are two protocols, PAP between a Push Initiator and the Push Proxy/Gateway, and Push OTA between the Push Proxy/Gateway and the device. If you're interested, the Open Mobile Alliance has a lot of technical documents that are publicly avaiable.<p>So, yeah, Blackberry's push is special, and it's necessary for them to plug into the telco infrastructure to do this; however, as an app developer, you just have to register with BlackBerry and use their APIs. Regarding the iPhone,I think Apple Push Notification Service is something like a "mini-NOC", that only does notification and isn't as full-featured as BlackBerry's, and is otherwise "push-like" by keeping open a session/polling.
andrewtbhamover 14 years ago
for a consumer app, you push the message to blackberry... they send it to the phone. you don't interface with the telcos.<p>you have to register to use the push service and they have to approve your app.<p><a href="https://www.blackberry.com/profile/?eventId=8121" rel="nofollow">https://www.blackberry.com/profile/?eventId=8121</a>
bmeltonover 14 years ago
I honestly don't know how Blackberry implements it, but there are a number of ways to accomplish it. Periodic polling (the way you mention) is generally regarded as 'bad'.<p>A better, but similar method is long-tail polling, in which you still poll periodically, but you wait for an answer, and don't time out the connection (or at least, don't time it out quickly.) You just leave the request hanging until you hear a response. If you don't hear a response before you have to time out, you just time out and then open a new long poll, doing the same thing. It's similar to polling every x seconds if there are constantly items to fetch, but if there aren't, it's much better.<p>Alternately, you can just set up a listener on the phone. I mean, Apache is the ultimate push client - it's just working the wrong way. If the phone number can act as the server IP address, then it just listens for a connection. The 'server' acts as a client, and 'requests' information from the phone whenever there is information to serve it.