Files
daily-notification-plugin/test-apps/daily-notification-test
Jose Olarte III edc4082f72 feat(ios): implement testAlarm method and fix plugin discovery
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.
2025-12-31 17:25:52 +08:00
..
2025-10-15 10:46:50 +00:00
2025-10-15 10:46:50 +00:00
2025-10-15 10:46:50 +00:00
2025-10-15 10:46:50 +00:00
2025-10-15 10:46:50 +00:00
2025-12-08 22:42:23 -08:00
2025-10-15 10:46:50 +00:00
2025-10-15 10:46:50 +00:00

daily-notification-test

This template should help get you started developing with Vue 3 in Vite.

VS Code + Vue (Official) (and disable Vetur).

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

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:

  1. Run npx cap sync (or platform-specific sync)
  2. Automatically fix capacitor.settings.gradle (corrects plugin path from android/ to android/plugin/)
  3. Ensure capacitor.plugins.json has 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