09-10-2009 03:51 PM - edited 09-11-2009 11:15 AM
I'm testing how PAP Push is implemented and find one strange thing.
When I call BES to send a push notification, I get proper response from BES and notification on device. Also, BES is calling back when message is actually sent to device. Everything seems OK.
But, if there's no application on device listening to that port, BES is still saying, that message is delivered! How this is possible? I suppose, it was queued on device (I see that device was communicating with server, so it did receive the message really), but if application on device is started afterwards, it gets nothing (so, message is not queued?).
I use XML to post notification to BES, there's a parameter:
If I change it to confirmed; I get error response 3007: Specified delivery method not possible.
So, for now, BES always calls back to say, that message is delivered, disregarding if something consumed it on device or not. Is it how it is supposed to work? I mean, in TCP (which is guaranteed communication) connection to closed port results in error on initiator's side; here there seems no difference, even though BES does callback (what for?).
Device is BlackBerry Bold 9000 v126.96.36.199 (platform 188.8.131.52)
Please let me know if more information or code is required.
09-21-2009 01:34 PM
There are 2 different reliability level you can use when submitting a push.
Transport Level: When using Transport level reliability a BlackBerry Enterprise Server sends a notification to your application when a push message has been delivered to a BlackBerry smartphone. This just means the message arrived on the device itself. Even if the application that should received the message has not been installed or is not running, this will count as a success.
Application Level: When using Application level reliability the application receiving the data must acknowledge receipt in order for the BlackBerry Enterprise Server to confirm that the push message was successfully delivered. In order to do this the application must implement the MDSPushInputStream and use its accept() method to verify that it received the data. The port the application is listening on must also be configured on the BlackBerry Enterprise Server, or else you'll get the error that "The specified delivery method is not possible". You can read more about that error here:
Support - The specified delivery method is not possible
Article Number: DB-00522
09-21-2009 01:45 PM
Thanks Mark. Shall try this.
So, I have to use same request parameters, or something needs to be changed?
Current header is as follows:
<pap> <push-message push-id="pushID:firstname.lastname@example.org" ppg-notify-requested-to="http://myserver:8080"> <address address-value="WAPPUSH=0123ABCD:100/TYPE=USER@rim.
net"/> <quality-of-service delivery-method="unconfirmed"/> </push-message> </pap>
09-22-2009 04:29 PM