Plugins
Shared Notification Delegate
@nativescript/shared-notification-delegate β
This project aims to prevent the shortcomings that come from the iOS implementation of only allowing a single delegate.
Installation β
npm install @nativescript/shared-notification-delegate
Usage β
Import SharedNotificationDelegate
and add Observers
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 β
Method | Returns | Description |
---|---|---|
addObserver(observer: DelegateObserver, priority?: number) | void | Adds a delegate observer of a certain priority (lower means first). Default priority is 100 . |
removeObserver(observer: DelegateObserver) | void | Removes a DelegateObserver |
removeObserverByUniqueKey(key: any) | void | Removes a DelegateObserver by its unique key |
DelegateObserver Interface β
A DelegateObserver can implement 3 methods from UNUserNotificationCenterDelegate with the addition of some details:
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()
onuserNotificationCenterOpenSettingsForNotification
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
andnext
when you're finished.If a DelegateObserver has a
delegateUniqueKey
, theSharedNotificationDelegate
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
- Next
- Social Share