Files
daily-notification-plugin/test-apps/ios-test-app
Jose Olarte III 527c075941 fix(ios): improve test script reliability and pending notification detection
Fixed multiple issues in iOS test script and added logging for test compatibility:

Test Script Fixes:
- Fixed get_simulator_id() to correctly extract UUID from booted devices
- Fixed get_app_logs() to use log show (historical) instead of log stream (live) to avoid hanging
- Improved check_plugin_configured() with multiple detection methods (app container, app listing, data directory)
- Added ensure_plugin_configured() function matching Android pattern for consistent user interaction flow
- Fixed integer comparison error in booted device check (removed newlines from count)
- Removed 'local' keyword from variables in main script body (local can only be used in functions)
- Fixed APP_BUNDLE_ID to match actual bundle identifier

Pending Notification Detection:
- Improved get_pending_notifications() to parse pendingCount from plugin logs
- Added direct log query without restrictive predicate to catch plugin logs
- Added multiple fallback methods for detecting pending count

Plugin Logging Enhancement:
- Added explicit pendingCount logging in DailyNotificationScheduler after scheduling
- Uses both NSLog() and print() to ensure logs appear in system logs and Xcode console
- Matches Android's alarm count logging pattern for test script compatibility

This resolves script crashes and enables reliable detection of pending notifications
for automated testing.
2025-12-11 20:12:34 +08:00
..

iOS Test App

Status: SETUP COMPLETE
Ready for: Building and testing


Setup Status

Basic structure created
Capacitor iOS platform added
Info.plist configured with BGTask identifiers
AppDelegate configured for background tasks
Podfile configured with plugin reference
⚠️ CocoaPods installation required


Next Steps

1. Install CocoaPods (if not installed)

sudo gem install cocoapods

2. Install Pod Dependencies

cd ios/App
pod install
cd ../..

3. Build and Run

Option A: Using Build Script

# From repo root
./scripts/build-ios-test-app.sh --simulator

Option B: Using Xcode

cd ios/App
open App.xcworkspace
# Then press Cmd+R in Xcode

Plugin Registration

The plugin is registered via:

  • Podfile: pod 'DailyNotificationPlugin', :path => '../../../ios/Plugin'
  • Capacitor Config: capacitor.config.json includes plugin entry
  • AppDelegate: Background tasks registered

Configuration Files

  • Info.plist: Configured with BGTask identifiers and background modes
  • AppDelegate.swift: Background task registration added
  • Podfile: Plugin reference added
  • capacitor.config.json: Plugin enabled

Troubleshooting

CocoaPods Not Installed

Error: command not found: pod

Solution:

sudo gem install cocoapods

Plugin Not Found

Error: Build fails with plugin not found

Solution:

  1. Verify plugin exists at ../../../ios/Plugin/
  2. Run pod install in ios/App/ directory
  3. Clean build folder in Xcode (Cmd+Shift+K)

Build Failures

Solution:

  1. Run pod install in ios/App/ directory
  2. Clean build folder (Cmd+Shift+K)
  3. Verify Capacitor plugin path

File Structure

ios-test-app/
├── ios/
│   └── App/
│       ├── App.xcworkspace      # Open this in Xcode
│       ├── Podfile               # CocoaPods dependencies
│       └── App/
│           ├── AppDelegate.swift # Background task registration
│           ├── Info.plist        # BGTask identifiers configured
│           └── public/
│               └── index.html    # Test UI
├── App/
│   └── App/
│       └── Public/
│           └── index.html        # Source HTML
└── capacitor.config.json         # Capacitor configuration

References

  • Requirements: doc/test-app-ios/IOS_TEST_APP_REQUIREMENTS.md
  • Testing Guide: doc/IOS_PHASE1_TESTING_GUIDE.md
  • Build Script: scripts/build-ios-test-app.sh

Status: READY FOR BUILDING (after CocoaPods installation)