Confía tu proyecto a un equipo profesional

  • - Gran experiencia en el desarrollo de aplicaciones para dispositivos móviles.
  • - Ocupamos los primeros puestos en el ranking de las diferentes Stores.
  • - Reconocidos y avalados por grandes clientes en multitud de proyectos.
  • - Empresa innovadora integrada por un equipo joven.


Protocolo SOAP en iOS.

Share

Una de las funcionalidades más atractivas de las aplicaciones para iOS es poder tener la información actualizada en cualquier momento a través de Internet.

Para mantener la aplicación actualizada se puede optar para varios métodos de comunicación con un servidor, y uno de ellos es el protocolo SOAP.

En este post te vamos a mostrar un ejemplo de cómo se trabaja con servicios SOAP (suponiendo de que ya tienes los conocimientos básicos sobre el protocolo SOAP).

Aunque el iOS tiene ya API's preparadas para el SOAP , personalmente he encontrado más cómodo usar una libreria externa para usar SOAP o Web Services . La librería se llama ASIHTTPRequest.

Para usar dicha librería, descárgate las fuentes desde http://github.com/pokeb/asi-http-request/tarball/master e importala a tu proyecto de XCode.

Si no sabes cuál de los ficheros exactamente necesitas importar, asegurate que importas todos los de abajo:

  • ASIHTTPRequestConfig.h
  • ASIHTTPRequestDelegate.h
  • ASIProgressDelegate.h
  • ASIInputStream.h
  • ASIInputStream.m
  • ASIHTTPRequest.h
  • ASIHTTPRequest.m
  • ASINSStringAdditions.h
  • ASINSStringAdditions.m
  • ASIFormDataRequest.h
  • ASIFormDataRequest.m
  • ASINetworkQueue.h
  • ASINetworkQueue.m
  • ASIAuthenticationDialog.h
  • ASIAuthenticationDialog.m
  • Reachability.m
  • Reachability.h

Una vez importadps los ficheros , añade los siguientes frameworks a tu proyecto:

  • CFNetwork.framework
  • SystemConfiguration.framework
  • MobileCoreServices.framework
  • libz.1.2.3.dylib

Procedemos a crear la petición SOAP dentro de tu clase "PruebaSAOP".

C++:
  1. #import "PruebaSOAP.h"
  2. #import "ASIHTTPRequest.h"
  3.  
  4. @implementation PruebaSOAP
  5.  
  6. -(void)startRequest{
  7.  
  8. //Creamos el Request
  9. NSString *requestString = @""
  10.                               ""
  11.                  ""
  12.                            ""
  13.                      " "
  14.            ""
  15.                        "";
  16.  
  17. //Calculamos la longitud del request
  18. NSString *msgLength = [NSString stringWithFormat:@"%d", [requestString length]];
  19.  
  20. //La URL del servicio
  21. NSURL *url = [NSURL URLWithString:@"http://www.ejemplo.com/servicio.asmx"];
  22.  
  23. //Inicializamos el request
  24. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
  25.  
  26. //Configuramos los Headers del Request
  27. [request addRequestHeader:@"Content-Type" value:@"text/xml; charset=utf-8"];
  28. [request addRequestHeader:@"SOAPAction" value:@"http://www.ejemplo.com/consulta"];
  29. [request addRequestHeader:@"Content-Length" value:msgLength];
  30.  
  31. //El Body del Request
  32. [request setPostBody:(NSMutableData*)[requestString dataUsingEncoding:NSUTF8StringEncoding]];
  33.  
  34. //Indicamos quien es el delegado del Request
  35. [request setDelegate:self];
  36.  
  37. //Ponemos en marcha el request
  38. [request startSynchronous]; //tambien podrías usar [request startAsynchronous] si necesitas que el usuario de la app pueda hacer otras cosas mientras;
  39. }

Al finalizar la petición , ASIHTTP te da le respuesta con:

C++:
  1. - (void)requestFinished:(ASIHTTPRequest *)request
  2. {
  3. NSString *responseString= [request responseString]  ;
  4. //o NSData *responseData = [request responseData];
  5.  
  6. }

Si se produce un error  ASIHTTP te avisa con:

C++:
  1. - (void)requestFailed:(ASIHTTPRequest *)request
  2. {
  3. NSError *error = [request error];
  4. NSLog(@"Error: %i - %@",[error code],[error localizedDescription]);
  5. }

Lo que te queda es hacer lo que necesitas con la respuesta del SOAP :)

Mas información sobre SOAP: http://www.w3.org/TR/soap/

Mas información sobre ASIHTTP: http://allseeing-i.com/ASIHTTPRequest/

Proyecto de código abierto Three20

Share

Three20 es un proyecto de código abierto en Objetive-C, alojado en github, que ha sido desarrollado por el creador del famoso framework iUI (Joe Hewitt).

