feat: prepare Pro licensing and Android API 36
This commit is contained in:
1 parent
b600412285
commit
11a91863a3
25 files changed
+2447
-62
No files matched your search
@@ -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.
|
||||
Reference in new issue
Block a user