iTablo è ora disponibile anche in versione per iPhone (e, chiaramente, come Universal Binary per iPhone/iPad).
Vista la richiesta di una versione anche per il terminale più diffuso di casa Apple, abbiamo sviluppato una versione del nostro lettore di PDF con contenuti multimediali anche per iPhone. Le caratteristiche sono le stesse della versione iPad, con una grafica diversa e più adatta alle dimensioni ridotte del display.
In più, non volendo farci mancare nulla, abbiamo anche aggiunto il supporto per il Newsstand Kit. E’ ora possibile far apparire la propria app nel Newsstand ed inviare aggiornamenti automatici agli utenti che l’hanno scaricata.
A breve andrà online anche la nuova versione del nostro iTablo PDF+ Viewer che è la versione gratuita del nostro lettore.

Ultimamente mi sono dovuto scontrare, per l’ennesima volta, nel delirio del cambio di orientamento dei device iOS. Per quanto in Apple si siano dati da fare per semplificare la vita agli sviluppatori, questo tema è ancora un buco nero. Ci sono diversi sistemi per gestire il cambio di orientamento, di cui uno
Chiaramente, il mio obiettivo è di scrivere meno codice possibile, utilizzare Interface Builder per permettere ai designer di modificare la geometria delle interfacce senza dover intervenire sul codice, ridurre al minimo i calcoli delle posizioni degli elementi all’interno dei controller.ufficiale e presentato da Apple come esempio sul sito developer. Il problema è che, per quanto sia ufficiale, non soddisfa le mie esigenze. Oltre alla rotazione, ho anche il problema di dover presentare interfacce diverse a seconda dell’orientamento e del device (iPhone o iPad).
Alla fine ho optato per un sistema con un UIViewController di base da cui derivano i vari controller portrait e landscape. I controller sono tutti agganciati ad un UINavigationController che si prende cura di mandare i messaggi di willRotate e didRotate ai vari controller collegati senza che dobbiamo gestirceli noi a mano.
Il controller di base contiene anche tutti gli outlet che vengono collegati in IB agli oggetti disegnati nell’interfaccia, così possiamo tenere il codice di gestione di azioni e interazione con gli oggetti al minimo.
Per chi volesse vedere come funziona questo sistema, ho aperto un repository su GitHub chiamato RotationExample
E’ da un po’ che volevo scrivere un paio di righe riguardo iTablo, la soluzione che abbiamo sviluppato per la pubblicazione di riviste e cataloghi su iPad. Qualcuno, probabilmente, avrà già letto qualcosa nei miei post di qualche mese fa. Per chi non sapesse di cosa sto parlando, iTablo è il nome che abbiamo dato a questa soluzione che è composta da un lettore (una app per iPad), un designer (un’applicazione desktop per OS X e Windows) ed una serie di servizi accessori per l’hosting dei contenuti. A che serve? A pubblicare dei PDF arricchiti da elementi multimediali fondamentalmente.
Rispetto agli esordi di un anno fa, il prodotto si è decisamente evoluto. Non sto qui a snocciolare i dettagli.. per quelli c’è il sito (per ora in lingua d’Albione, ma da metà settembre sarà anche in Italiano): http://www.itablo.com/
Magari in un prossimo post parlerò un po’ della tecnologia che sta dietro ad iTablo. Per ora mi limito a dire che sono parecchio orgoglioso del lavoro svolto dal team che lo ha concepito e portato avanti. E sono contento di poter dire di aver trovato un ottimo partner per la commercializzazione di iTablo. Infatti, fin da ora è possibile acquistare iTablo tramite Graphiland, azienda leader nella distribuzione di prodotti per l’editoria. La scheda del prodotto ed il listino sono reperibili qui: scheda di iTablo
Per chi, invece, volesse saperne di più, i signori di Graphiland hanno organizzato una serie di seminari per il mese di Settembre in cui il qui presente mostrerà come trasformare le proprie pubblicazioni cartacee in contenuti multimediali interattivi consultabili su iPad. Qui potete vedere il calendario. Iscrivetevi e non ve ne pentirete! Mi raccomando, nel caso fatemi sapere chi siete e che arrivate da qui!
Categories: Blog, Tecnologia Tags: altralogica, editoria, grafica, graphiland, ios, ipad, iphone, itablo, multimedia, pdf, technosolutions, xcode
Un grazie di cuore ai signori di BoxedIce che, involontariamente, mi hanno fornito la soluzione al problema di capire come esportare i certificati corretti per l’utilizzo in un server per le notifiche push di iOS. Riporto qui sotto i passaggi essenziali:
Certificates
The first thing you need is your Push certificates. These identify you when communicating with APNS over SSL.
Generating the Apple Push Notification SSL certificate on Mac:
- Log in to the iPhone Developer Connection Portal and click App IDs
- Ensure you have created an App ID without a wildcard. Wildcard IDs cannot use the push notification service. For example, our iPhone application ID looks something like
AB123346CD.com.serverdensity.iphone
- Click Configure next to your App ID and then click the button to generate a Push Notification certificate. A wizard will appear guiding you through the steps to generate a signing authority and then upload it to the portal, then download the newly generated certificate. This step is also covered in the Apple documentation.
- Import your
aps_developer_identity.cer into your Keychain by double clicking the.cer file.
- Launch Keychain Assistant from your local Mac and from the login keychain, filter by the Certificates category. You will see an expandable option called “Apple Development Push Services”
- Expand this option then right click on “Apple Development Push Services” > Export “Apple Development Push Services ID123″. Save this as apns-dev-cert.p12 file somewhere you can access it.
- Do the same again for the “Private Key” that was revealed when you expanded “Apple Development Push Services” ensuring you save it as apns-dev-key.p12 file.
Come sempre sono incappato in un problema di quelli che saltano fuori casualmente durante lo sviluppo. Sono mesi che utilizzo una mia libreria che, a sua volta, utilizza la ZipArchive. Di punto in bianco ha cominciato ad apparire questo errore:
___gxx_personality_v0$non_lazy_ptr in xxxxxLibrary (ZipArchive.o)
Dopo un pò di ricerche scopro che XCode per qualche motivo non utilizza g++ ma gcc per compilare le librerie. Il trucco sta nel rinominare ZipArchive.mm in ZipArchive.m .. perchè per qualche motivo così cambia il compilatore che utilizza.. mah.. XCode non smette mai di stupirmi.
Per maggiori info: http://code.google.com/p/ziparchive/issues/detail?id=4
Il tempo è tiranno e il blog arriva sempre per ultimo. Visto che ogni tanto qualcuno passa di qua, ho pensato di mettere anche qui un annuncio di lavoro. La mia azienda sta cercando dei programmatori con esperienza n Objective-C, specialmente in Cocoa Touch per lo sviluppo di applicazioni iPhone ed iPad.
Altralogica è un azienda con sede a Gorle in provincia di Bergamo. Attualmente stiamo portando avanti parallelamente lo sviluppo di un prodotto dedicato al mercato editoriale (in codice xPad) e tutta una serie di altre applicazioni proprietarie e per conto terzi.
Cerchiamo sia figure professionali che hanno già una certa esperienza consolidata nel settore, sia ragazzi anche alle prime armi che hanno magari scritto la loro prima applicazione per iPhone o che hanno una passione per i videogiochi e per i device mobile ed una preparazione per quanto riguarda linguaggi come C, C++, Java, C#.
Per chi studia abbiamo a disposizione anche dei posti per stagisti, un’occasione per infilare il naso in un mondo che sta diventando sempre più interessante di giorno in giorno.
Per un contatto lasciatemi un commento con il vostro indirizzo email o numero di telefonoqui, oppure scrivetemi a iphone@altralogica.it

