Files
daily-notification-plugin/examples/usage.ts
Matthew Raymer 71e0f297ff refactor: improve build configuration and code organization
- Add build scripts for Android and iOS platforms
- Remove duplicate web implementation (src/web.ts)
- Add proper TypeScript configuration
- Add module documentation to index.ts
- Clean up package.json scripts

This commit improves the project structure and build process by:
1. Adding dedicated build scripts for native platforms
2. Removing redundant web implementation
3. Adding proper TypeScript configuration with strict mode
4. Improving code documentation
5. Organizing package.json scripts

The changes maintain backward compatibility while improving
the development experience and code quality.
2025-03-25 13:13:55 +00:00

165 lines
4.1 KiB
TypeScript

/**
* Example usage of the Daily Notification plugin
* Demonstrates various features and best practices
*/
import { registerPlugin } from '@capacitor/core';
import { DailyNotificationPlugin } from '../src/definitions';
const DailyNotification = registerPlugin<DailyNotificationPlugin>('DailyNotification');
/**
* Basic setup for daily notifications
*/
async function setupBasicNotifications() {
try {
await DailyNotification.scheduleDailyNotification({
url: 'https://api.example.com/daily-content',
time: '08:00', // 8 AM
title: 'Daily Update',
body: 'Your daily content is ready!'
});
console.log('Daily notifications scheduled successfully');
} catch (error) {
console.error('Failed to schedule notifications:', error);
}
}
/**
* Advanced setup with custom options
*/
async function setupAdvancedNotifications() {
try {
await DailyNotification.scheduleDailyNotification({
url: 'https://api.example.com/daily-content',
time: '09:00', // 9 AM
title: 'Daily Digest',
body: 'Your personalized daily digest is ready',
sound: true,
vibrate: true,
priority: 'high',
retryCount: 3,
retryInterval: 15, // minutes
cacheDuration: 24, // hours
headers: {
'Authorization': 'Bearer your-token'
}
});
console.log('Advanced notification setup completed');
} catch (error) {
console.error('Failed to setup advanced notifications:', error);
}
}
/**
* Handle notification response
*/
async function handleNotificationResponse() {
try {
const response = await DailyNotification.getLastNotification();
if (response) {
console.log('Last notification:', response);
// Handle the notification data
}
} catch (error) {
console.error('Failed to get last notification:', error);
}
}
/**
* Cancel all scheduled notifications
*/
async function cancelNotifications() {
try {
await DailyNotification.cancelAllNotifications();
console.log('All notifications cancelled');
} catch (error) {
console.error('Failed to cancel notifications:', error);
}
}
/**
* Check notification status
*/
async function checkNotificationStatus() {
try {
const status = await DailyNotification.getNotificationStatus();
console.log('Notification status:', status);
return status;
} catch (error) {
console.error('Failed to get notification status:', error);
return null;
}
}
/**
* Update notification settings
*/
async function updateNotificationSettings() {
try {
await DailyNotification.updateSettings({
time: '10:00', // Change to 10 AM
sound: false, // Disable sound
priority: 'normal'
});
console.log('Notification settings updated');
} catch (error) {
console.error('Failed to update settings:', error);
}
}
/**
* Example of handling network errors
*/
async function handleNetworkErrors() {
try {
await DailyNotification.scheduleDailyNotification({
url: 'https://api.example.com/daily-content',
time: '08:00',
retryCount: 3,
retryInterval: 15,
offlineFallback: true
});
} catch (error) {
if (error.code === 'NETWORK_ERROR') {
console.log('Network error, will retry later');
} else {
console.error('Unexpected error:', error);
}
}
}
/**
* Example of using custom content handlers
*/
async function useCustomContentHandler() {
try {
await DailyNotification.scheduleDailyNotification({
url: 'https://api.example.com/daily-content',
time: '08:00',
contentHandler: async (response) => {
// Custom processing of the API response
const data = await response.json();
return {
title: data.title,
body: data.summary,
data: data.details
};
}
});
} catch (error) {
console.error('Failed to setup custom content handler:', error);
}
}
// Export all example functions
export {
setupBasicNotifications,
setupAdvancedNotifications,
handleNotificationResponse,
cancelNotifications,
checkNotificationStatus,
updateNotificationSettings,
handleNetworkErrors,
useCustomContentHandler
};