πŸš€ 8.9 Released! β†’ ⚑️ New Node-API Engine Preview, πŸ“² ns widget ios, πŸ’… Tailwind v4 and more...
Read Announcement

View on GitHub

@nativescript/shared-notification-delegate ​

This project aims to prevent the shortcomings that come from the iOS implementation of only allowing a single delegate.

Installation ​

cli
npm install @nativescript/shared-notification-delegate

Usage ​

Import SharedNotificationDelegate and add Observers

typescript
import { SharedNotificationDelegate } from'@nativescript/shared-notification-delegate';
...

SharedNotificationDelegate.addObserver({
 delegateUniqueKey: "myUniqueKey", // ensures uniqueness, if not set or is null/undefined, allows multiple of the same
userNotificationCenterWillPresentNotificationWithCompletionHandler: (notificationCenter, notification, handler, stop, next) => {

 console.log("notification received by observer");
// is this notification something I should handle?
if (shouldHandleThis) {
// do stuff
// intercept it and show alert
handler(UNNotificationPresentationOptions.Alert);
return;
 }
// not mine, next should handle
next();
 }
});

API ​

SharedNotificationDelegate Methods ​

MethodReturnsDescription
addObserver(observer: DelegateObserver, priority?: number)voidAdds a delegate observer of a certain priority (lower means first). Default priority is 100.
removeObserver(observer: DelegateObserver)voidRemoves a DelegateObserver
removeObserverByUniqueKey(key: any)voidRemoves a DelegateObserver by its unique key

DelegateObserver Interface ​

A DelegateObserver can implement 3 methods from UNUserNotificationCenterDelegate with the addition of some details:

typescript
interfaceDelegateObserver {
userNotificationCenterDidReceiveNotificationResponseWithCompletionHandler?(
center:UNUserNotificationCenter,
response:UNNotificationResponse,
completionHandler: () =>void,
next: () =>void,
 ):void

userNotificationCenterOpenSettingsForNotification?(
center:UNUserNotificationCenter,
notification:UNNotification,
stop: () =>void,
next: () =>void,
 ):void

userNotificationCenterWillPresentNotificationWithCompletionHandler?(
center:UNUserNotificationCenter,
notification:UNNotification,
completionHandler: (p1:UNNotificationPresentationOptions) =>void,
next: () =>void,
 ):void

/**
 * if set to not null/undefined, will ensure only one is registered
 */
delegateUniqueKey?:any
}
  • All the functions that are parameters of the DelegateObserver object's methods are called asynchronously in a chain.

  • Calling a completionHandler immediately stops the observer chain. next() must be called if the method will not be handling the notification.

  • Calling stop() on userNotificationCenterOpenSettingsForNotification prevents the event from bubbling to the rest.

  • Only one method will be processed at a time, this means you can take as long as you want (including making http calls, for example), as long as you just call completionHandler, stop and next when you're finished.

  • If a DelegateObserver has a delegateUniqueKey, the SharedNotificationDelegate will ensure only the latest copy of the observer is present. This is especially useful if debugging with HMR, which may add multiple observers on application reload.

License ​

Apache License Version 2.0, January 2004

Previous
Rive

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /