{
 "id": 36910,
 "slug": "2024-05-11_sviluppare-un-app-ios-nativa",
 "url": "https://agents.willem.com/it/posts/2024-05-11_sviluppare-un-app-ios-nativa/",
 "source_url": "https://willem.com/it/2024-05-11_sviluppare-un-app-ios-nativa/",
 "language": "it",
 "date": "2024-05-11",
 "published": "2024-05-11T00:00:00+02:00",
 "created": "2025-06-26T22:09:15.492000+02:00",
 "updated": "2026-10-20T09:22:32.389000+02:00",
 "title": "Sviluppare un'app iOS nativa",
 "subtitle": "Creare un tracker per ciclismo e corsa",
 "summary": "Come piccolo progetto parallelo, infilato tra il mio lavoro di tutti i giorni, ho lavorato a qualcosa di personale: un'app nativa per iOS che traccia gli allenamenti. Volevo rendere inutile il mio smartwatch e usare il telefono per tracciare gli allenamenti. Quanto può essere difficile raccogliere dati dettagliati dai sensori con le API native di Swift?",
 "topics": [
  "AI",
  "apple",
  "bike",
  "creating",
  "data",
  "design",
  "gran fondo",
  "health",
  "heart",
  "minimal",
  "programming",
  "running",
  "sensors",
  "sport",
  "watch"
 ],
 "author": {
  "name": "Willem L. Middelkoop",
  "url": "https://willem.com"
 },
 "provenance": {
  "kind": "model",
  "method": "Claude Sonnet, two passes (translation, then proofreading) against a glossary and hunspell",
  "date": "2026-10-20",
  "reviewed_by_native_reader": false,
  "language": "it",
  "source_language": "en"
 },
 "translations": [
  {
   "language": "en",
   "title": "Developing a native iOS app",
   "url": "https://agents.willem.com/en/posts/2024-05-11_developing-a-native-ios-app/",
   "source_url": "https://willem.com/en/2024-05-11_developing-a-native-ios-app/"
  },
  {
   "language": "nl",
   "title": "Het ontwikkelen van een native iOS app",
   "url": "https://agents.willem.com/nl/posts/2024-05-11_het-ontwikkelen-van-een-native-ios-app/",
   "source_url": "https://willem.com/nl/2024-05-11_het-ontwikkelen-van-een-native-ios-app/"
  },
  {
   "language": "de",
   "title": "Entwicklung einer nativen iOS-App",
   "url": "https://agents.willem.com/de/posts/2024-05-11_entwicklung-einer-nativen-ios-app/",
   "source_url": "https://willem.com/de/2024-05-11_entwicklung-einer-nativen-ios-app/"
  },
  {
   "language": "es",
   "title": "Desarrollo de una app nativa para iOS",
   "url": "https://agents.willem.com/es/posts/2024-05-11_desarrollo-de-una-app-nativa-para-ios/",
   "source_url": "https://willem.com/es/2024-05-11_desarrollo-de-una-app-nativa-para-ios/"
  },
  {
   "language": "fr",
   "title": "Développer une appli iOS native",
   "url": "https://agents.willem.com/fr/posts/2024-05-11_developper-une-appli-ios-native/",
   "source_url": "https://willem.com/fr/2024-05-11_developper-une-appli-ios-native/"
  },
  {
   "language": "pt",
   "title": "Desenvolver uma app iOS nativa",
   "url": "https://agents.willem.com/pt/posts/2024-05-11_desenvolver-uma-app-ios-nativa/",
   "source_url": "https://willem.com/pt/2024-05-11_desenvolver-uma-app-ios-nativa/"
  },
  {
   "language": "pap",
   "title": "Desaroyá un app iOS nativo",
   "url": "https://agents.willem.com/pap/posts/2024-05-11_desaroya-un-app-ios-nativo/",
   "source_url": "https://willem.com/pap/2024-05-11_desaroya-un-app-ios-nativo/"
  },
  {
   "language": "fy",
   "title": "In native iOS app ûntwikkelje",
   "url": "https://agents.willem.com/fy/posts/2024-05-11_in-native-ios-app-untwikkelje/",
   "source_url": "https://willem.com/fy/2024-05-11_in-native-ios-app-untwikkelje/"
  }
 ],
 "image": "https://willem.com/global/images/a84959d10e5d.webp",
 "image_width": 2560,
 "images": [
  {
   "url": "https://willem.com/global/images/4c88f32b5e47.webp",
   "description": "Niente ti fa sentire vivo come uscire all'aperto per un po' di azione fisica: adoro allenarmi!",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-1.jpg"
  },
  {
   "url": "https://willem.com/global/images/6fb02bfdb938.webp",
   "description": "La mia bici con sensori Bluetooth collegati al mio MacBook con Xcode",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-2.jpg"
  },
  {
   "url": "https://willem.com/global/images/b60ff287e1ab.webp",
   "description": "Primo prototipo dell'app che funziona con un sensore Bluetooth di frequenza cardiaca, con i primi dati mostrati in un'altra app che fa dei bei grafici (HealthFit)",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-3.png"
  },
  {
   "url": "https://willem.com/global/images/f00f6c542cf6.webp",
   "description": "L'app Allenamento dell'Apple Watch mostra grandi pulsanti per avviare un allenamento, senza bisogno di altra configurazione",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-4.jpg"
  },
  {
   "url": "https://willem.com/global/images/84177e0cd3dc.webp",
   "description": "Per il layout della mia app, usata come ciclocomputer montato, mi sono ispirato alla disposizione dei dati del mio Garmin Edge",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-5.jpg"
  },
  {
   "url": "https://willem.com/global/images/890dceb85ae1.webp",
   "description": "Schizzo di design che descrive il layout desiderato",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-6.png"
  },
  {
   "url": "https://willem.com/global/images/557c388149d2.webp",
   "description": "Provo l'app sulla mia bici con custodia e supporto QuadLock",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-7.jpg"
  },
  {
   "url": "https://willem.com/global/images/b8e692c2cdd3.webp",
   "description": "Configurazioni diverse dei dati in tempo reale",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-8.png"
  },
  {
   "url": "https://willem.com/global/images/615f26f51f55.webp",
   "description": "Ho un po' di magia in tasca: l'app che traccia gli allenamenti in background, durante le registrazioni mostra solo un widget nella schermata home",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-9.jpg"
  },
  {
   "url": "https://willem.com/global/images/11bded661d7a.webp",
   "description": "\"Un miglio in più\": 8 ore in bici per testare il consumo della batteria (nota: resta ancora il 23% di carica!)",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-10.jpg"
  },
  {
   "url": "https://willem.com/global/images/57929e8b6042.webp",
   "description": "Schermate del processo di onboarding dell'app: richiesta dei permessi e guida ai nuovi utenti",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-11.jpg"
  },
  {
   "url": "https://willem.com/global/images/a6b82a213937.webp",
   "description": "Progettare un paywall per la mia app: non è la richiesta che preferisco fare agli utenti, ma è comunque molto importante. ",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-12.png"
  },
  {
   "url": "https://willem.com/global/images/fa7d320e32a3.webp",
   "description": "Non la solita sessione di debug: Fietselfstedentocht 2024",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36910_images-13.jpg"
  }
 ],
 "text": "Contesto\nSe segui il mio blog, non ti sorprenderà: adoro andare in bici (https://willem.com/en/cycling-as-craft-building-riding-and-repairing-bikes/) e da poco ho cominciato anche a correre (https://willem.com/en/2024-03-24_half-marathon/). Ho parecchia esperienza nel tracciare i miei allenamenti, con Garmin, Strava (https://willem.com/en/2016-12-31_one-year-of-cycling/), Omata (https://willem.com/en/2020-09-29_riding-with-omata-one/), Wahoo, Biostrap (https://willem.com/en/2017-11-15_collecting-health-data-with-biostrap/), Whoop (https://willem.com/en/2022-01-14_wearing-whoop-4-0/) e varie app (https://willem.com/en/2019-04-30_the-best-bike-computer-app-cyclemeter/) e sensori (https://willem.com/en/wearable-sensors-measuring-the-body-questioning-the-data/). Trovo utili i dati su salute e fitness per conoscere le tue prestazioni_fisiche (https://willem.com/en/2023-05-31_impact-of-training/) e per avere una specie di responsabilità verso te stesso (per esempio, ti motiva a continuare gli allenamenti).\nIl nerd che è in me ama i grandi insiemi di dati, i tanti tipi di sensori disponibili sono una festa per la mia curiosità, ma questo è in conflitto con il mio desiderio di minimalismo (https://willem.com/en/digital-minimalism-doing-more-with-less-technology/) e di semplicità. Ti_servono_davvero_tutti_i_dati_degli_allenamenti (https://willem.com/en/2024-01-16_health-and-fitness-data/)? Non basta forse ascoltare_il_proprio_corpo (https://willem.com/en/2018-05-17_listen-to-your-body/)? Non lo so, ma apprezzo la capacità di uno smartwatch di tracciare gli allenamenti nei dettagli, (quasi) senza fatica. Mi piace come l'Apple_Watch_si_possa_usare_per_tracciare_gli_allenamenti (https://willem.com/en/2018-09-27_swimming-and-cycling-with-apple-watch/), oltre alle sue qualità di moderno_orologio_da_lavoro (https://willem.com/en/2018-11-02_is-the-apple-watch-the-modern-tool-watch/) e sostituto_del_telefono (https://willem.com/en/2023-11-10_apple-watch-as-phone/). Capisco che la maggior parte delle persone indossi lo smartwatch e basta, ma a me piacciono anche i vecchi orologi_meccanici (https://willem.com/en/watches-and-time-a-decade-of-horology-technology-and-craft/) come un Rolex (https://willem.com/en/2022-12-22_rolex-datejust-36/), un Tudor (https://willem.com/en/2020-06-17_tudor-black-bay-36-long-term-review/), un Grand_Seiko (https://willem.com/en/2021-06-05_wearing-grand-seiko/), o perfino qualcosa_fatto_su_misura (https://willem.com/en/2020-11-30_designing-my-own-watch/). Anche se li_apprezzo_entrambi (https://willem.com/en/2021-02-28_wearing-two-watches/), quando devo scegliere tra smartwatch e orologi meccanici tendo verso gli orologi_meccanici (https://willem.com/en/2017-04-30_smartwatches-vs-mechanical-watches/).\nL'idea per l'app: Gran Fondo\nE se esistesse un'app per smartphone che raccoglie tutti i dati dell'allenamento che vuoi, senza fastidi e senza confusione? Me la immaginavo così:\n- Semplice: deve \"togliersi di mezzo\", essere pensata per \"funzionare e basta\", senza bisogno di trafficare con impostazioni e opzioni infinite. Premi \"start\" e inizi l'allenamento.\n- Flessibile: usa l'app in modi diversi: monta o indossa il telefono in vista per i dati in tempo reale, oppure mettilo in tasca e lascialo lavorare in background.\n- Potente: collegati con sensori di frequenza cardiaca, cadenza, potenza e velocità via Bluetooth; supporta più sensori, ideale se usi bici diverse.\n- Amica di Apple Health: salva tutti i dati in Apple Health con il massimo dettaglio, compresi i percorsi degli allenamenti e le singole misure di potenza, cadenza e velocità. Così puoi analizzare le registrazioni in qualsiasi app che supporti Apple Health, come Strava, WHOOP, HealthFit e molte altre.\n- Onesta: niente pubblicità né vendita di dati. Niente account né registrazione. I tuoi dati devono restare privati, al sicuro e sul tuo dispositivo.\nNessuna delle app di sport e fitness per smartphone che esistono soddisfa tutti questi punti. La maggior parte è inutilmente complessa o è in qualche modo pensata per portare via i tuoi dati a vantaggio di chi ha fatto l'app o della sua piattaforma. Potevo fare di meglio?\nCostruire l'app\nSapendo perché e cosa volevo, ho deciso come costruire l'app.\nNativa contro ibrida/web\nPer la maggior parte del lavoro che faccio preferisco tecnologie web aperte e libere (nel senso di libertà), come HTML, JavaScript e CSS, oppure software server rilasciato con una licenza_di_software_libero (https://willem.com/blog/free-software/), come la GPL. Per questo caso d'uso avevo bisogno di un'efficienza energetica estrema e di integrarmi a fondo con il sistema operativo dello smartphone. Il modo migliore per farlo su un iPhone è abbracciare fino in fondo il kit di sviluppo software di Apple: fare l'app in modo nativo in Swift con SwiftUI e seguire il più possibile la documentazione_tecnica (https://developer.apple.com/documentation) e le linee_guida_di_design (https://developer.apple.com/design/human-interface-guidelines/).\nProgrammare con l'aiuto dell'IA\nAnche se ho_le_mie_riserve (https://willem.com/en/2022-09-11_computer-says-no/), ultimamente programmare con l'IA attira tutta l'attenzione. Qualcuno sostiene perfino che tecnologie come Copilot o ChatGPT renderanno inutili i programmatori. Io con l'IA ci so fare: l'ho usata per generare_codice (https://willem.com/en/2023-05-03_using-ai-to-generate-code/), insegno_alla_gente_come_usarla (https://willem.com/en/2023-10-14_giving-ai-training/), ma non l'avevo mai usata per costruire un'app iOS completa. Ho pensato che fosse l'occasione perfetta per vedere quanto sia adatta l'IA a qualcosa di più complesso di un semplice frammento di script. Scopriamo quanto sono obsoleto come programmatore in questa moderna era dell'IA...\nGPS e sensori Bluetooth Low Energy\nDopo aver configurato il mio ambiente Xcode, ho chiesto a ChatGPT di OpenAI di darmi del codice per leggere i dati di posizione GPS e di generare le classi Swift necessarie per rilevare e collegarsi ai sensori Bluetooth. Ragazzi, sono finito nella proverbiale tana del coniglio!\nIl punto della programmazione assistita dall'IA è che SÌ funziona, ma solo IN PARTE. Ti dà pezzi che funzionano, ma non si incastrano perfettamente e non per forza lavorano insieme. Vedere il codice che genera è come sentire gli echi di una grande canzone: riconosci che somiglia a qualcosa, ma non è proprio la stessa cosa che sentire la band suonare dal vivo, figuriamoci cantarla tu!\nHo preso i pezzi dell'IA e mi sono messo a leggere da solo la documentazione rilevante, e questo si è rivelato molto più efficace, perché mi ha permesso di capire davvero cosa dovesse fare il meccanismo. L'IA mi ha aiutato a trovare le cose da imparare. Tracciare i dati di posizione GPS è stato sorprendentemente facile con CoreLocation_di_Apple (https://developer.apple.com/documentation/corelocation). Collegare il sensore Bluetooth all'app si è rivelato molto più difficile, perché richiede molti passaggi distinti:\n- Rilevare i dispositivi Bluetooth: cercare nella zona circostante i dispositivi disponibili che stanno trasmettendo\n- Collegarsi a un dispositivo Bluetooth: stabilire e mantenere una connessione tra l'app e il dispositivo\n- Scoprire le caratteristiche del dispositivo Bluetooth: un dispositivo Bluetooth semplice non esiste, devi fare tu la \"scoperta\" delle capacità e delle funzioni del dispositivo; molti dispositivi trasmettono più segnali diversi, sia per i dati dei sensori sia per i meccanismi di controllo e per i parametri operativi, come il livello della batteria.\n- Sottoscrivere le caratteristiche: alla fine ci si abbona a un flusso di dati sintonizzando le radio Bluetooth su una certa caratteristica Bluetooth.\n- Decodificare i dati: dato che è fatto per risparmiare energia, ricevi pochissimi dati in bit grezzi; i pacchetti di dati devi decodificarli tu; la parte difficile è che ogni sensore, di qualsiasi produttore, codifica i dati a modo suo.\nPrendiamo un sensore \"semplice\" come un sensore di cadenza da mettere sul pedale della bici, che si può usare per ricavare i giri al minuto durante un'uscita in bici. Quanto può essere difficile? Pensavo che la specifica_ufficiale_del_Bluetooth (https://www.bluetooth.com/specifications/specs/running-speed-and-cadence-profile-1-0/) mi avrebbe dato tutti i dettagli necessari... MACCHÉ! Un semplice sensore di cadenza è sorprendentemente complesso:\n- Profilo Bluetooth combinato per velocità e cadenza del ciclismo: qualsiasi sensore di cadenza si identifica sempre come sensore di velocità e di cadenza, e le sue capacità vanno scoperte \"al volo\".\n- Pacchetti di dati non uniformi: il contenuto dei dati dipende dalle capacità attuali del sensore (per esempio, se ha rilevato qualcosa), e il pacchetto va interpretato bit per bit, controllando i possibili flag che indicano cosa rappresenta il bit successivo.\n- Dati non banali: non aspettarti un valore chiaro per la \"cadenza\", il sensore ti dà un conteggio cumulativo dei giri e un timestamp rudimentale dell'ultimo cambiamento rilevato; devi usare questi valori per calcolare la metrica che cerchi di misurare.\nL'IA mi ha dato del codice di esempio, ma non funzionava con il mio sensore. Con un'app di debug per Bluetooth, Bluefy (https://apps.apple.com/us/app/bluefy-web-ble-browser/id1492822055), sono riuscito a capire meglio i dati che il sensore trasmetteva. Sul blog_ufficiale_del_Bluetooth (https://www.bluetooth.com/blog/part-2-the-wheels-on-the-bike-are-bluetooth-smart-bluetooth-smart-bluetooth-smart/) ho trovato un pezzo di codice Java che mi ha dato qualche indizio su come interpretare i dati dei sensori. Ho adattato quel codice a vari profili di sensore diversi e l'ho tradotto in Swift. Così ho ottenuto un primo prototipo funzionante.\nDesign UI/UX\nUno dei motivi principali per cui mi piace l'app Allenamento dell'Apple Watch è che la sua interfaccia utente (UI) è pensata per offrire un'esperienza d'uso (UX) piacevole. L'app sull'orologio ha pulsanti piuttosto grandi che premi per avviare una registrazione, e più o meno basta. L'app ha poche opzioni, il suo design ha un'impronta decisa ma è molto ponderato. È un contrasto netto con dispositivi come Garmin, che offrono un mare di opzioni di personalizzazione. Il trucco è trovare il giusto equilibrio tra flessibilità nei casi d'uso e un'impostazione predefinita che funzioni bene.\nCon un sistema di fissaggio come QuadLock puoi attaccare saldamente lo smartphone al manubrio della bici. Così l'iPhone può sostituire il tuo Garmin come ciclocomputer. Gli iPhone moderni hanno un display sempre attivo che può mostrare informazioni in modo efficiente dal punto di vista energetico, a patto di usare il kit di sviluppo software di Apple, che include varie ottimizzazioni. Dopo moltissimi (https://willem.com/en/cycling-as-craft-building-riding-and-repairing-bikes/) chilometri con il mio ciclocomputer Garmin, ho scelto una vista con campi dati in tempo reale per velocità, potenza e frequenza cardiaca. Quello che mi piace dei Garmin Edge più avanzati è che possono tracciare un grafico. Così tieni gli occhi sulla strada quando conta e dai un'occhiata ai dati storici un po' più tardi.\nPer massimizzare l'efficienza energetica ho deciso di usare le librerie di Apple per i grafici: Swift_Charts (https://developer.apple.com/documentation/charts). Un problema che ho incontrato durante lo sviluppo è che le misure dei sensori arrivano a intervalli e in momenti diversi. Serve una specie di meccanismo di sincronizzazione per avere punti dati con timestamp comuni, così da poter confrontare e mettere in relazione i valori. Ho progettato questo meccanismo per sincronizzare anche gli aggiornamenti dell'interfaccia: tutti i grafici e i punti dati si aggiornano in un unico refresh, ottimizzando CPU e prestazioni grafiche (e quindi la batteria). Come extra ho aggiunto il supporto per diversi intervalli di tempo, così i grafici possono mostrare i dati dell'ultimo minuto, di 5 minuti, di 15 minuti, dell'ultima ora o dell'intero allenamento.\nL'app mostra automaticamente i grafici disponibili in base ai sensori collegati, e non servono configurazioni diverse se hai più di una bici. Se tocchi un grafico, si ingrandisce o si riduce. Se tocchi l'intervallo dei dati (per esempio \"ultimi 5 minuti\"), puoi passare da uno all'altro. L'app ricorda la tua configurazione e ti prepara in automatico per l'allenamento successivo. Siccome tutti i punti da toccare e i pulsanti sono piuttosto grandi, funzionano bene anche con le mani sudate o con i guanti.\nDa tasca: ottimizzare per l'uso in background e il consumo di energia\nUn altro modo in cui immaginavo di usare l'app era dalla tasca, come app in background. Così si può raccogliere i dati in modo discreto: avvii l'app e metti via il telefono. Mi piace l'idea di avere un \"set di dati completo\" per tutte le mie uscite in bici e le mie corse, senza dover avere l'app al centro dell'attenzione sempre. Molti allenamenti di corsa e uscite in bici non sono così interessanti.\nDi default il sistema operativo iOS di Apple limita rigorosamente le possibilità delle app di girare in background. Questo massimizza la durata della batteria e la privacy dell'utente. Se segui le linee guida di Apple e chiedi correttamente all'utente i permessi necessari, puoi in effetti progettare la tua app perché funzioni alla perfezione in background. Ho davvero imparato ad apprezzare gli sforzi di Apple per ottimizzare tutto lo stack, che permettono alla tua app di essere più efficiente dal punto di vista energetico. In poche parole, \"non chiamateci, vi chiamiamo noi\" è ciò che fa il sistema operativo: prende il controllo di quando la tua app fa le sue cose, e così può sincronizzare, combinare ed elaborare a lotti attività diverse sui core disponibili (a basso consumo) dei chip Apple Silicon.\nDurante uno dei miei test con una versione prototipo dell'app sono riuscito a raccogliere oltre 127 mila (!!) punti dati in un'uscita in bici di 8 ore su una sola carica della batteria dell'iPhone, con lo schermo acceso tutto il tempo. Se giochi secondo le regole di Apple, hai davvero il potere (per così dire). Sviluppare questa app mi ha portato lontano, ah!\nI veri artisti consegnano\nLa strada per l'inferno è lastricata di buone intenzioni, dicono... Per questo mi piace portare a termine i miei progetti. Per un'app significa pubblicarla sull'App Store. Prepararla al vaglio di Apple e farla approvare dai revisori dell'App Store è un traguardo in più. È importante, perché ti fa riflettere sull'onboarding (dei nuovi utenti) e sul modello di guadagno.\nOnboarding\nUna sfida particolare quando si costruisce un'app è guidare chi non la conosce a usarla. Una buona interfaccia utente può aiutare, ma data la profonda integrazione dell'app con Apple Health, i dati di posizione e i sensori Bluetooth, serve anche chiedere gentilmente i permessi.\nDevi progettare il processo in modo che non fallisca quando le persone rifiutano certi permessi. Apple è molto severa su questo: le persone hanno il diritto di rifiutare. Tocca a te far funzionare l'app con permessi parziali o senza. È una sfida in più.\nModello di guadagno per finanziare lo sviluppo\nNon posso sopravvalutare l'importanza del software_libero (https://willem.com/blog/free-software/), nel senso di libertà, ma non posso nemmeno ignorare che ho una famiglia da mantenere. E soprattutto, trovare persone disposte a pagare per il tuo prodotto può servire da convalida in più della tua idea. Sii aperto e onesto sul tuo modello di guadagno e ti aiuterà a finanziare il tuo progetto; non dipendere da investitori o venture capital, fai da solo il tuo sviluppo!\nNon devi pagare per provare l'app. La schermata di pagamento compare solo quando le persone usano davvero l'app (e si può sempre chiudere). Perché non provarla tu stesso? Puoi_trovare_l'app_qui (https://apps.apple.com/gb/app/gran-fondo-ride-run/id6502285146).\nFuturo\nUsa per primo ciò che costruisci, dicono: continuerò a sviluppare l'app usandola io stesso. Non mi aspetto che questo progetto sia un guadagno (economico) rapido, ma se è utile in pratica a me, è probabile che possa essere utile anche a qualcun altro.\nUna cosa che mi piace di questo progetto è che richiede poca fatica per andare avanti, perché mi piace allenarmi. Il debug delle nuove versioni di questa app spesso significa uscire a correre o in bici. Chi l'ha detto che lo sviluppo software è un lavoro sedentario?!\nConclusione\nTante persone hanno \"grandi idee\", poche si danno da fare per realizzarle. È questo che distingue chi fa dagli altri. Mi piace fare le cose, perché il processo ti obbliga a entrare davvero nella materia. Impari moltissimo e accumuli un'esperienza che gli altri non avranno. Accidenti, costruiscitela da solo, falla tua!",
 "word_count": 2323,
 "markdown_url": "https://agents.willem.com/it/posts/2024-05-11_sviluppare-un-app-ios-nativa/post.md"
}