Skip to main content

Le (tristi) novità di XCode 8: come ti smonto le Notifiche Push (e come ripristinarle dopo l’upgrade)

A meno di una settimana dall’articolo precedente, è già tempo per la rubrica #CrApple di tornare alla ribalta per denunciare l’ennesimo passo falso della casa di Cupertino: stavolta parliamo di XCode 8, l’ultima versione del blasonato (da chi?) framework di sviluppo software per iOS e OSX: strumento pressoché obbligato per sviluppare App, rigorosamente mono-piattaforma come la maggior parte delle suite targate Apple.

Una delle grandi innovazioni dell’ultima versione di XCode è data dalla nuova gestione dei cosiddetti Entitlements, i quali non sono altro che un ennesimo file da configurare per impostare – per l’ennesima volta – i permessi e le autorizzazioni che decidiamo di assegnare alla nostra app. Non bastano le impostazioni sui portali Developers Portal e su iTunes Connect, la configurazione dell’App ID, i Certificati di sviluppo e produzione, il Provisioning Profile, il Developer Profile e la Code-Signing Identity, oltre ovviamente alle impostazioni della App contenute nel file info.plist: si sentiva certamente la mancanza degli Entitlements. Di cosa si tratta? Del solito XML di chiavi/valori, ovviamente, compilato (male) automaticamente da XCode al momento del download del Provisioning Profile e quindi modificato (male) automaticamente man mano che lo sviluppatore modifica le impostazioni predefinite del Project e dei Targets della app.

Approfondisci

Come forzare la chiusura (shutdown) di una App iOS in Objective C

Durante lo sviluppo di una app iOS non è insolito che si presenti la necessità di effettuare la chiusura forzata – in inglese, lo shutdown – dell’applicazione: parliamo, per intenderci, del classico pulsante Exit, presente nella maggior parte delle App Android ma generalmente non utilizzato in ambiente iOS, dove si preferisce mandare la App in background e lasciare che sia poi il sistema a gestirne il carico a livello di risorse.

In effetti il sistema iOS non sembra prevedere una funzione che consenta di ottenere in modo programmatico quello che in termine tecnico è noto come graceful shutdown, ovvero una chiusura che non provochi – o rischi di provocare – un vero e proprio crash dell’applicazione: il modo preferibile per “chiudere” una App è simulare la pressione del tasto Home, che provoca per l’appunto l’invio della stessa in background.

Approfondisci

App Store e iTunes Connect: assurdità, stranezze, incubi e deliri targati Apple

Non c’è sistemista, sviluppatore o professionista IT degno di questo nome che non conservi un bel ricordo della Apple delle origini, quella che dominò la scena dei personal computer nei trent’anni che passarono dalla (ri)fondazione dell’azienda (1977) all’uscita sul mercato del primo iPhone (2007): quella che rivoluzionò più volte il mondo dell’informatica con l’introduzione del Macintosh e dell’iMac, del MacBook e del Mac Pro, nonché di molti altri piccoli e grandi capolavori estetico/funzionali come l’iPod; l’avversaria “buona” e amica del consumatore, da contrapporre allo strapotere della “perfida” Microsoft come racconta il suggestivo film TV I Pirati di Silicon Valley, uno dei testi sacri dei cultori della mela e della figura di Steve Jobs.

Al tempo stesso non c’è sistemista, sviluppatore o professionista IT degno di questo nome che non si senta percorrrere da un forte senso di fastidio all’idea di dover lavorare – sia pure saltuariamente – sulle recenti piattaforme Apple, e non a torto: il sistema operativo OSX è una sorta di versione caricaturale di FreeBSD; il framework di sviluppo XCode è sostanzialmente indifendibile; i portali e gli strumenti di pubblicazione e distribuzione a corredo (iTunes Connect, Apple Developers PortalApplication Loader et. al.) fanno acqua da tutte le parti.

