viernes, 28 de junio de 2013

Clases sin ARC en un proyecto ARC.

No hace mucho tiempo, en el desarrollo para iOS, los desarrolladores debíamos tener el control de la memoria de los objetos creados. Pese al rechazo inicial de algunos desarrolladores (yo me incluía) la experiencia me ha demostrado que pese a conseguir dominar la gestión de la memoria en mis Apps, desde que migré a ARC, mis preocupaciones han disminuido. Aún así, hay una gran cantidad de clases y códigos que ya tenía creados y por cualquier motivo no me interesaba migrar a ARC. Si quisiera incluir esos códigos en un proyecto ARC y los ejecutase me aparecerían los siguientes errores.



Para solucionar este problema, basta con añadir la instrucción -fno-objc-arc, en el archivo de implementación que deseemos que no compile con ARC, como muestro en la siguiente imagen.


Ahora nuestro código se ejecutará sin ningún problema.


jueves, 27 de junio de 2013

Icono sin efecto de brillo.

Sólo hay que echar un vistazo a la pantalla de nuestro dispositivo iOS para ver como algunos iconos de aplicaciones aparecen con un efecto de brillo y otros no. Este efecto lo añade Apple por defecto y para eliminarlo tenemos que seguir los siguientes pasos:

1. Seleccionamos el target de nuestro proyecto, y pulsamos sobre la pestaña de info. Añadimos al plist que nos aparece una fila.


2. Esta fila será de tipo booleano con la key Icon already includes gloss effects y el value YES.



3. Y si volvemos a ejecutar el proyecto podremos ver el icono de nuestra App sin el brillo por defecto.

Icono con brillo
Icono con efecto brillo

Icono sin efecto brillo


NOTA: es recomendable eliminar la App si ya está instalada antes de ejecutar para asegurarnos de que pinta correctamente el icono.

miércoles, 26 de junio de 2013

Controladores nativos de Facebook y Twitter en iOS 6.x. Social framework segunda parte.

La integración de este controlador  ha sido muy sencilla (ver primera parte). Pero tanto facebook como Twitter nos ofrecen otra serie de funciones como seguir, compartir, etc. Para ello necesitaremos acceder a los datos de nuestra cuenta desde nuestras aplicaciones nativas sociales. Seguiremos los siguientes pasos:

1. Adjuntamos el framework Accounts a nuestro proyecto.



2. Importamos las cabeceras a nuestro archivo de cabecera.

#import <Accounts/Accounts.h>

3. Añadimos el siguiente código en el método donde queramos implementar la función (en este caso se toma como ejemplo el "follow" de Twitter).

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
    {
        ACAccountStore *accountStore = [[ACAccountStore alloc] init];
        ACAccountType *twitterAccountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
        [accountStore requestAccessToAccountsWithType:twitterAccountType options:nil completion:^(BOOL granted, NSError *error)
        {
            if(granted)
            {
                NSArray *accountsArray = [accountStore accountsWithAccountType:twitterAccountType];
                
                // En caso de tener más de una cuenta, aquí se debería integrar el código
                if ([accountsArray count] > 0)
                {
                    ACAccount *twitterAccount = [accountsArray objectAtIndex:0];
                    
                    NSMutableDictionary *twitterApiDictionary = [[NSMutableDictionary alloc] init];
                    [twitterApiDictionary setValue:@"OhMyAppss" forKey:@"screen_name"];
                    [twitterApiDictionary setValue:@"true" forKey:@"follow"];
                    
                    SLRequest *twitterRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"http://api.twitter.com/1/friendships/create.json"] parameters:twitterApiDictionary];
                         
                    [twitterRequest setAccount:twitterAccount];
                         
                    [twitterRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
                    {
                        NSLog(@"%@",[NSString stringWithFormat:@"HTTP response status: %i", [urlResponse statusCode]]);

                 //Aquí se deben estudiar los posibles casos de error

                    }];
                }
            }
        }];
    }

Para conocer todas las funciones que nos ofrecen Twitter y Facebook deberemos consultar su documentación: 



martes, 25 de junio de 2013

Controladores nativos de Facebook y Twitter en iOS 6.x. Social framework primera parte.

  Una de las novedades que trajo consigo iOS 6.0 fue el Social framework. Con él, podemos incluir el controlador nativo de redes sociales, de una manera muy sencilla. Aquellos que nos tuvimos que pelear con los SDKs de Facebook y Twitter, estaremos eternamente agradecidos. Los pasos para dicha integración son los siguientes:

1.  Añadir la librería Social.framework a nuestro proyecto. No olvidéis marcarlo como "optional" si la aplicación está habilitada para dispositivos anteriores a iOS 6.0.



2. Importamos las cabeceras del framework a nuestro archivo de cabecera.

#import <Social/Social.h>
3. Añadimos el siguiente código al método que ejecute la acción de social media deseada:


if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
    {
        SLComposeViewController *twitterVC = [SLComposeViewController  composeViewControllerForServiceType:SLServiceTypeTwitter];
    
        [twitterVC setInitialText:NSLocalizedString(@"App creada por Oh My Apps!", nil)];
        [twitterVC setTitle:@"Oh My Apps!"];
        [twitterVC addImage:[UIImage imageNamed:@"oma_icon"]];
        [twitterVC addURL:[NSURL URLWithString:@"http://www.ohmyapps.es"]];
    
        [self presentViewController:twitterVC animated:YES completion:nil];
    }


Podremos utilizar el controlador para Twitter con el tipo SLServiceTypeTwitter, para facebook con el tipo SLServiceTypeFacebook y para la red social china Seibo con el tipo SLServiceTypeSinaWeibo.

Al ejecutar nos deberá aparecer el controlador nativo.













miércoles, 27 de julio de 2011

Requisitos para desarrollar aplicaciones iOS. SDK.

Aquí os dejo el borrador de un capítulo de mi PFC. En él, pretendo hacer una descripción de las herramientas necesarias para desarrollar nuestras aplicaciones para iOS. Espero que sea de utilidad.

Tutorial_SDK

miércoles, 20 de julio de 2011

Trans UPCT



Mi segunda aplicación, TransUPCT está destinada a todos aquellos estudiantes que viven en Murcia y estudian en la Universidad Politécnica de Cartagena. Con ella se tendrán que olvidar del engorro que supone ir con el papelito de horarios de autobuses por un lado y con el de trenes por el otro. Iré ampliándola para que la gente de los pueblos y ciudades de alrededor también tengan sus horarios. Esta aplicación también puede ser descargada por los estudiantes extranjeros o ERASMUS ya que está disponible en inglés.


lunes, 18 de julio de 2011

PadelPhone



Ya está disponible en el App Store de iTunes la primera aplicación diseñada y desarrollada exclusivamente por mí, PadelPhone. Con ella pretendo que la gente que practica el pádel pueda reservar pista sin necesidad de un ordenador. También que conozcan nuevos clubes de pádel dependiendo de su localización así como tener una agenda de contactos de compañeros de fatigas. Poco a poco iré añadiendo nuevas funcionalidades a la aplicación. Próximamente estará disponible www.padelphone.com. También nos puedes seguir a través de facebook.