Splash screen di iChe
Ed anche la nostra nuova applicazione, iChe, è online sull’App Store da oggi!
Si tratta di una raccolta di informazioni sulla figura di Ernesto Che Guevar: la biografia, i suoi discorsi (testo e audio) ed i video storici.
Ci sono già un pò di recensioni in giro per la rete a quanto pare:
iSpazio
iPhone Italia
Tanto per cambiare sono inciampato in un problema durante lo sviluppo di un gioco su iPhone. In pratica ho la necessità di caricare un’immagine da utilizzare come texture da un sito web e non dal bundle dell’applicazione.
Cocos2d non mette a disposizione dei metodi per caricare direttamente l’immagine come e fosse una texture qualsiasi. Ma c’è un modo per circumnavigare il problema:
NSString *url = [NSString stringWithString:@"http://www.blabla.com/myimage.png"];
Texture2D *tex;
UIImage * img = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];
if (img) {
tex = [[Texture2D alloc] initWithImage:img];
}
A questo punto possiamo passare la texture in pasto allo sprite o a qualsiasi altro oggetto necessiti l’immagine che abbiamo appena caricato. Facile ed indolore.
Sono contento di poter finalmente annunciare che Il Poeta è disponibile sull’App Store di Apple al modico prezzo di 0,79 Euro!
Alla fine ce la siamo cavata con 10 giorni da quando abbiamo mandato il gioco alla Apple al momento in cui è andato online sullo Store. Pensavo peggio, soprattutto visto che siamo sotto le feste.
Vi lascio con lo screenshot qua di fianco che è ben augurante!
Giuseppe Migliorino di iPhoneItalia ha appena pubblicato un’anteprima di “Il Poeta”. Vi invito ad andare a leggerla, ovviamente
Qui: http://www.iphoneitalia.com/il-poeta-la-recensione-in-anteprima-di-iphoneitalia-73366.html