Convert existing Android Webview to iOS and Publish Apps

Замовник: AI | Опубліковано: 24.11.2025

I already run a simple Android WebView app (you can download the android sources) that points to my website and supports push notifications. The build is clean and lightweight—so the task boils down to recreating the same experience for iOS. # Index - IsyDeals iOS Documentation This folder contains all the documentation needed to develop the iOS application equivalent to the IsyDeals Android application. ## Included Files ### 1. **README.md** / **README_EN.md** (Main Documentation) - **What it is:** Complete and detailed technical documentation of the Android application - **Content:** - Overview and architecture - Technology stack - Main features explained in detail - Critical files and their functions - Important configurations and values - Initialization flows - Requirements for iOS implementation - **When to use:** Mandatory reading before starting development ### 2. **EXEMPLOS_CODIGO_IOS.md** / **EXEMPLOS_CODIGO_IOS_EN.md** (Practical Guide) - **What it is:** Practical Swift code examples to implement all features - **Content:** - Complete AppDelegate code - Main ViewController with splash screen - Capacitor OneSignal plugin - Info.plist configurations - SceneDelegate - Podfile - Universal Links configuration - **When to use:** During development, as implementation reference ### 3. **splash.html** (Splash Screen) - **What it is:** HTML splash screen file that should be displayed for 2 seconds - **Characteristics:** - Blue/cyan gradient background - White SVG logo - Tagline "Onde o caro sai barato!" (Where expensive becomes cheap!) - **When to use:** Include in the iOS application bundle and load on startup ### 4. **assets/isydeals-logo-white.svg** (Logo) - **What it is:** White SVG logo used in the splash screen - **When to use:** Include in the `assets` folder of the iOS bundle --- ## How to Use This Documentation ### For iOS Developers: 1. **Start with README.md / README_EN.md** - Read completely to understand the architecture and features - Note important values (App ID, URLs, etc.) - Understand initialization flows 2. **Consult EXEMPLOS_CODIGO_IOS.md / EXEMPLOS_CODIGO_IOS_EN.md** - Use code examples as a base - Adapt as needed for the specific project - Reference during implementation 3. **Include the Assets** - Add `splash.html` to the bundle - Add `isydeals-logo-white.svg` to the `assets` folder of the bundle 4. **Follow Implementation Order:** - Configure base project (Capacitor, Info.plist) - Implement HTML splash screen - Integrate OneSignal - Implement deep links - Configure system bars - Force light mode - Test all features --- ## Implementation Checklist Use this checklist to ensure all features have been implemented: ### Base Configuration - [ ] iOS project created with Capacitor 7.4.4 - [ ] Bundle ID configured: `pt.isydeals.app` - [ ] `capacitor.config.ts` configured with URL `https://isydeals.pt` - [ ] Info.plist configured with URL Scheme `isydeals` - [ ] Universal Links configured (`applinks:isydeals.pt`) ### Splash Screen - [ ] `splash.html` included in bundle - [ ] SVG logo included in `assets/` - [ ] Splash screen displayed for 2 seconds - [ ] Splash screen removed after 2 seconds ### OneSignal - [ ] OneSignal SDK integrated (version 5.x) - [ ] OneSignal initialized in AppDelegate - [ ] App ID configured: `09be4219-de46-48ff-9684-8e971de6090e` - [ ] Notification click handler implemented - [ ] Player ID injected into WebView via JavaScript - [ ] Capacitor OneSignal plugin created and registered ### Deep Links - [ ] URL Scheme `isydeals://` processed and converted to HTTPS - [ ] Universal Links `https://isydeals.pt/*` working - [ ] Retry logic implemented to load URLs - [ ] Deep links work when app is closed - [ ] Deep links work when app is in background - [ ] Deep links work when app is already open ### System Bars - [ ] Status bar always visible - [ ] Status bar with white background - [ ] Status bar icons dark (dark content) - [ ] Navigation bar (home indicator) always visible - [ ] Content respects safe area insets ### Light Mode - [ ] Light mode forced globally - [ ] Works even with dark mode active on system - [ ] Configured in Info.plist or ViewController ### WebView - [ ] WebView loads `https://isydeals.pt` - [ ] WebView respects safe area insets - [ ] JavaScript injection working (OneSignal) --- ## Important Values | Item | Value | |------|-------| | **Bundle ID** | `pt.isydeals.app` | | **App Name** | `isydeals` | | **OneSignal App ID** | `09be4219-de46-48ff-9684-8e971de6090e` | | **Base URL** | `https://isydeals.pt` | | **URL Scheme** | `isydeals://` | | **Capacitor Version** | 7.4.4 | | **OneSignal Version** | 5.x (5.0.0 to 5.99.99) | | **Min iOS Version** | 13.0 (recommended) | | **Splash Duration** | 2 seconds | --- ## Support If you have questions during development: 1. First consult README.md / README_EN.md to understand the feature 2. Check code examples in EXEMPLOS_CODIGO_IOS.md / EXEMPLOS_CODIGO_IOS_EN.md 3. Compare with the original Android code in `native_app/android/app/src/main/java/pt/isydeals/app/` --- ## Success Criteria The iOS application is complete when: 1. All Android version features are implemented 2. The HTML splash screen appears for 2 seconds 3. OneSignal is integrated and Player ID is injected into WebView 4. Deep links work (both `isydeals://` and `https://isydeals.pt/*`) 5. Push notifications open the application at the correct URL 6. System bars are always visible 7. Light mode is forced 8. The application loads `https://isydeals.pt` correctly