Push notifications not delivered to iOS devices when OutSystems mobile app is in background

We’re experiencing a critical issue with push notifications in our OutSystems mobile app for iOS. Notifications work perfectly when the app is in the foreground, but fail to deliver when the app is backgrounded or closed. We’ve verified the APNs certificate is valid and properly configured in Firebase, and Android devices receive notifications without issues.

The Firebase payload structure includes priority: ‘high’ and content_available: true, but iOS devices still don’t wake up to receive notifications. We’ve enabled background modes in the app’s capabilities, specifically ‘Remote notifications’ and ‘Background fetch’. The notification priority is set to high in both Firebase console and our server-side code.

This is causing missed critical alerts for our field service team who need real-time task assignments. Has anyone encountered similar iOS-specific notification delivery problems with OutSystems mobile apps?

One more thing to verify - notification priority settings in Firebase console. Go to Cloud Messaging settings and check if APNs priority is set to ‘high’ (10) not ‘normal’ (5). Normal priority won’t wake the app from background. Also, test with actual device tokens, not FCM registration tokens, as there’s sometimes confusion between the two in OutSystems implementations.

The mutable-content flag needs to be in your notification payload structure. If you’re using the default OutSystems PushNotifications plugin, you’ll need to extend it or use a custom REST call to Firebase. The standard plugin doesn’t always include all iOS-specific flags. I’d recommend creating a server action that builds the complete Firebase payload with all required iOS parameters including mutable-content, content-available, and proper priority settings.

I’ve seen this exact issue before. First thing to check - are you using the correct APNs environment? Production apps require production certificates, not development. Also verify your Firebase project has the correct APNs authentication key uploaded, not just the certificate.

Another common gotcha: iOS requires the ‘mutable-content’ flag set to 1 in the payload for background delivery. Without this, iOS won’t wake the app. Check your Firebase payload structure includes both ‘content_available’ and ‘mutable-content’ flags.

Thanks Mark! We’re using production certificates and they’re correctly uploaded to Firebase. I checked our payload and we do have content_available: true, but I don’t see mutable-content anywhere. That might be the missing piece. Should this be added in the OutSystems server action that triggers the notification, or configured in Firebase directly?