Add testAlarm() method to iOS plugin for quick notification testing. Fix plugin method discovery by registering testAlarm in CAPBridgedPlugin pluginMethods array. Add force-load code in AppDelegate to ensure plugin is discovered by Capacitor's objc_getClassList scan. Changes: - Add testAlarm() implementation in DailyNotificationPlugin.swift - Register testAlarm in pluginMethods array (required for Capacitor discovery) - Add force-load code in test app AppDelegate (matches working ios-test-app) - Add UNUserNotificationCenterDelegate to show notifications in foreground - Add test notification button to ScheduleView with immediate feedback - Add debug logging for method discovery and plugin loading Fixes issue where testAlarm was implemented but returned "UNIMPLEMENTED" because it wasn't registered in the pluginMethods array. Also ensures plugin class is loaded before Capacitor's discovery phase.
daily-notification-test
This template should help get you started developing with Vue 3 in Vite.
Recommended IDE Setup
VS Code + Vue (Official) (and disable Vetur).
Recommended Browser Setup
- Chromium-based browsers (Chrome, Edge, Brave, etc.):
- Firefox:
Type Support for .vue Imports in TS
TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need Volar to make the TypeScript language service aware of .vue types.
Customize configuration
See Vite Configuration Reference.
Project Setup
npm install
Note: The postinstall script automatically fixes Capacitor configuration files after installation.
Building for Android and iOS
Quick Build (Recommended)
Use the unified build script for both platforms:
# Build and run both platforms on emulator/simulator
./scripts/build.sh --run
# Build both platforms (no run)
./scripts/build.sh
# Build Android only
./scripts/build.sh --android
# Build iOS only
./scripts/build.sh --ios
# Build and run Android on emulator
./scripts/build.sh --run-android
# Build and run iOS on simulator
./scripts/build.sh --run-ios
See: docs/BUILD_QUICK_REFERENCE.md for detailed build instructions.
Manual Build Steps
Capacitor Sync
Important: Use the wrapper script instead of npx cap sync directly to automatically fix plugin paths:
# Sync both platforms
npm run cap:sync
# Sync Android only
npm run cap:sync:android
# Sync iOS only
npm run cap:sync:ios
This will:
- Run
npx cap sync(or platform-specific sync) - Automatically fix
capacitor.settings.gradle(corrects plugin path fromandroid/toandroid/plugin/) - Ensure
capacitor.plugins.jsonhas the correct plugin registration
If you run npx cap sync directly, you can manually fix afterward:
node scripts/fix-capacitor-plugins.js
Compile and Hot-Reload for Development
npm run dev
Type-Check, Compile and Minify for Production
npm run build
Lint with ESLint
npm run lint
ADB Commands for Android Testing
Package Name: com.timesafari.dailynotification.test
Check Device Connection
adb devices
Install App
Install the debug APK to a connected device or emulator:
# From project root
cd android
./gradlew installDebug
# Or from test-apps/daily-notification-test directory
cd android && ./gradlew installDebug
List Installed Packages
Check if the app is installed:
# List all packages (filter for this app)
adb shell pm list packages | grep timesafari
# List only this app's package
adb shell pm list packages com.timesafari.dailynotification.test
Launch/Raise the App
Launch the app or bring it to foreground:
# Launch the main activity
adb shell am start -n com.timesafari.dailynotification.test/.MainActivity
# Launch with explicit intent
adb shell am start -a android.intent.action.MAIN -n com.timesafari.dailynotification.test/.MainActivity
Uninstall App
Remove the app from the device:
# Uninstall by package name
adb uninstall com.timesafari.dailynotification.test
# Force uninstall (if regular uninstall fails)
adb shell pm uninstall -k --user 0 com.timesafari.dailynotification.test
Additional Useful ADB Commands
View App Logs:
# Filter logs for this app
adb logcat | grep -E "timesafari|DailyNotification|DNP"
# Clear logs before testing
adb logcat -c
Check App Info:
# Get app version and info
adb shell dumpsys package com.timesafari.dailynotification.test | grep -A 5 "versionName\|versionCode"
Force Stop App:
# Force stop the app (useful for testing recovery scenarios)
adb shell am force-stop com.timesafari.dailynotification.test
Clear App Data:
# Clear app data (resets to fresh install state)
adb shell pm clear com.timesafari.dailynotification.test