I developed an iOS 8 mobile application that successfully interfaces with Bluemix push service.
Using Bluemix to generate my push notification I supply content in the Message Text field which is delivered to my application as part of the app's structure.
Using Bluemix to generate my push notification I also supply Additional Payload, but I'm not able to see this content as part of the app's structure.
Appreciate any details on how to use the Additional Payload field, its format, and how I can access that content when processing the alert within my mobile application.
Payload is an object in userInfo at the same level as aps
Rainer
The Payload in Apple Push Notification is handled in UserInfo NSDictionary object and composed as JSON dictionary object.
Please see the following links that can provide you more information.
Apple
Handling Local and Remote Notifications
Notification Payload
Related
I have Azure notification hub working on Xamarin Forms for iOS and Droid to receive general push notifications. I am trying to send a POSTID in my payload and then take that ID and direct to the data behind it. My issue, I cannot seem to get the postid to read into the app. Every time I get an empty ID. The Push notification an Droid and are received, but the extra data, like postid are not.
{"aps":{"alert":"Test #03_01","postid":"8921"}}
Can someone point me to some documentation on this? How to make it work with ID/data in the push notification behind the scene.
You'll need to promote your custom data fields. At the moment, they are in the "aps" section, which is reserved for data that will be consumed by APNS or iOS. Somewhere along the line your fields are being stripped.
Here's the APNS documentation for building request payloads.
For you it should look something like:
{
"aps": {
"alert":"Test #03_01"
},
"postid":"8921"
}
I've found this post to be really helpful in getting set up, but I have yet to see the push notification come through on the iPhone on which the pass is installed.
Passkit-push-notification-not-working-with-urban-airship
I set up my app on urban airship's site pushing to Apple's development servers. I installed a pass on my phone and run the following commands which I found in the above post:
airship = urbanairship.Airship(_UrbanAirshipPassbookKey, _UrbanAirshipPassbookMasterSecret)
airship.push({'aps': {'alert': 'Go.'}}, device_tokens=tokens)
I then see confirmation of this push in the iPhone console window in Xcode.
Received push for topic pass.xxx.xxx: {
...
aps = {
banner = "Hello";
};
and the iPhone then sends its update tag back along with its pass type ID and Device Library ID to the web service. At this point the web service is supposed to send back a list of changed passes. However, I instead see the following error message:
<Warning>: Web service error for pass.mypasstype.id (http://192.168.30.209:8000): Response to 'What changed?' request included 1 serial numbers but the lastUpdated tag (2013-02-11T17:25:25) remained the same.
Does anyone know why this is happening? Do I need to actually modify a field in the pass to get the push notification to appear on the device?
The short answer to your question is yes, you do need to modify a field in the pass to get a push notification to show. This is because, unlike with app pushes, a Passbook push payload does not determine the content of the notification.
The purpose of a Passbook push message is to alert the device that the web service has a new pass with updated content. The alert text is determined solely by the new pass contents. Any content in the push payload is ignored. Apple advise a push notification with an empty JSON dictionary.
Once a push is sent, it triggers the following chain:
Device receives push and queries web service with the passTypeIdentifier and lastUpadted tag
Web service provides a list of serials for all passes with the passTypeIdentifier that have changed since the lastUpdated tag
Device receives serial(s) and requests the web service to send the new .pkpass bundle for each new pass
Web service send the new .pkpass bundle
Device receives the .pkpass bundle and checks it against the old pass for changes
If the following criteria are met, the device will display the notification provided in the changeMessage key:
The value has changed
The changeMessage contains the %# string
Id the %# string is not present, the pass will show a notification Pass Changed. If no changeMessage key is present for the changed value, no message will show.
What is the format of message that we pass to MSPN service from our cloud application in the case of push notification in windows 7 phone? I know its XML but what all information should it contain?
The MSDN article on Sending Push Notifications for Windows Phone includes all details and examples of the different Push notification content types.
There's also more on Push Notifications at http://msdn.microsoft.com/en-us/library/ff402537(v=vs.92).aspx
I'm testing out Windows Phone 7.5 push notifications. I have got the 3 different push types working fine (Toast, Tile and Raw) and am able to send messages from unit tests and a web application without any problems and receive them in my WP application. I want the ability to add extra properties to the push notification and the Raw push type does this perfectly for me and I can add custom key/value pairs or anything else to the push message and extract it on the phone app. I have just found out however that it only works if the application is running and my unit tests fail (suppressed notification status is received in unit test) when the phone application is not running (checked documentation which confirms this too). Is there anyway to add extra properties (key/values) to toast or tile messages or some way I can use raw in another way ? Toast notifications seem limited to a title property and an actual message property but I need to add additional data.
Just wondering if anyone had any suggestions / workarounds ?
The general practice I use is to initially send a raw notification to the device with phone-usable data embedded in the message. If my application is currently running then I can process the contents of the raw message and immediately make use of it on the phone. However if the application is not currently running on the phone you will receive notification from the push servers that the message could not be delievered. If I receive this response I send out a Toast / Tile notification.
With Toast notifications the only parametrisation you have access to is the URI that will launch the application. This is specified with the wp:param node of the message. Eg.
<wp:Notification xmlns:wp="WPNotification">
<wp:Toast>
<wp:Text1>Toast Title</wp:Text1>
<wp:Text2>Toast sub title</wp:Text2>
<wp:Param>/MainPage.xaml?LaunchedFrom=A%20Toast%20Notification</wp:Param>
</wp:Toast>
</wp:Notification>
If the user taps on this toast notification your application will launch and navigate to MainPage.xaml. You can access the querystring passed in via the NavigationContext.QueryString.
Note: The wp:Param node can only be sent to Mango (and up) devices. Additionally the entire contents must be less than 256 characters or you'll receive a PushErrorTypeMessageBadContent error. (Thanks to Ritch Melton for pointing this out). More info available from the Sending Push Notifications for Windows Phone page on MSDN.
As you've discovered, the Microsoft Push Notification Service is very strict in what types of messages you can send and receive. The intent of these push notifications is to provide simple push updates and not large amounts of data. The flexible Raw type seems like it would fit the bill until you discover that:
You can use a raw notification to send information to your application. If your application is not currently running, the raw notification is discarded on the Microsoft Push Notification Service and is not delivered to the device.
However, if you send a toast notification to your application, when the user clicks on the toast the application is started. When your application starts, you should check a service and retrieve the data you are trying to send from a web-service or other remote mechanism.
I am thinking of a simple chat application in Window Phone using Microsoft Push Notification Service.
I read a guide at http://msdn.microsoft.com/en-us/library/hh202967(v=VS.92).aspx which talks about creating a client application that receive toast notification.
This is a first time for me to develop a mobile application so I do not get some part of it.
The question that I have is, is it possible for a client (window phone) to send toast notification directly to other client? I have found below image from the web. It seems that I need to have Cloud Application(probably webserver?) to play with notification service.
Would it be possible to build a Window phone application that directly request to MPNS to send notification to other window phone application? (so from the picture above, '2' will directly point to Microsoft Push Notification Service)
If it is not, what is the reason for that?
There is a good explanation of the push notification service here.
From the above link.
Registration Phase 2: Now that the MPNS known the presence of the
phone on the network, it is required the phone itself provide the Uri
to the Earthquake service. Until this not happen the service doesn't
know there is a phone that need to be notified so it is not able to
provide the notifications. The phone must call a method on the
Earthquake service to provide the Uri that has been answered by the
MPNS. Once the Earthquake service gets this url it can store this
informations somewhere for a later use.
In your case you'll need communication between your devices before any notifications can be sent. This is to know the uri of your phone. A server has to store these uris for all devices registered for notifications. This is why you'll need an application which sends the xml to the MPNS.