/** * iOS implementation of the DailyNotification plugin * @module DailyNotificationIOS */ import { Capacitor } from '@capacitor/core'; import { registerPlugin } from '@capacitor/core'; import type { DailyNotificationPlugin, DailyNotificationOptions, PermissionStatus } from '../definitions'; // Get the registered native plugin const DailyNotification = registerPlugin('DailyNotification'); export class DailyNotificationIOS implements DailyNotificationPlugin { private options: DailyNotificationOptions = { url: '', notificationTime: '09:00', title: 'Daily Update', body: 'Your daily notification is ready' }; /** * Initialize the daily notification system for iOS * @param options Configuration options for the notification system */ async initialize(options: DailyNotificationOptions): Promise { if (Capacitor.getPlatform() !== 'ios') { throw new Error('This implementation is for iOS only'); } this.options = options; // Delegate to native plugin configure method await DailyNotification.configure({ dbPath: undefined, retentionDays: undefined, activeDidIntegration: undefined }); } /** * Check current permission status for notifications and background refresh * @returns Current permission status */ async checkPermissions(): Promise { if (Capacitor.getPlatform() !== 'ios') { throw new Error('This implementation is for iOS only'); } // Delegate to native plugin permission check const status = await DailyNotification.getNotificationPermissionStatus(); return { notifications: status.authorized ? 'granted' : status.denied ? 'denied' : 'prompt', backgroundRefresh: 'prompt' // Cannot check programmatically on iOS }; } /** * Request notification and background refresh permissions from the user * @returns Updated permission status after request */ async requestPermissions(): Promise { if (Capacitor.getPlatform() !== 'ios') { throw new Error('This implementation is for iOS only'); } // Delegate to native plugin permission request await DailyNotification.requestNotificationPermissions(); // Return updated status return this.checkPermissions(); } }