jueves, 29 de enero de 2015

Añadir un archivo .pch en Xcode 6

Los que hayáis empezado a programar en Xcode 6 os habréis percatado de que a la hora de crear un proyecto nuevo ya no se genera un archivo de pre compilación de cabecera llamado prefix.pch. Estos archivos se compilaban y almacenaban en la caché durante el inicio de la compilación del proyecto añadiendo a todas las clases del proyecto las instrucciones que en prefix.pch se encontrasen. Esto era realmente útil para añadir algunas macros y constantes que normalmente utilizamos en todas nuestras clases. Pues bien para añadir nuestro archivo de precompilación de cabeceras debemos seguir los siguientes pasos.

1. Lo primero es crearlo. Para ello seguimos el siguiente proceso: NewFile > iOS > Other > PCH File

2. A continuación nombramos el archivo de la siguiente manera nombre_del_proyecto-Prefix.pch.

3. Vamos a la sección Project > Build Settings y buscamos User Header Search Paths.

4. Añadimos la ruta del archivo .pch $(SRCROOT)/nombre_del_proyecto-Prefix.pch 

5. Limpiamos y volvemos a ejecutar el proyecto.

Ahora volvemos a tener nuestro archivo .pch operativo.


lunes, 26 de enero de 2015

Breedme App. Tu red social para mascotas hecha App.

Una de las últimas aplicaciones que hemos desarrollado en exoglas es la red social para mascotas Breedme. Esta red social nos permite comprar, vender, dar en adopción, adoptar, cruzar o simplemente conocer las diferentes mascotas que hay en toda España.


Para realizar estas operaciones es necesario un registro, que nunca será utilizado para fines distintos a las necesidades de la App. Aún así, la app está preparada para acceder a ella mediante la opción de invitado. Con esta opción podremos conocer todas las mascotas disponibles, y si nos interesa alguna o simplemente nos gusta la App, podremos registrarnos a posteriori.


El encargo ha sido realizado por una empresa británica Orlanweb. Creemos que han tenido una magnífica idea y les deseamos mucha suerte con este ilusionante proyecto.


La App está disponible tanto para dispositivos iOS como para dispositivos Android. Aquí os dejo los enlace de descarga, así como sus diferentes enlaces a redes sociales.

AppStore https://itunes.apple.com/es/app/breedme/id933172692?mt=8
GooglePlay https://play.google.com/store/apps/details?id=com.exoglas.orlanweb.breedme
Twitter https://twitter.com/BreedmeApp
Facebook https://www.facebook.com/pages/Breedme/726668337397357
Instagram http://instagram.com/breedmeapp




lunes, 19 de enero de 2015

Integración de HealthKit en iOS 8

Una de las novedades que nos trajo iOS8 fue el framework de HealthKit. Este framework nos permite la integración y la interacción entre los datos de nuestra App y la App nativa de Salud. Para integrarlo en nuestra App tendremos que seguir los siguientes pasos:


  1. Debemos habilitar el uso del framework desde el portal de desarrollo https://developer.apple.com


     2. En nuestro proyecto en la sección "Capabilities" debemos tener activo HealtKit


     3. Comprobamos si el dispositivo tiene disponible el HelathKit y configuramos los parámetros de lectura y escritura que queremos utilizar con las siguientes líneas de código

if ([HKHealthStore isHealthDataAvailable])
    {
        NSSet *writeDataTypes = [self dataTypesToWrite];
        NSSet *readDataTypes = [self dataTypesToRead];
    
        healthStore = [[HKHealthStore alloc] init];
    
        [self.healthStore requestAuthorizationToShareTypes:writeDataTypes readTypes:readDataTypes completion:^(BOOL success, NSError *error) {
        if (!success)
        {
            NSLog(@"%@",error);
            return;
        }
        if(error)
        {
            NSLog(@"%@",error.description);
        }
        
        dispatch_async(dispatch_get_main_queue(), ^{
            // Aquí podremos utilizar los datos que hemos obtenido
            
        });
        }];
    }
    else
    {
        NSLog(@"Health Kit Not authorized");
    }

     4. En el código anterior vemos las llamadas a los métodos dataTypesToWrite y dataTypesToRead . En estos métodos configuramos los parámetros de Healthkit que utilizaremos. Si por ejemplo sólo necesitamos la altura y el peso, los métodos deberían contener

#pragma mark - HealthKit Permissions

- (NSSet *)dataTypesToWrite
{
    HKQuantityType *heightType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight];
    HKQuantityType *weightType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass];
    
    return [NSSet setWithObjects:heightType,weightType,nil];
}

- (NSSet *)dataTypesToRead
{
    HKQuantityType *heightType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight];
    HKQuantityType *weightType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass];
    

    
    return [NSSet setWithObjects: heightType, weightType, nil];

}

A partir de aquí, ya podríamos integrar HealthKit en nuestra App. Aunque lamentablemente, si queremos publicar nuestra App con Healthkit, debemos tener una url por cada idioma que contenga nuestra app con una política de privacidad.

martes, 13 de enero de 2015

Localización en iOS 8

Como cada enero, me propongo continuar con el blog un año más. En este artículo voy a explicar cómo habilitar la localización en iOS 8. Si tenéis un desarrollo anterior a iOS 8 y ejecutáis vuestra App, os daréis cuenta de que lamentablemente no toma vuestra localización.

Para solventarlo tendremos que seguir los pasos siguientes:

1- Añadir estas dos líneas de código

if(([[[ UIDevice currentDevice ] systemVersion ] floatValue ] >= 8.0 ))
        [manager requestWhenInUseAuthorization]; //Sólo se utilizará durante el uso de la App

o las siguientes para el uso incluido en segundo plano

if(([[[ UIDevice currentDevice ] systemVersion ] floatValue ] >= 8.0 ))
        [manager requestAlwaysAuthorization];

donde el manager es 

manager = [[CLLocationManager alloc] init];

 2- Tendremos que añadir una fila en el .plist de la aplicación cuya key sea NSLocationWhenInUseUsageDescription de tipo String y cuyo valor sea el texto que acompañe al mensaje de autorización de localización.