Start a new topic

Missing Support for UNNotificationServiceExtension - (Support for `mutable-content` key in APNS payload)

Hi All,

The UNNotificationServiceExtension is an awesome feature that requires the notification's "aps" object contains a "key": "value" pair of key "mutable-content" set to the value of 1.

To debug this I have set up some an Endpoint in Business Logic that sends a push notification to my development device: 

   after creating a user object... 

var iOSAps = { "alert": {"title": "TITLE!", "subtitle": "Sub-Title", "body": "Test."}, "badge": 1, "sound": "notification.wav", "mutable-content": 1, "content-available": 0 };
          var iOSExtras = { "messageId": 1, "count": 11};
          var androidPayload = {"message": "Not required", "from": "Not Required", "subject": "Not Testing for Android" };
          var push = modules.push;
          push.sendPayload(user, iOSAps, iOSExtras, androidPayload,
            function(err, result) {
              if (err) {
                logger.error('Push failed: ' + err);
              } else {
      'Push success: ' + result);


 the application debugs both foreground and background and each time a notification is received the "mutable-content" pair added in the payload is removed.

I print the UserInfo object and get the following: 


[AnyHashable("aps"): {
    alert =     {
        body = "Test.";
        subtitle = "Sub-Title";
        title = "TITLE!";
    badge = 1;
    "content-available" = 0;
    sound = "notification.wav";
}, AnyHashable("messageId"): 1, AnyHashable("count"): 11]

As you can see the 'aps' object has had removed key/values pairs.

I then tried to add other random pairs to the aps node and they seemed to be removed if they were not prescribed names for the key. I could be wrong but might this be something to do with validating Notifications at the Kinvey End. it might explain why the key "mutable-content" is being removed too (as well as others).

This stops me using an awesome feature! Any help/work arounds/correction would be massively appreciated.

NOTE: According to Apples documentation "content-available" must be set to 0 (or left un-set) in order to have a "mutable-content" set to 1, just to be sure I have also tried (out of frustration) to even test with "content-available" set to 1 - which of corse didn't work either. More Info: UNNotificationServiceExtension - Apple Developer Documentation - Swift 3.

My notification service extension process has all defaults and simply appends the title with the word "muted"  in order to be able to distinguish from system handled notification.


Thank you for reporting this and we regret this has not been fixed yet. I will discuss this with engineering and get back to you asap.



Hi Pranav,

Since it has been around 3 or so months, and a i believe 1/2 sdk versions later - and this missing feature does not seems to be emerging, nor have I heard anything on this post. i would like to check in on the progress of this. I am currently approaching a 'Point of no return'  with respect to our dev timeline which is already at a stretch.

Our app migration to Kinvey will have to be abandoned, which would be bad because:

  • We've learnt the Kinvey SDK and started coding with it already, with several testing phases being undertaken.
  • We love kinvey's web console
  • The Forum community is great
  • Documentation/Examples just make everything easy
However its Rich Notifications are a required portion of our application and if this missing feature cannot be introduced, I will be forced (unwillingly) to find an alternative (which of corse i would hate to do)


Thanks for providing all the information. This has been escalated to engineering. Will update you once I have more inputs from engineering.






Thanks Pranav!

Yes of corse, I am using the following versions:

macOS Sierra 10.12.3

Xcode 8.2.1

Kinvey SDK 3.3.8 [pod]

iOS (base) SDK 10.2

I'll continue to post any new findings that may assist

p.s. I appreciate this very much! And on behalf of all Kinvey users: thank you in advance!


Okay. Thanks for the detailed information. I will escalate this to engineering.

Can you let me know what  Kinvey SDK version are you using? Also let me know the Xcode and iOS SDK version.



P.S. perhaps this may be of some help - most people seem to refer to this iOS feature as "Rich Push Notifications".

I have also done some further testing and found out that whilst the UNNotificationServiceExtension is not working via Kinvey's built in push service because the "mutable-content" key and its value (1/0) is removed once sent; its counterpart extension "UNNotifcationContentExtension" which requires a "category" key (value of type String) set in the "aps" object. When I set the category value, this does not get removed and does in fact trigger the "UNNotificationContentExtension" that has the corresponding  category name in the info.plist of that extension.

It is a shame that the the UNNotificationConentExtension is support whilst the UNNotifcationServiceExtension is not. From my testing I can confidently say that both these extensions go hand in hand and they change a bland basic app into an exciting and interactive app that allows the user to take full advantage of all features there device offers.

Hi All,

I can conclude that my initial assumption was correct. To keep you guys up-to date with my testing- I have used a service from 'CleverTap' who have introduced support for this new iOS10 feature. I sent a payload to my iOS app with the mutable-content key set to 1; bingo, as expected the Notification Service Extension's receive method is fired and the notification is handled by the extension as desired. I have tested the same with ParseServer too, its very clear now that Kinvey are definitely missing a key feature that was introduced by Apple in iOS10 - in the way of the 'mutable-content' key.

Considering this is not a huge change - is it something we can expect to see support for soon? In fact can you advise on weather this will be done or even considered at all?

Although this is a small issue on the surface but Its a big deal for myself and the applications I have produced which are tightly tied into the notification extension. I am sure - many Parse Server users and Parse Migrators will agree, this feature shouldn't be missed out!

Come-on Kinvey! we're almost there!

Hi Pranav,

I think you have not understood my issue. My initial post is quite detailed and I state that this is a new feature available which requires the iOSAps object to have a key of "mutable-content" set to 1. This CANNOT be done in iOSExtra's object.

I have read the Payloads section of the business logic Reference and can see that this is not present in the table of possible key names. Having said that, it means that Kinvey is not up to date in the sense it does not have the "mutable-content" key in the iOSAps object of the notification payload, which is required to use of UNNotificationServiceExtension as stated in this apple doc.

Now the important part is, what is the outlook of this feature being added? considering its JUST the addition of a key/value pair, it doesn't seem like a big task, and it will make a difference to many users.

Speaking for myself and my current project, this feature is integral to the application, and without it we will struggle.


Please take a look at following link for the allowed keys in the iOSAps object:


For custom key value pairs, use the iOSExtras as mentioned in the doc.




Login or Signup to post a comment