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.

(altro…)

 

Push Notifications Reset: come resettare le notifiche push su iPhone e iPad

EDIT: Se il problema con le Notifiche Push si è verificato in conseguenza dell’aggiornamento a XCode 8, leggi questo articolo per risolvere.

Non è passato molto tempo dal lungo articolo sulle assurdità degli strumenti di sviluppo Apple e relativi portali, il quale – al di là di un paio di polemiche portate avanti da qualche irriducibile fanboy Apple – è stato particolarmente apprezzato dai nostri lettori: è a loro che dedichiamo questo secondo approfondimento sulle carenze funzionali del sistema ideato dall’azienda di Cupertino per la pubblicazione e distribuzione delle App: oggi, per la gioia di molti, parleremo di notifiche push. Prima di affrontare l’argomento è il caso di chiedersi se non sarebbe opportuno creare una rubrica apposita per questo tipo di post. Butto lì alcune idee per un possibile titolo:

  • I Bachi della Mela
  • Torsoli di Mela
  • CrApple (questo funziona anche come hashtag)

Quale vi piace di più? Se avete qualche altro suggerimento, lasciatelo nei commenti: nel frattempo, veniamo al tema del giorno.

(altro…)

 

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é.

(altro…)

 

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.

(altro…)

 

Come aggiornare il proprio CocoaPod e vivere felici

CocoaPod è un framework meraviglioso ma, diciamocelo pure, sul piano della documentazione fa acqua da tutte le parti, nonostante gli sviluppatori abbiano dedicato un intero sito web alla guida all’uso. Cos’è che non funziona esattamente? Il linguaggio utilizzato, la sintassi proprietaria estremamente contorta, gli strumenti di comando altamente user-unfriendly, l’incapacità di fornire degli esempi reali… un pò tutte queste cose insieme, unite alla intrinseca difficoltà che molti sviluppatori incontrano nel mettere d’accordo ben tre realtà: l’ambiente di sviluppo XCode, il repository GitHub e, per l’appunto, l’interfaccia di comandi pod . Non c’è niente di complicato, intendiamoci: il problema è che, almeno nel mio caso, si tende a dimenticarsi sistematicamente cosa bisogna fare.

Per risolvere questo problema ho provato a buttare giù un mini-elenco di cose da fare: di certo farà risparmiare qualche minuto a me, magari anche ad altri.

  • Accendete il Mac (o fate partire la vostra macchina virtuale).
  • Effettuate un Pull del vostro progetto dal repository GitHub o BitBucket sul vostro repository locale, giusto per assicurarvi di acquisire ogni possibile cambiamento effettuato direttamente dal web (merge di qualche pull request che avete accettato, etc.).
  • Aprite il progetto con XCode e modificate il codice sorgente sui vostri file locali, effettuando zero, uno o più Commit sul vostro repository locale a seconda di come siete abituati a lavorare.
  • Quando siete pronti, la prima cosa da fare è aprire il file .podspec ed aggiornarlo incrementando la versione della libreria modificando il valore numerico del parametro   s.version , ad esempio da 1.11 a 1.12.
  • Effettuate un test della vostra nuova build lanciando un prompt dei comandi, navigando fino alla cartella principale del vostro Pod e digitando: pod lib lint
  • Effettuate un ultimo Commit sul vostro repository locale includendo tutti gli ultimi cambiamenti, ivi incluso il cambio di versione effettuato nel file .podspec.
  • Al termine del Commit, assegnate al suddetto un Tag identico al numero di versione – lo stesso che avete specificato nel parametro   s.version  (1.12 nel nostro esempio).
  • Effettuate un Sync/Push sul vostro repository GitHub.
  • Lanciate nuovamente un prompt dei comandi, recatevi nella cartella principale del vostro Pod e digitate: pod trunk push NAME.podspec

Bingo.

Se solo potessi ricordarmi tutto questo per più di 3 ore…