feat(ios): create iOS test app structure and synchronization documentation

Created standalone iOS test app structure matching android-test-app:
- Added ios-test-app directory with README, setup guide, and build scripts
- Created comprehensive iOS synchronization status documentation
- Documented API method gaps between Android (52) and iOS (9 methods)
- Added iOS setup guide for Vue 3 test app

New files:
- test-apps/ios-test-app/ - Standalone iOS test app structure
- docs/IOS_SYNC_STATUS.md - Detailed API comparison and status tracking
- docs/IOS_SYNC_SUMMARY.md - Summary of iOS synchronization work
- test-apps/daily-notification-test/docs/IOS_SETUP.md - Vue app iOS setup

iOS test environments are now ready for setup. Test apps need Xcode project
generation via Capacitor CLI or copying from ios/App.

Next steps: Generate Xcode projects and implement missing API methods.
This commit is contained in:
Matthew Raymer
2025-11-11 01:30:31 -08:00
parent fbd9ad338d
commit a166f3be9a
6 changed files with 1001 additions and 0 deletions

View File

@@ -0,0 +1,156 @@
# iOS Test App Setup Guide
**Author**: Matthew Raymer
**Date**: 2025-11-04
## Overview
This guide explains how to set up the standalone iOS test app for the DailyNotification plugin. The iOS test app mirrors the Android test app (`android-test-app`) functionality.
## Option 1: Use Capacitor CLI (Recommended)
### Step 1: Generate iOS App
```bash
cd test-apps/ios-test-app
npx @capacitor/create-app@latest App --template blank
```
### Step 2: Configure Plugin
Edit `App/Podfile`:
```ruby
platform :ios, '13.0'
use_frameworks!
def capacitor_pods
pod 'Capacitor', :path => '../../../node_modules/@capacitor/ios'
pod 'CapacitorCordova', :path => '../../../node_modules/@capacitor/ios'
pod 'DailyNotificationPlugin', :path => '../../../ios'
end
target 'App' do
capacitor_pods
end
```
### Step 3: Install Dependencies
```bash
cd App
pod install
```
### Step 4: Copy Test Interface
Copy the test HTML from `test-apps/android-test-app/app/src/main/assets/public/index.html` to `App/App/public/index.html`.
### Step 5: Configure Capacitor
Edit `App/App/capacitor.config.json`:
```json
{
"appId": "com.timesafari.dailynotification",
"appName": "DailyNotification Test App",
"webDir": "public",
"plugins": {
"DailyNotification": {
"debugMode": true,
"enableNotifications": true
}
}
}
```
## Option 2: Copy from ios/App (Quick Start)
If `ios/App` already exists, you can copy it:
```bash
# From project root
cp -r ios/App test-apps/ios-test-app/App
cd test-apps/ios-test-app/App
pod install
```
Then update:
- `App/Info.plist` - Bundle ID: `com.timesafari.dailynotification`
- `App/capacitor.config.json` - App ID and name
- `App/public/index.html` - Copy test interface from Android test app
## Build and Run
### Using Xcode
```bash
cd test-apps/ios-test-app/App
open App.xcworkspace
# Then build and run in Xcode
```
### Using Command Line
```bash
cd test-apps/ios-test-app/App
xcodebuild -workspace App.xcworkspace \
-scheme App \
-configuration Debug \
-sdk iphonesimulator \
-destination 'platform=iOS Simulator,name=iPhone 15 Pro' \
clean build
```
### Using Build Script
```bash
cd test-apps/ios-test-app
./scripts/build-and-deploy.sh
```
## Plugin Registration
The plugin is automatically registered via Capacitor when included in `Podfile`. No manual registration needed.
## Test Interface
The test interface (`App/App/public/index.html`) provides buttons for:
- Plugin availability testing
- Configuration
- Status checking
- Notification scheduling
- Permission management
## Troubleshooting
### Plugin Not Found
Ensure plugin is built:
```bash
./scripts/build-native.sh --platform ios
```
### CocoaPods Issues
```bash
cd test-apps/ios-test-app/App
pod deintegrate
pod install
```
### Build Errors
1. Clean build folder in Xcode (⌘⇧K)
2. Delete derived data: `rm -rf ~/Library/Developer/Xcode/DerivedData`
3. Rebuild
## Next Steps
1. Build plugin: `./scripts/build-native.sh --platform ios`
2. Generate or copy iOS app structure
3. Install CocoaPods dependencies
4. Build and run in Xcode or simulator
5. Test plugin functionality