Silent Push Notification in iOS 7 does not work

mkwon picture mkwon · Oct 8, 2013 · Viewed 59.2k times · Source

In the WWDC 2013's "What's New with Multitasking" presentation, there is a section about Silent Push Notifications. It seems straight forward. According to the presentation, if you send the APS payload with just the content-available set to 1, users will not be notified of the notification.

// A. This doesn't work
{ 
  aps: { 
          content-available: 1 
       }
}

My testing shows that this does not work as no push is received. But if I include the sound attribute but exclude the alert attribute, it works (though not silent anymore).

// B. This works
{ 
  aps: {
          content-available: 1,
          sound: "default"
       }
}

However, if I change the sound attribute to play a silent audio, I can mimic a silent push.

// C. This works too.
{ 
  aps: {
          content-available: 1,
          sound: "silence.wav"
       }
}

Does anyone know:

  1. If this a bug?
  2. And if it is correct to assume that B or C is being treated as a Remote Notification (and not a bug with Silent Push where you need a sound attribute)? If so, this means it is not rate limited like Silent Pushes are... which Apple will likely fix. So I probably should not rely on it.
  3. What the rate limit is (N pushes every X seconds, etc)?

Thanks in advance.

Edit with more information

For A, the state of the application does not matter. Notification is never received.

It seems like B and C only work if you enclose the attributes and values in quotes, like below.

{"aps":{"content-available": 1, "sound":"silent.wav"}}

And the notification arrives in application:didReceiveRemoteNotification:fetchCompletionHandler: regardless of state.

Answer

CMVR picture CMVR · Oct 17, 2013

This works also and does not play a sound when it arrives:

{
    aps = {
        "content-available" : 1,
        sound : ""
    };
}

EDIT

People having this problem may want to check out this link. I have been participating in a thread on Apple's Developer forum that goes over all app states and when silent pushes are received and not received.