Tras haber finalizado hace tan sólo unos días un proyecto, también de código abierto, para implementar Facebook en nuestras aplicaciones,  ahora nos sorprende con Three20.

Three20 se compone de una serie de controles muy útiles para nuestras aplicaciones, como un visor de imágenes, un editor de emails, un visor de tablas al estilo de UITableView, un editor de texto, una clase clon de NSURLRequest con nuevos añadidos, etc.

En github, además de estos controles, disponen de un ejemplo llamado TTCatalog, el cuál muestra dichos controles en funcionamiento.

Actualmente Three20 continua en desarrollo, así que habrá que seguirlo muy de cerca.

iPiropos – Conviértete en un Don Juan

Share

Si los acertijos o las adivinanzas no son lo tuyo, y aprovechando que "la primavera la sangre altera", quizás sepas sacar buen provecho a la nueva creación de PhoneSoftware, iPIROPOS.

No digo que al verte me muera,

digo que me muero por verte,

y vivo para quererte

En ella hemos incluido 3 categorías, AMOR, AMISTAD y DESAMOR.

Así, si la llama del amor se apagó, siempre tendremos un buen recurso para nuestro/a ex como:

Si porque te crees cara bonita,

presumes tu hermosura,

hombres como tú los encuentro en la basura

iCam – Opción MULTICAM añadida

Share

Las famosas aplicaciones gratuitas de tráfico iCam, en concreto iCam Madrid, iCam Barcelona e iCam Madrid Capital, han sido actualizadas en la AppStore a la versión 2.0, e incluyen una novedosa mejora llamada MULTICAM.

MULTICAM nos permite configurar hasta 6 cámaras para conocer el estado del tráfico de un solo vistazo. Así, si la opción de favoritos no es suficiente para conocer el recorrido habitual que realizamos por carretera, podemos utilizar la opción MULTICAM.

Esta mejora será implementada en breve en las versiones de iCam Sevilla e iCam Bilbao.

 

iPhone OS 3.0 beta 3

Share

Ya está disponible la tercera beta del sistema operativo 3.0, así como del SDK.

Entre las principales características está la posibilidad de empezar a probar el sistema de notificaciones push y del servicio App Purchasing para poder realizar compras desde dentro de nuestra aplicación.

En torno al servicio de notificaciones push, hay abierto un debate en el que Apple considera que los servidores encargados de realizar las notificaciones a nuestras aplicaciones, deben de correr por cuenta de los desarrolladores, con el coste que ello significa. Seguramente en breve veremos opciones alternativas donde más de uno hará su agosto ofreciendo estos servicios a precios ridículos.

Evitar que nuestra aplicación sea crackeada

Share

Por todos es conocido el gran número de aplicaciones que han sido crackeadas, y mediante múltiples gestores de descargas como RapidShare, son compartidas las aplicaciones en forma de fichero IPA, para ser distribuidas de forma totalmente gratuita y por supuesto ilegal.

Entre otras cosas, modifican el fichero Info.plist de nuestra aplicación, y por lo tanto, una manera de evitarlo es realizar una sencilla comprobación en tiempo de ejecución.

Este fichero, contiene una serie de claves y valores. Una de esas claves (SignerIdentity) se encarga de indicar, una vez que nuestra aplicación sea ejecutada, que esta aplicación es segura y podemos confiar en ella. Este proceso y esta comprobación es realizado por el cargador (o lanzadera) de aplicaciones de nuestro iPhone.

Una vez explicado de una forma resumida, el proceso de ejecución de nuestra aplicación y el agujero por donde puede ser crackeada, tan solo nos queda evitarlo:

C++:
  1. /* Detectar si ha sido crackeada */
  2.  
  3. NSBundle* bundle = [NSBundle mainBundle];
  4.  
  5. NSDictionary* info = [bundle infoDictionary];
  6.  
  7. if( [info objectForKey:@"SignerIdentity"] != nil)
  8.  
  9. {
  10.  
  11. }

Así, si nuestra clave SignerIdentity ha sido activada y/o modificada, podemos cancelar la ejecución de nuestra aplicación, ya que estamos ante un caso de distribución ilegal de nuestra aplicación.

* Entendemos que esta comprobación será efectiva, excepto en el caso de que dicha clave haya sido utilizada por usted en su aplicación.

Curso de desarrollo de aplicaciones para iPhone

Share

Mi gran amigo, Carlos Aganzo, me informa de la publicación de este fantástico curso de desarrollo de aplicaciones para iPhone, que imparte la Universidad de Stanford de forma presencial (al cual creo que ya no llegamos a tiempo) y desde iTunes de forma totalmente gratuita.

Con una duración de 10 semanas, comenzó el pasado 1 de abril y los videos serán publicados dos días después de cada sesión de clase. (http://itunes.stanford.edu).

Gracias al Departamento de Ciencias de la Computación de la Universidad de Stanford, y por supuesto gracias a Carlos.