[iOs] Come importare la libreria Google Data Library in un progetto xCode – Esempio con YouTube Service

Il presente articolo costituisce un “upgrade” di quello già scritto su questo blog qualche tempo fa: “[iOS] Un video player nelle nostre app con il MediaPlayer framework e Google Data Library“. A quella data, la Google Data Library (o semplicemente “GData“) in Objective-C era disponibile ed importabile nei nostri progetti xCode come libreria compressa in estensione “.a”.

La GData compressa non dava nessun problema sui progetti compatibili con architettura armv6armv7, ma su armv7s non è più possibile compilarla (restituisce spesso errori del tipo “Symbols not found” su alcune sue classi).

E’ necessario, dunque, installare la libreria GData importando direttamente i suoi sorgenti e compilandoli per tutte le architetture supportate (da armv6 ad armv7s).

Ecco gli step da eseguire:

1. Download della libreria GData con SVN: basta clonare il codice sorgente della libreria dalla repo SVN di Google (http://code.google.com/p/gdata-objectivec-client/):

svn checkout http://gdata-objectivec-client.googlecode.com/svn/trunk/ gdata-objectivec-client-read-only

dove gdata-objectivec-client-read-only è la cartella in cui volete clonare la lib.

2. Trascinare il progetto GData.xcodeproj nel progetto xCode: occorre trascinare il progetto GData.xcodeproj, presente nella cartella Sources della libreria GData scaricata al punto 1, direttamente nel vostro progetto (senza checkare l’opzione “Copy items into destination group’s folder (if needed)“):

GData Installazione in xCode - Step 2

3. Importazione delle librerie e delle dipendenze nel progetto xCode: spostatevi nella scheda Build Phases del target di progetto ed importate le seguenti librerie:

  • in Target Dependencies, aggiungete la libreria GDataTouchStaticLib
  • in Link Binary With Libraries, aggiungete la libreria libGDataTouchStaticLib.a
  • sempre in Link Binary With Libraries, aggiungete i framework: Security.frameworkSystemConfiguration.framework

 GData Installazione in xCode - Step 3 GData Installazione in xCode - Step 3GData Installazione in xCode - Step 3

4. Configurazione dei parametri e dell’header path: spostatevi nella scheda Build Settings del target di progetto e configurare i seguenti parametri e path:

  • sotto la voce “Other Linker Flags“, inserire i seguenti parametri: 
    • -ObjC
    • -lxml2
    • -all_load

GData Installazione xCode - Step 4

  •  Sotto la voce Header Search Paths, inserire il valore /usr/include/libxml2

GData Installazione xCode - Step 4

5. Rimozione delle API di GData non necessarie: se nel vostro progetto vi interessa utilizzare soltanto determinate funzionalità offerte dalla libreria GData (per esempio, CalendarYoutube), occorre effettuare anche la seguente configurazione:

  • cliccate sulla root del progetto GData importato in xCode e selezionate il target GDataTouchStaticLib. In “Build Setting“, sotto la voce “Other C Flags” (sia per Release che per Debug), inserite i seguenti parametri:
    • -DGDATA_REQUIRE_SERVICE_INCLUDES=1
    • -DGDATA_INCLUDE_CALENDAR_SERVICE=1 (se vi interessa utilizzare Google Calendar)
    • -DGDATA_INCLUDE_YOUTUBE_SERVICE=1 (se volete interfacciarvi con Youtube)
    • -DGDATA_INCLUDE_CONTACTS_SERVICE=1 (per utilizzare le Contact API)

GData Installazione xCode - Step 5

 

6. Compilazione e importazione degli header di GData nel progetto: dopo aver eseguito i precedenti step, compilate il vostro progetto e, se non vi sono errori, andate nell’Organizer di xCode, nella scheda Projects. Qui vi trovate un link per accedere alla cartella Derived Data con il codice compilato del vostro progetto. Nella directory Build/Products/Debug-iphonesimulator/Product troverete la cartella Header in cui sono presenti le interfacce di GData. Dovete trascinare tutta la cartella Header nel vostro progetto.

GData Installazione xCode - Step 6 GData Installazione xCode - Step 6

 

NOTA. Se all’atto del rilascio (distribuzione su Apple Store o “ad hoc”), vi ritrovate un file .xarchive, invece, di un .app/.ipa, eseguite i seguenti step:

  • Eliminate tutti i target di GData (click destro sul progetto GData.xcodeproj)
  • Settate la voce SKYP INSTALL a YES in “Build Settings” del target di GData.

 

7. Utilizzo della libreria GData: se i passi precedenti vengono eseguiti correttamente e senza errori, potete utilizzare le API di Google Data Library.

Come prova, importate la seguente riga in una vostra classe. Se non vi sono errori di compilazione, la configurazione di GData è stata eseguita correttamente.

#import "GData.h"

Vi allego un progettino di esempio in cui mi interfaccio con Youtube per scaricare la lista di video da un canale. La libreria GData qui è stata inserita in una cartella Submodules e potete importarla trascinandola da lì. NOTA. Occorre ripetere la procedura riportata sopra per far riconoscere al progetto la GData lib, altrimenti vi ritrovete un errore in compilazione: “ld: library not found for -lGDataTouchStaticLib“.

https://github.com/fficetola/GDataLibTest

——————

Riferimenti utili:

 

Google Developer Group (GDG) Lazio-Abruzzo

Propongo agli sviluppatori particolarmente spinti verso l’innovazione tecnologica, questa interessante iniziativa:

Google Developer Group (GDG) Lazio-Abruzzo – Idee e tecniche per sviluppatori interessati a tecnologie innovative

Google-Developers

Cosa significa GDG L-Ab?
gdg-labGoogle Developers Group Lazio Abruzzo. In pratica persone a Roma e dintorni che fabbricano software e si inventano applicazioni Web e Mobile (non solo Google) … e che si divertono a farlo.Gente che cerca innovazione per creare ulteriore innovazione, non solo tecnologica, ma anche sociale.I GDG sono in tutta Italia e nel Mondo, sono indipendenti e liberi ma aiutati e coordinati da
Google.

Ecco i siti di riferimento:

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2013/01/24/google-developer-group-gdg-lazio-abruzzo/.

[iOS] Inserire le mappe e la localizzazione con MapKit e CoreLocation Framework

Sicuramente sapete che Apple è arrivata ai ferri corti, da un bel pezzo, con Google e ha comunicato di non includere neanche YouTube come app preinstallata sul melafonino:

Addirittura Apple ha lanciato la sfida a Google Maps con un’app che dà anche informazioni sul traffico e fornisce un sistema di navigazione in 3D, che dovrebbe uscire su iOS 6.

Tuttavia, per chi volesse ad inserire una mappa o indicazioni di geolocalizzazione nelle proprie app, in attesa delle API ufficiali del nuovo sistema di navigazione Apple succitato, vi riporto un esempio su come utilizzare MapKit e CoreLocation Framework.

Nel progetto di esempio (che vi allego alla fine di questo articolo), trovate una view con una mappa centrata su un punto GPS (latitudine, longitudine) definito (e segnalato da un marker). Vi è possibilità di definire diverse modalità di visualizzazioni della mappa (normale, satellitare, ibrida) e la possibilità di segnalare il percorso (a piedi o in macchina) dal punto GPS in cui si trova il vostro device e il luogo di arrivo preimpostato. Inoltre, viene calcolato anche il tempo stimato e i metri da percorrere (a piedi o in macchina) dall’origine alla destinazione.

Ecco la “lista della spesa” delle librerie/framework che ci servono:

  • RegexKitLite: è una libreria di supporto che permette di utilizzare le espressioni regolari (regex) – Lightweight Objective-C Regular Expressions for Mac OS X using the ICU Library
  • MapKit Framework: fornisce le API per il download delle mappe, lo zoom e l’inserimento delle annotazioni (marker)
  • CoreLocation Framework: permette di determinare la posizione GPS corrente e la direzione spaziale del device

[iOS] Un video player nelle nostre app con il MediaPlayer framework e Google Data Library

Vi spiego come realizzare un video player da inserire nelle nostre app che vi permetta di visualizzare i video in vari formati (mp4 e avi, i formati che ho provato io) oppure di prelevarli da un canale youtube e listarli in una UITableView. Quindi, divido questo tutorial in due parti:

Alla fine di questo tutorial, trovate in allegato l’archivio con il progetto di esempio che verrà qui spiegato, con una tab bar application con due viste in cui vengono realizzati i due video player di esempio.

Continua la lettura

Google Knowledge Graph: verso la nuova generazione dei motori di ricerca

Google ha un graph che la sa lunga (tratto da PuntoInformatico.it)

Knowlegde Graph è la nuova proposta di Mountain View per il suo search. Non è semantica, ma allarga il numero di informazioni fornite cercando di indovinare il vero significato di una ricerca

Si chiama Knowledge Graph il nuovo progetto di Google: si tratta di un ulteriore strumento a supporto del suo motore di ricerca e che dovrebbe servire a “scoprire nuove informazioni velocemente e facilmente”. Per “graph” Google intende un “modello intelligente in grado di capire le entità del mondo reale e le loro relazioni le une con le altre: fatti, dunque, non stringhe casuali di caratteri”.

Con Knowledge Graph, per il momento disponibile solo negli Stati Uniti ma già con opzioni specifiche per l’utilizzo mobile, Google intende dunque affinare le ricerche finora effettuate solo sulla base delle citazioni delle parole chiave e con i risultati che sono organizzati in base all’importanza stabilità dall’algoritmo PageRank.

Mountain View non arriva ad utilizzare l’aggettivo “semantico”, ma descrive semplicemente il tentativo di mettere in relazione la chiave di ricerca inserita dagli utenti (chiamata “oggetto”) con una selezione di concetti effettuata a monte: parla di circa 3,5 miliardi di diversi attributi impiegati finora per questa organizzazione, per il momento concentrata su 500 milioni di “oggetti”.

Così Knowledge Graph, che Google definisce “il primo passo verso la nuova generazione dei motori di ricerca”, promette di portare informazioni che sono rilevanti rispetto alla parola chiave, pur non citandola direttamente. Se si cercano informazioni su un pittore rinascimentale, dice BigG, il sistema restituirà risorse utili a documentarsi a tutto tondo sul movimento artistico, altri nomi famosi del periodo, tecniche di pittura ecc.

Graficamente Knowledge Graph segue una strada non dissimile da quella imboccata dal nuovo redesign di Bing: offre una colonna di risultati che occupa la fascia destra della pagina affiancandosi ai risultati tradizionali ed opzioni che permettono di affinare la ricerca originale definendo meglio l’oggetto: l’esempio che fa Mountain View è quello del “Taj Mahal”, parola che può riferirsi al monumento, ad un casinò, ad un musicista o ad un ristorante indiano nelle vicinanze.

Sempre sulla destra troveranno poi spazio le informazioni ritenute fondamentali sull’oggetto, organizzate in una sorta di specchietto in stile Wikipedia, selezionate in base alle precedenti ricerche aggregate compiute sull’argomento da altri utenti. Inoltre, accanto a queste trovano spazio curiosità e fatti che potrebbero in ogni caso risultare interessanti per l’utente perché, appunto, meno noti.

Dietro le quinte, in pratica, Knowledge Graph si appoggia a dati raccolti negli anni e su quanto finora cercato dagli utenti: una questione che ha naturalmente spinto gli osservatori a continuarsi a chiedere fin dove può arrivare l’occhio indiscreto di Google e cosa impedisce di fare invece il vincolo alla privacy degli utenti, anche se i loro dati vengono trattati in maniera aggregata.

Google, d’altronde, nel frattempo ha aumentato i dati raccolti e indicizzati dalle sue applicazioni web-crawling, i suoi bot: secondo lo sviluppatore canadese Alex Pankratov questi hanno ora imparato a comportarsi “più da umani” facendo girare anche i contenuti JavaScript e arrivando così ad esplorare anche i contenuti dinamici delle pagine.

Claudio Tamburrino

Informazioni dettagliate le trovate sul sito di Google:

http://www.google.com/insidesearch/features/search/knowledge.html