Problem receiving Remote Notification in the background after Review Rejected

I created an app. One if its functionalities is receive Remote Notification in the background, while app is monitoring Significant Location Changes (SLC). This functionality worked fine. I was receiving these notifications correctly. Sometimes instantly, sometime with small or large delay.

And then I send the app for review. It was rejected with 3 remarks:

  1. The app or metadata includes information about third-party platforms that may not be relevant for App Store users, who are focused on experiences offered by the app itself (I wrote that app communication works both for iOS and Android.)
  2. The app declares support for audio in the UIBackgroundModes key in your Info.plist but we are unable to locate any features that require persistent audio.
  3. EULA (End User License Agreement) is missing for in-app purchases.

After the rejection the app is no longer receiving these notifications. They are there, since the app receives them, when I open app, or significant location change is detected. It also works, when I run the app directly from Xcode (in debug mode), not from TestFlight nor in Sandbox.

It seem to me like Apple somehow spoiled my background capabilities on purpose or accidentally. Is it possible? What can I do with it? Is it the case that I should just fix the review remarks and send the app back to review, and once the app passes it, it will work again? Or should I not count on it? Any suggestions? I asked Apple using: https://developer.apple.com/contact/topic/#!/topic/select but so far no response.

It is quite unlikely that Apple has spoiled your app in any manner after a failed review.

This is likely a coincidence that you are seeing an issue, either due to something that changed in your app or you are misconstruing the results due to your testing methodologies.

Indeed, looking at the notifications sent to your app in the last 7 days, I see that you have sent your app close to 150 notifications, and most of them were successfully delivered to the device.

The problem here is you are sending background notifications. Background notifications by design are heavily throttled, and you cannot expect more than 1 or 2 of them to reach your app (even if it is received by the device) per hour.

This throttle is lifted if you are actively debugging the app with Xcode, or the app is already in the foreground.

Outside of that, you are seeing how the notifications will behave in real life in the hands of your users.

You may want to read about iOS Background Execution Limits

If you need to execute code for every received notification in order to perform a task, you may want to look at creating a Notification Service Extension as discussed at https://developer.apple.com/documentation/usernotifications/unnotificationserviceextension.

The Notification Service Extension will be executed for every visible push notification. So, it could serve your needs, as long as the user has not disabled the visibility of your notifications through various settings. The service extension will not be executed for push notifications that will not be presented visually.

In any case, what you are seeing is by design, and the notifications has been behaving this way, probably masked by the fact that you were mostly testing in Xcode prior to submission.

This is how background notifications work, and failing App Review has not spoiled your app in any way.


Argun Tekant /  DTS Engineer / Core Technologies

Now I have installed the app from TestFlight on another device (with different Apple ID), on iPad. On this device background notifications work as they did on my iPhone before the rejection. Background notifications are received correctly.

Now I return to my problematic iPhone. I removed the app from my it, I restarted it, then I installed the same version as in did on iPad, from TestFlight as on iPad, but from my developer's Apple ID, and... nothing changed. I DO NOT receive NOT A SINGLE notification in the background on my iPhone.

The same version of app installed from TestFlight on both devices!

BTW. I think Notification Service Extension is not a solution for me. Background Notifications I receive, come from Firebase Cloud Messaging system, so there is nothing to modify in them. And, I emphasize, these messages are corerctly build to be delivered in the background. They worked on my iPhone before rejection, they work now on iPad, and I have not touched their structure for months. They are 100% correct.

What is wrong with iOS on my iPhone, or rather how can I fix it? The test on iPad shows it is not a problem of app not its build. You said that there are limitations on background notification. In my case the limitation is 0%. Is this correct? Definitely the reason is not that the app is considered as the rare used app, as I open it dozens time a day - it is under continuous test.

Problem receiving Remote Notification in the background after Review Rejected
 
 
Q