It is currently 1 August 2021, 22:43 Advanced search

XCODE e SQLite: perchè litigate ?

Domande e risposte su come utilizzare Instant Developer Foundation al meglio

XCODE e SQLite: perchè litigate ?

Postby eurekapv » 15 March 2017, 14:52

Ho una applicazione Mobile Offline realizzata con Inde 15.5 per Smartphone

L'applicazione non utilizza la sincronizzazione nativa, ma tramite SyncQuery richiede ad un server i dati e li memorizza sul dispositivo.

TEST EFFETTUATI:
1) Test Caravel
L'applicazione è stata testata con Caravel in locale, successivamente installando l'applicazione su un server e scaricandola, tramite la Service Directory Progamma, sempre su Caravel: TEST CORRETTO (il funzionamento è sempre stato come atteso sia su dispositivi IOS che Android)

2) Creazione dei pacchetti di installazione Android
Creato un pacchetto di installazione Android, e successivamente creato APK e installato sul dispositivo: TEST CORRETTO
Pubblicazione della applicazione sul Play Store, scaricata ed eseguita: TEST CORRETTO

3) Creazione dei pacchetti di installazione IOS
Creati i pacchetti di installazione, importato in XCODE versione 8.2.1 e pensando fosse tutto corretto anche postato per la verifica sull'Apple Store: RESPINTO

Il problema quale è?
Per spiegare il problema devo prima dire cosa effettivamente fa l'app:
L'applicazione parte con una fase di configurazione dove, dopo alcune informazioni richieste all'utente, esegue la sincronizzazione dei dati tramite query
a) Il dispositivo contatta il server correttamente
b) Il server risponde con i dati in maniera corretta
c) Il dispositivo riceve i dati e comincia a scriverli sulla base dati SQL SENZA SEGNALARE NESSUN ERRORE DI SALVATAGGIO (dalla parte INDE)
d) Al termine della fase di scrittura viene Rieseguita una Query che chiede il nominativo memorizzato sul DB e a questo punto NON VIENE RITORNATO NESSUN DATO: quindi la fase di registrazione si interrompe e avviso l'utente con una messagebox. (Nessuna eccezione non gestita o interruzione inattesa dell'app, è un comportamento previsto nel codice)

Ecco il mistero è proprio qua.....durante la scrittura dei dati nessun errore viene segnalato, ma alla rilettura non c'e' nulla (all'apparenza)

Per aggiungere mistero al mistero, se si butta giù l'applicazione e si fa ripartire.....puffff I DATI COMPAIONO !!!!! e difatti l'applicazione parte ed entra immediatamente senza proporre la fase di configurazione.

Allora mi son detto andiamo a vedere il log che scrive Xcode installando l'app direttamente sul telefono....
1) Non crea il Database ?
2) Non crea le tabelle ?
Dove sta l'errore ?????

Ebbene dal Log di Xcode (eseguendo anche l'app passo passo) si vede che le operazioni di CREATE TABLE vengono tutte eseguite e terminate con codice SQLITE_DONE e le chiamate alla sqlite3_prepare_v2 ritornano sempre result = 0 (Quindi prepara correttamente lo statement e l'esecuzione successiva va a buon fine)

Quando invece si tratta di eseguire i prepared statement per le operazioni di INSERT queste tornano sempre un result = 1 Quindi in teoria stmt non è corretto e non viene eseguito....sembrerebbe.

Analizzando meglio la cosa ho notato che, (lo dico giusto per dare qualche spunto in piu'), le operazioni di CREATE TABLE vengono eseguite su un database che si trova in .........Databases\http_0.0.0.0\Nome del DB, mentre invece le operazioni di INSERT vengono eseguite su un database che sta in un altro percorso ..........\Caches\http_0.0.0.0\Nome del Database. (magari è giusto sia cosi' ma non lo so).

Per mettere più sale a tutto questo impasto dico anche che, tutto questo, succede se il dispositivo è connesso in WIFI ad una rete qualsiasi mentre esegue queste operazioni; nel caso sia connesso in 3G o 4G ... tutto funziona perfettamente !!!!!!!!

Luca Baldini hai qualche idea in merito ???


Pietro
Cavallini Pietro
User avatar
eurekapv
 
Posts: 2355
Joined: 2 November 2010, 22:16
Location: Vigevano

Re: XCODE e SQLite: perchè litigate ?

Postby lucabaldini » 31 March 2017, 14:44

So che avete analizzato la cosa in assistenza. Però non so come è finita... hai capito il perché del problema? Hai qualche info in più?
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4775
Joined: 1 October 2010, 17:03
Location: Bologna

Re: XCODE e SQLite: perchè litigate ?

Postby eurekapv » 31 March 2017, 14:59

Ciao Luca, beh purtroppo Matteo non essendo molto ferrato Xcode navigava alla ricerca del problema un po come me...

Quello che ho potuto scoprire successivamente era che in alcuni casi la funzione DBSQLiteDBPath tornava un percorso ...Database... ed in altri casi un percorso LocalCaches ... La causa pero' è ignota, anche mettendo un sacco di DLog o Debug Step by Step

Controllando meglio il tutto ho valutato che il percorso corretto sarebbe LocalCaches....(quando l'app NON va in errore punta sempre a quel DB) e allora con un piccolo trucco ho modificato la funzione e faccio un bel replace nella stringa Database -> Local Caches.

Ho messo la modifica anche dentro il template Xcode dei pacchetti di installazione e l'app funziona a meraviglia e non è mai più comparso l'errore.

Pietro
Cavallini Pietro
User avatar
eurekapv
 
Posts: 2355
Joined: 2 November 2010, 22:16
Location: Vigevano

Re: XCODE e SQLite: perchè litigate ?

Postby eurekapv » 31 March 2017, 15:01

Sempre tornando ai pacchetti XCode ho notato anche altre magnane......per esempio i file con estensione .aiff (sonori) non c'e' proprio verso di farli copiare dentro al pacchetto di installazione.
Sono presenti nella custom del progetto, vanno dentro alla cartella csharp del progetto....ma nel pacchetto niente da fare

Cosi li copio a mano nel progetto Xcode tutte le volte.

Pietro
Cavallini Pietro
User avatar
eurekapv
 
Posts: 2355
Joined: 2 November 2010, 22:16
Location: Vigevano

Re: XCODE e SQLite: perchè litigate ?

Postby lucabaldini » 31 March 2017, 15:36

Per i file aiff posso fare qualcosa io...

Riguardo la mod del template... magari mandami una e-mail con le info, così mi studio la cosa...

Grazie!

Ho creato l'attività NPQ03307 per tenere conto di questa conversazione. Quando verrà valutata, potrai seguirne l'andamento con Instant Developer Roadmap.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4775
Joined: 1 October 2010, 17:03
Location: Bologna

Re: XCODE e SQLite: perchè litigate ?

Postby lucabaldini » 3 April 2017, 9:57

L'attività NPQ03307 è stata completata e sarà disponibile nella versione Instant Developer 16.0. Clicca qui per leggere le note di rilascio.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4775
Joined: 1 October 2010, 17:03
Location: Bologna


Return to Tips & Tricks - Foundation

Who is online

Users browsing this forum: No registered users and 27 guests

cron