Pavan Welihinda Pavan Welihinda - 16 days ago 5
iOS Question

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?

Answer

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

Comments