# LME Mappe Catastali Pro - Play Store Checklist ## Identita app - Nome: LME Mappe Catastali Pro. - Package name Android: `it.liviomerola.lmemappecatastali.pro`. - Versione iniziale Play: `1.0.0` / version code `100`. - Formato Release Android: Android App Bundle (`.aab`). - Target SDK Release: Android 16 / API 36. ## Base e Pro La separazione e centralizzata in `Services/EntitlementService.cs`. Base gratuita: - consultazione mappa catastale; - ricerca localita e ricerca catastale; - GPS live; - disegni e misure base; - apertura e consultazione dei dati gia presenti. Pro: - archivio progetti; - export GIS/PDF/GPX; - sincronizzazione WebDAV; - mappe offline; - strumenti geometrici avanzati; - traccia GPS. Se l'abbonamento non risulta verificabile offline, l'app conserva una tolleranza locale e non elimina, sequestra o altera i dati dell'utente. Le funzioni Pro possono essere disabilitate, ma i dati esistenti devono restare consultabili. ## Google Play Billing Configurare nella Play Console un unico prodotto in abbonamento: - product id: `lme_pro`; - base plan mensile: `monthly`, prezzo discusso `EUR 4,99`; - base plan annuale: `yearly`, prezzo discusso `EUR 39,99`. Il codice contiene solo identificativi di prodotto e base plan. Non inserire chiavi casuali, segreti, service account, keystore o password nel repository. Il client Android usa Google Play Billing 9.1 tramite `Xamarin.Android.Google.BillingClient 9.1.0.2`. Acquisto, ripristino, acknowledgement e interrogazione delle sottoscrizioni sono collegati a `EntitlementService`. Prima della produzione serve ancora la verifica server-side dei purchase token. La verifica solo sul dispositivo e adatta ai test interni, ma non e sufficiente come protezione definitiva. ## Licenze manuali - Codice opaco cifrato AES-GCM e firmato RSA 3072, inseribile nelle impostazioni dell'app. - Registro SQLite con nome, cognome, email, emissione, scadenza, hash, note e revoca amministrativa. - Ritorno automatico a Base alla scadenza, salvo abbonamento Google ancora valido. - Nessun vincolo al PC emittente o al dispositivo destinatario. - Backup portabile `.lmekey` della chiave privata, cifrato da password, per l'uso da altri sistemi o utenti Windows. Dettagli operativi e limiti della revoca offline sono in `MANUAL_LICENSES.md`. ## Firma Android Usare Play App Signing. Da fare fuori repository: - creare upload key e keystore in una cartella privata; - salvare password in secret manager, variabili ambiente o CI secret; - configurare `AndroidSigningKeyStore`, `AndroidSigningKeyAlias`, `AndroidSigningKeyPass` e `AndroidSigningStorePass` solo in ambiente locale/CI; - caricare la upload certificate nella Play Console quando richiesto. ## Privacy e permessi Permessi Android dichiarati: - Internet e stato rete; - posizione approssimativa e precisa; - Billing. La privacy policy deve spiegare: - uso GPS e posizione per mappa, particelle, tracce e misure; - uso rete per mappe, servizi catastali pubblici, geocoding, sync WebDAV e aggiornamenti; - gestione locale di progetti, backup, mappe offline e preferenze; - eventuali chiavi personali Google/Azure salvate nel SecureStorage del dispositivo; - acquisti gestiti da Google Play. ## Localizzazione e misure La localizzazione applicativa e in `Services/AppLocalizationService.cs`. Lingue iniziali: - Italiano; - Inglese. Sistemi di misura: - automatico in base all'area; - metrico; - imperiale. La mappa JavaScript riceve cultura e sistema di misura tramite `lmeMap.setLocalization(...)`; distanze, superfici e Leaflet Draw vengono formattati di conseguenza. ## Build Release Esempio locale, con Android SDK installato: ```powershell dotnet publish -f net10.0-android -c Release -p:AndroidSdkDirectory=C:\Users\livio\AppData\Local\Android\Sdk ``` Per firmare aggiungere solo parametri esterni o variabili ambiente, mai valori nel file `.csproj`. Per creare APK e AAB di test con una chiave locale separata: ```powershell .\scripts\build-android-test.ps1 ``` La chiave di test non deve essere usata come upload key del Play Store. ## Interventi richiesti sull'account Google - aprire o confermare l'account sviluppatore Play Console; - creare l'app con package `it.liviomerola.lmemappecatastali.pro`; - creare `lme_pro` con i base plan `monthly` e `yearly` e impostarne prezzi e paesi; - attivare Play App Signing e creare una upload key di produzione; - configurare tester, traccia di test interno e account licenza; - predisporre credenziali e servizio per la verifica server-side dei purchase token; - pubblicare la privacy policy su un URL pubblico e completare Data safety, scheda store e classificazione contenuti.