feat: prepare Pro licensing and Android API 36

This commit is contained in:
livio committed 2026-09-28 09:50:58 +02:00
1 parent b600412285
commit 11a91863a3
25 files changed
+2447 -62

No files matched your search

+128
View File
@@ -0,0 +1,128 @@
# 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.