Local Notifications 
Local notifications allow your app to alert users at specified times when the app is in the background or not running. This implementation provides two main functionalities:
- Requesting notification permissions from users
- Scheduling time-based local notifications
Implementation 
- Create a Swift File- In Xcode, go to File > New > File From Template...
- Select Swift File, name it NotificationManager.swift, and paste the following code:
 
swift
import Foundation
import UserNotifications
class NotificationManager {
    // This function requests notification permission from the user
    func requestNotificationAuthorization(completion: @escaping (Bool) -> Void) {
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
            if granted {
                print("Notification authorization granted")
            } else {
                print("Notification authorization denied")
            }
            completion(granted)
        }
    }
    // This function schedules a local notification in x seconds
    func scheduleNotificationInSeconds(title: String, body: String, sound: String, identifier: String = "com.example.enclose", seconds: Double) {
        let center = UNUserNotificationCenter.current()
        center.removePendingNotificationRequests(withIdentifiers: [identifier])
        let content = UNMutableNotificationContent()
        content.title = title
        content.body = body
        content.sound = UNNotificationSound(named: UNNotificationSoundName(sound))
        content.interruptionLevel = .active
        // Prepare "trigger" and "request"
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: seconds, repeats: false)
        let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
        // Schedule the local notification
        UNUserNotificationCenter.current().add(request) { error in
            if let error = error {
                print("Error scheduling notification: \(error.localizedDescription)")
            } else {
                print("Notification scheduled successfully")
            }
        }
    }
}- Integrate with Your View Controller- In your MainViewController.swiftfile, add these methods to bridge between JavaScript and native notifications:
 
- In your 
swift
// This function returns the status of notifications authorization
@objc func getNotificationsAuthorizationStatus(_ params: [String: String]) {
    var javaScript = ""
    let notificationManager = NotificationManager()
    notificationManager.requestNotificationAuthorization { granted in
        if granted {
            Task {
                if let successCallback = params["successCallback"] {
                    javaScript = "\(successCallback)(true);"
                    self.evaluateJavascript(javaScript: javaScript)
                }
            }
        } else {
            if let successCallback = params["successCallback"] {
                javaScript = "\(successCallback)(false);"
                self.evaluateJavascript(javaScript: javaScript)
            }
        }
    }
}
// This method will schedule a local notification that will fire in X seconds
@objc func scheduleNotificationInSeconds(_ params: [String: String]) {
    let secondsDoubleValue = Double(params["seconds"] ?? "5")
    let notificationManager = NotificationManager()
    notificationManager.scheduleNotificationInSeconds(
        title: params["title"] ?? "Title",
        body: params["body"] ?? "Body",
        sound: params["sound"] ?? "default",
        identifier: params["identifier"] ?? "com.example.enclose",
        seconds: secondsDoubleValue ?? 5
    )
}- Using the Notifications in JavaScript- To check check/request notification permission call getNotificationsAuthorizationStatusmethod:
 
- To check check/request notification permission call 
javascript
// Check if our app has authorization to send notifications
enClose({
    nativeCall: 'getNotificationsAuthorizationStatus',
    // callback function will receive a boolean value
    successCallback: ''
});- To schedule a local notification that will trigger in X seconds call scheduleNotificationInSecondsmethod:
javascript
// Schedule a local notification in 10 seconds
const randomString = Math.random().toString(36).substring(2,7);
enClose({
    nativeCall: 'scheduleNotificationInSeconds',
    data: {
        title: 'Notification title goes here',
        body: 'Notification body goes here',
        sound: 'default',
        seconds: 10,
        identifier: randomString
    }
});Advanced Usage 
- To use custom sounds, add your MP3 files to the Xcode project and pass the filename (without extension) in the soundparameter
- To cancel a pending notification, store the identifier and implement a cancellation method
- For recurring notifications, modify the trigger to use repeats: truewith appropriate time intervals
