{"id":9469,"date":"2012-09-05T15:39:24","date_gmt":"2012-09-05T13:39:24","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=9469"},"modified":"2012-09-05T15:39:24","modified_gmt":"2012-09-05T13:39:24","slug":"come-aggiornare-un-applicazione-via-internet-con-groundcontrol","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/come-aggiornare-un-applicazione-via-internet-con-groundcontrol\/","title":{"rendered":"Come aggiornare un&#8217;applicazione via internet con GroundControl"},"content":{"rendered":"<p><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2012\/09\/librerie-Open-Source.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2012\/09\/librerie-Open-Source.png\" alt=\"Librerie OpenSource\" title=\"librerie-Open-Source\" width=\"200\" height=\"100\" class=\"alignleft size-full wp-image-9476\" \/><\/a> Github \u00e8 una inesauribile fonte di idee e di progetti interessanti, alcuni enormi altri minuscoli. Mentre spulciavo il sito ieri sera ho notato questo piccolissimo progetto che mi ha colpito molto in quanto l&#8217;idea che sta alla base \u00e8 molto semplice e funzionale, la si potrebbe definire proprio un uovo di colombo, perch\u00e9 non \u00e8 proprio una soluzione elegante, ma funziona. Il progetto in questione si chiama <strong>GroundControl<\/strong> e lo trovate a <a href=\"https:\/\/github.com\/mattt\/GroundControl\" target=\"_blank\">questo indirizzo<\/a>, ma cosa fa di preciso?<br \/>\nIn breve permette di aggiornare in modo molto semplice alcuni parametri delle nostre applicazioni direttamente via internet. Vediamo di cosa si tratta.<!--more--><\/p>\n<p>Immaginiamo un esempio pratico: avete realizzato un&#8217;applicazione e vorreste fare in modo che ogni giorno appaia un alert con un testo diverso&#8230; Cosa dovremmo fare in questo caso? Dovremmo mettere inpiedi un webservice, scrivere il codice nella nostra app per interrogarlo, parsare la risposta in json e tutto il resto. Lavoro non complicatissimo, ma piuttosto &#8220;scocciante&#8221;. E se invece tutto questo lavoro lo facesse direttamente una libreria?<\/p>\n<p><strong>GroundControl<\/strong> si occupa proprio di questo! In maniera trasparente aggiorna la famosa classe NSUserDefault (ecco perch\u00e9 non la ritengo una soluzione molto elegante) scaricando un file .plist da internet.<\/p>\n<h4>Installiamo GroundControl<\/h4>\n<p>Ma veniamo all&#8217;installazione: prima di tutto dobbiamo scaricare il progetto in una cartella, per farlo ci baster\u00e0 digitare da riga di comando:<\/p>\n<p><code>git clone https:\/\/github.com\/mattt\/GroundControl.git<\/code><\/p>\n<p>Una volta scaricato il progetto non abbiamo ancora finito, perch\u00e9 questo progetto utilizza AFNewtork per la gestione della rete, quindi spostiamoci sempre con il terminale all&#8217;interno della cartella GroundControl, in questo modo:<\/p>\n<p><code>cd GroundControl<\/code><\/p>\n<p>e digitiamo:<\/p>\n<p><code><br \/>\ngit submodule init<br \/>\ngit submodule update<br \/>\n<\/code><\/p>\n<p>A questo punto il progetto \u00e8 pronto, troverete all&#8217;interno della cartella GroundControl la cartella Example dove l&#8217;autore ha inserito un progetto di esempio.<\/p>\n<p>Eseguendolo possiamo verificare che viene visualizzato il messaggio &#8220;hello world&#8221; che non sta di fatto nel progetto, ma viene scaricato da internet:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2012\/09\/come-aggiornare-un-applicazione-via-internet-con-GroundControl.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2012\/09\/come-aggiornare-un-applicazione-via-internet-con-GroundControl.png\" alt=\"come-aggiornare-un-applicazione-via-internet-con-GroundControl\" title=\"come-aggiornare-un-applicazione-via-internet-con-GroundControl\" width=\"266\" height=\"500\" class=\"aligncenter size-full wp-image-9477\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2012\/09\/come-aggiornare-un-applicazione-via-internet-con-GroundControl.png 266w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2012\/09\/come-aggiornare-un-applicazione-via-internet-con-GroundControl-159x300.png 159w\" sizes=\"auto, (max-width: 266px) 100vw, 266px\" \/><\/a><br \/>\n<\/center><\/p>\n<h4>Come si usa?<\/h4>\n<p>Per poter utilizzare GronudControl all&#8217;interno dei nostri progetti abbiamo due possibilit\u00e0, la prima \u00e8 quella di utilizzare cocoapods (al quale magari dedicheremo un prossimo articolo) oppure importare il framework AFNetwork e i due soli file che costituiscono GroundControl:<\/p>\n<p><code><br \/>\nNSUserDefaults+GroundControl.h<br \/>\nNSUserDefaults+GroundControl.m<br \/>\n<\/code><\/p>\n<p>Come si pu\u00f2 notare i due file costituiscono una category per la classe NSUserDefaults, che aggiunge alcuni metodi, il pi\u00f9 semplice \u00e8:<\/p>\n<p><code><br \/>\n- (void)registerDefaultsWithURL:(NSURL *)url;<br \/>\n<\/code><\/p>\n<p>che permette appunto di aggiornare NSUserdefault direttamente da un indirizzo web.<\/p>\n<p>Buona programmazione!!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Github \u00e8 una inesauribile fonte di idee e di progetti interessanti, alcuni enormi altri minuscoli. Mentre spulciavo&#8230;<\/p>\n","protected":false},"author":53,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[30],"tags":[1187,800,1190,1189,1188],"class_list":["post-9469","post","type-post","status-publish","format-standard","hentry","category-materiale-open-source","tag-groundcontrol","tag-librerie-ios","tag-librerie-ios-github","tag-librerie-ios-xcode","tag-librerie-opensource"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/9469","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=9469"}],"version-history":[{"count":12,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/9469\/revisions"}],"predecessor-version":[{"id":9483,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/9469\/revisions\/9483"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=9469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=9469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=9469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}