This plugin for Capacitor 6+ provides support for silent (data only) notifications on iOS.
pnpm add @aparajita/capacitor-ios-silent-notifications # npm install, yarn add
Not using pnpm? You owe it to yourself to give it a try. It’s faster, better with monorepos, and uses way, way less disk space than the alternatives.
This plugin assumes you have already configured your app for push notifications.
There are two small steps to using this plugin:
Add the following code during your app’s initialization:
import { IosSilentNotifications } from '@aparajita/capacitor-ios-silent-notifications'
// `const { remove }` is optional. If you are never going to remove the listener,
// you can omit it.
const { remove } = await IosSilentNotifications.addListener(
'onSilentNotification',
(notification: Notification) => {
// Do something with the notification
},
)
Note that on Android, this plugin does nothing, since the same functionality is already provided by the @capacitor/push-notifications
plugin. If you wish, you can skip the call to addListener
on Android:
if (Capacitor.getPlatform() === 'ios') {
await IosSilentNotifications.addListener(
'onSilentNotification',
(notification: Notification) => {
// Do something with the notification
},
)
}
In your app’s AppDelegate.swift
file, add the following code to the AppDelegate
class:
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
NotificationCenter.default.post(name:Notification.Name("silentNotification"), object: userInfo);
completionHandler(UIBackgroundFetchResult.newData)
}