Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS Push Notification custom format

I'm new to all iOS push notification domain. I have tried a basic push notification using the following code and it works perfectly. I'm using "using JdSoft.Apple.Apns.Notifications;" to accomplish this. Here's the code:

Notification alertNotification = new Notification(testDeviceToken);  alertNotification.Payload.Alert.Body = "Hello World";            alertNotification.Payload.Sound = "default"; alertNotification.Payload.Badge = 1; 

This gives the output to the iPhone in the following structure:

{     aps =     {         alert = "Hello World";         badge = 1;         sound = default;     }; } 

I have now got the requirement to add a custom tag as follows:

{     "aps":   {         "alert": "Hello World",         "sound": "default",     "Person":     {             "Address": "this is a test address",             "Name": "First Name",             "Number": "023232323233"                }     } } 

I find it difficult to get "Person" inside "aps". I also know that you can add a custom attribute using the following code:

alertNotification.Payload.AddCustom("Person", Newtonsoft.Json.JsonConvert.SerializeObject(stat));

But the above code does not add withing "aps" tag. Please tell me how it can be achieved?

like image 492
Pavan Welihinda Avatar asked Apr 05 '13 12:04

Pavan Welihinda


1 Answers

You are not allowed to put custom tags inside aps tag. Here's what documentations says about it:

Providers can specify custom payload values outside the Apple-reserved aps namespace. Custom values must use the JSON structured and primitive types: dictionary (object), array, string, number, and Boolean.

So in your case you should do something like:

{     "aps": {         "alert": "Hello World",         "sound": "default"     },     "Person": {         "Address": "this is a test address",         "Name": "First Name",         "Number": "023232323233"     } } 

Therefore you can read your custom payload with looking for it's key in main JSON, rather than in "aps":

NSLog(@"%@",notification['Person']['Address']); 

Above will output:

this is a test address

You could find more about custom payloads, along with some examples in Apple docs.

Regards, HrisTo

like image 186
hris.to Avatar answered Oct 23 '22 15:10

hris.to