Che il comparto software non sia mai stato il cavallo vincente di Apple è del resto cosa nota: l’ultimo prodotto degno di nota è probabilmente Final Cut Pro, limitatamente alle versioni che giravano su Carbon. Eppure, stupisce non poco vedere come una azienda da 580 miliardi di dollari non sia a tutt’oggi in grado di dotare i propri utenti di strumenti di lavoro e sviluppo adeguati. L’imbarazzo che si prova nell’utilizzarli è talmente forte che a tratti viene persino da pensare che possa essere una strategia voluta: un sistema così farraginoso, inefficiente e opaco da poter essere utilizzato con successo soltanto da quelle aziende che possono permettersi di affidare il compito di sbrogliare la matassa a un team di sviluppo dedicato, tagliando fuori il libero professionista, lo sviluppatore occasionale e qualsiasi altra piccola realtà. Una vera e propria contraddizione rispetto alle premesse alla base del primo Apple Store, il quale registrò una enorme affermazione poprio perché diede a chiunque la possibilità di pubblicare il frutto del proprio lavoro con poco sforzo e investimenti contenuti. E’ ancora così? Purtroppo no. Cerchiamo di capire cosa è cambiato e perché.

Approfondisci

Problemi di connessione HTTP per le App compilate con XCode 7 su iOS9 – Come risolvere

Come spesso accade nel variegato – e ben poco retro-compatibile – universo Apple, il rilascio di iOS 9 e XCode 7 ha portato la consueta serie di grattacapi a molti sviluppatori. Stavolta il problema principale è legato all’introduzione della nuova funzionalità denominata Apple Transport Security (ATS per gli amici), che a partire da iOS 9.0 e OSX 10.11 è abilitata di default su tutte le applicazioni compilate con XCode 7 o superiore.

Questa funzionalità, che secondo Apple ha il merito di “migliorare la privacy e l’integrità dei dati delle connessioni tra la app e i web services”, di fatto impedisce qualsiasi connessione HTTP non basata su HTTPS (RFC 2818). Una gioia per lo sviluppatore medio, che non di rado utilizza web service casalinghi installati su web server proprietari o repository multimediali economici (GDrive, Amazon AWS et. al.) privi di certificato SSL.

Approfondisci

Abilitare il download di un file con estensione .IPA tramite IIS

Qualche mese fa ho pubblicato un articolo che descriveva come abilitare il download di un file App Android .apk tramite IIS. In questo articolo spiegheremo lo stesso concetto estendendolo ai file .ipa, ovvero il formato utilizzato per veicolare le App iOS non diffuse tramite l’App Store.

Nello sviluppo di una applicazione iOS capita spesso di trovarsi a fornire al cliente e/o ai beta-tester una URL per scaricare un .IPA  non presente – o non ancora pubblicato – sull’App Store. Sfortunatamente, la maggior parte dei web server (tra cui IIS) non prevedono un MIME-type corrispondente all’estensione .ipa, con il risultato che la URL che punta al suddetto file presenterà un errore 404 – Page Not Found. Per risolvere il problema è sufficiente aggiungere il MIME-type corrispondente ai pacchetti di  applicazione iOS nel segunete modo:

  • Aprite il pannello di gestione IIS.
  • Posizionatevi, nell’elenco a sinistra, sulla entry corrispondente alla configurazione generale di IIS (pt. 1 in figura) così da rendere le modifiche che faremo valide per tutti i siti passati, frequenti e futuri. Nel caso in cui si voglia gestire il MIME-type .ipa limitatamente a un singolo sito, posizionatevi invece sulla entry corrispondente al sito in questione.
  • Fate click sulla icona “MIME Types” nell’elenco di icone che si aprirà a destra. Vi si aprirà un elenco dei MIME-type attualmente supportati.
  • Fate click su “Add…” in alto a destra (pt. 2 in figura) e aggiungete il seguente MIME-type (pt. 3 in figura):
    • Estensione: .ipa (assicuratevi di includere il punto)
    • MIME-type: application/octet-stream

ipa-mime-type-iis

(click sull’immagine per ingrandire)

Inutile dire che questa semplice operazione può essere ripetuta per abilitare il download di file aventi qualsiasi estensione.

Se non utilizzate l’interfaccia di gestione IIS e/o preferite operare direttamente a livello di web.config potete seguire le istruzioni descritte nell’apposita pagina ufficiale relativa alla configurazione di IIS.

EDIT: Nel caso in cui abbiate bisogno di abilitare il download anche per i file per Windows Phone (estensione .xap) vi consiglio di leggere questo articolo.

 

Close