Mostrando entradas con la etiqueta App. Mostrar todas las entradas
Mostrando entradas con la etiqueta App. Mostrar todas las entradas

sábado, 17 de septiembre de 2016

UIImagePickerViewController no funciona en iOS 10

El artículo de hoy es exclusivamente para programadores iOS y como veis es bastante corto, pero útil. 

Si tenéis alguna App que utilice UIImagePickerViewController y tenéis pensado publicar alguna actualización en breve, os daréis cuenta que el controlador de las funciones de cámara se quedará frito.

La solución a este problema es bastante sencillo. Bastará con añadir nuevos permisos a nuestro plist.

NSCameraUsageDescription
NSPhotoLibraryUsageDescription

en iOS 10 hay que dar permisos a las Apps para utilizar diferentes frameworks. La relación de permisos la podréis encontrar en el siguiente enlace de Apple

https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html


lunes, 18 de abril de 2016

JOYCAR o cómo funcionan las APPS en las PYMES

Hace unas semanas, en inup recibimos una petición de una PYME dedicada al sector de la venta de flotas de vehículos. Hasta ahí todo nos pareció medio normal, hasta que nuestro cliente nos comunicó que el público objetivo de este desarrollo no era global, sólo estaría destinada a profesionales del sector y ellos se encargarían de la difusión entre su "pequeño" grupo de clientes. Una APP como una herramienta más en el engranaje de la empresa de nuestro cliente ......... Great!






Una vez publicada la App tanto en iOS como en Android, nuestro cliente nos comenta que está entusiasmado con esta plataforma ya que, puede mandar ofertas mediante notificaciones Push al instante a los clientes que él desea.






Como todos sabemos, hoy en día la gente (sobre todo en sectores comerciales) pasan más tiempo con el SmartPhone que con el PC. Por tanto, es la mejor herramienta para su día a día en el trabajo. Debido a ello, nos están empezando a llegar peticiones de empresas que quieren sus desarrollos para utilizarlos como herramientas del día a día de sus trabajadores, no como la venta o muestra de un producto.




Aquí os dejo los enlaces de descarga:

iOS
Android 

sábado, 26 de marzo de 2016

¿Qué es CocoaPods?

Aviso, este artículo es para desarrolladores o proyectos de desarrolladores. Si no estáis interesados en la programación iOS podéis continuar leyendo el artículo, pero no os garantizo que podáis entender algo.

CocoaPods nos proporciona inyección de dependencias para iOS (también para OSX). En este artículo no entraré en la batalla de a favor o en contra de la inyección de independencias en un proyecto, simplemente me limitaré a explicar cómo hacerlo a través de cocoapods.

Tampoco vamos a explicar el patrón de diseño de DI (Dependency Injection), para eso hay numerosos libros y artículos por la red.

Lo primero que tendremos que hacer es abrir el terminal y escribir

$ sudo gem install cocoapods

Después creamos un proyecto en Xcode o utilizamos uno ya existente. En esta captura podéis ver un proyecto existente llamado inup donde tendremos que crear un archivo llamado Podfile con cualquier editor de texto. La otra opción es desde el terminal, en la ruta donde se encuentren el archivo del proyecto *.xcodeproj escribir el siguiente comando:


$ pod init


Vamos a añadir las dependencias necesarias para poder utilizar Google Analytics. La otra opción sería descargar el SDK y copiar los archivos y adjuntar las librerías necesarias. Pero como hemos comentado antes, en este artículo nos vamos a limitar al uso de cocoapods.

Para ello el archivo deberá contener lo siguiente:

platform :ios, '8.0'

target 'inup' do
  pod 'Google/Analytics', '~> 1.0.0'
end

Como podéis observar tenemos que indicar, plataforma, versión desde la cual será funcional, el nombre de la App (nombre del proyecto, NO el Bundle name aunque en la mayoría de las ocasiones coincide).

Podríamos añadir más dependencias tras la de Analytics y más comandos al archivo de configuración, pero lo dejaremos para un artículo posterior.

Volvemos a abrir el terminal y nos dirigimos a la ruta donde se encuentra el archivo Podfile y escribimos

$ pod install

Tras la ejecución de este comando si todo ha ido bien, si volvemos a la ruta del proyecto, veremos cómo se han creado una carpeta de Pod, un archivo Podfile.lock y un *.xcworkspace.



Pues bien, ahora podremos/deberemos abrir nuestro proyecto desde el archivo *.xcworkspace (también me dejo para otro artículo qué es y cómo trabajar con el *xcworkspace).

Si importamos 

#import <Google/Analytics.h> 

veremos como no salta ningún error ni ningún aviso y podemos trabajar directamente con la librería de Analytics (también me dejo esta librería para próximos artículos), sin necesidad de haber importado nada a mano (ejemplo práctico de inyección de dependencias).

Si queremos añadir otra dependencia bastará con añadirla a nuestro Podfile y con el proyecto cerrado desde el terminal escribir:

$ pod update

Si queréis más información en español habrá que esperar al próximo artículo. Mientras tanto y en inglés os recomiendo echar un ojo a cocoapods 



viernes, 25 de marzo de 2016

Bridzy, la App para novias

En inup hemos tenido la suerte de poder colaborar en un gran proyecto, Bridzy la red social para novias.

Si usted, querido lector, no se ha casado todavía, no se imagina la cantidad de preguntas, indecisiones y dudas surgirán desde que se da el "Sí quiero". Y tampoco se imagina la cantidad de quebraderos de cabeza y peleas que genera. Pues nuestro amigo Antonio Radován, se ha propuesto que la parte más complicada de esta emocionante etapa vital, sea más llevadera con la ayuda y experiencia de todas las novias que están a punto de pasar por capilla o ya lo han estado.

Las novias podrán chatear entre ellas, en salas comunes o en privado.


Podrán aconsejar diferentes lugares categorizándolos o ver las recomendaciones de otras novias.


¿Un Instagram propio sólo de novias? ¿Por qué no?



Como podéis ver, un gran proyecto que esperemos que ayude a todas las novias ........ y que los novios estén eternamente agradecidos.

 

Aquí os dejo los enlaces de descarga tanto de iOS como de Android así como sus diferentes Redes Sociales.

Web   iOS Android Twitter Facebook Instagram


Vídeo demo Bridzy from Bridzy App on Vimeo.

viernes, 1 de enero de 2016

Obligatorios en tus favoritos para desarrollar Apps en iOS

En este primer artículo de 2016 os voy a comentar algunas de las webs que tengo en mi barra de marcadores favoritos y que consulto con bastante asiduidad a la hora de desarrollar Apps para iOS. Por supuesto, estaré encantado de que en los comentarios añadáis y comentéis la que os apetezca o que consideréis que debería estar en la lista.


1. La primera y la pongo sobre todo para novatos que la desconozcan es www.stackoverflow.com. Si tienes algún bug o duda simplemente coméntala en el buscador (preferiblemente en inglés) y obtendrás la solución a tu problema. Sólo un apunte, pese al sistema de votos de esta página, no siempre encontrarás la solución más adecuada a tu problema, aunque casi al cien por cien de probabilidades encontrarás una que te funcione.       

                   


2. La segunda en mi particular podium se encuentra sin duda www.cocoacontrols.com. Si quieres algún componente customizado sin duda esta es tu web.




3.Si en cocoacontrols no encuentras lo que necesitas, tu siguiente opción será realizar la búsqueda directamente en www.github.com. Todos los componentes de cocoacontrols se encuentran en github pero no al contrario.



La lista para desarrollo la iremos ampliando en siguientes artículos, aunque con estas tres deberías de tener más que suficiente para afrontar cualquier desarrollo. A continuación, enumeraré algunas destinadas al apartado de diseño.


1. La primera en esta lista es www.iosfonts.com. Todas las fuentes con todas las versiones para todos los dispositivos OS. Sin duda una de las webs que más utilizarás a la hora de diseñar o maquetas.


2. La segunda será www.dribbble.com donde podrás ver todas las tendencias más novedosas con respecto al diseño de Apps. Como bien dijo alguien alguna vez, si no sabes que diseño debe tener tu App, basta con ver esta web durante 15 minutos.


3.La tercera es la malagueña www.freepik.es donde podrás encontrar infinidad de recursos para tus desarrollos.



Al igual que hemos hecho con el apartado de desarrollo, comenzaremos con estas tres para ir ampliando la lista en futuros artículos.



martes, 1 de diciembre de 2015

Proyecto Apple TV en el Startup Weekend Murcia

Este fin de semana tuve la suerte de participar en el Startup Weekend de Murcia. Para los que no sepáis de qué va esto, una breve explicación. Un conjunto de ideas, mucha gente con diferentes Skills (queda más cool que habilidades) y ganas, muchas ganas de currar durante un fin de semana. Pues allí me presenté con el Apple TV de inup  debajo del brazo y con ganas de hacer un proyecto con esta juguete que va a dar que hablar.

Tras una breve presentación conseguí engañar a un buen equipo para que formaran parte de él. Una gran diseñadora @CarmenFrancoCo, una gran comunicador , un gran gestor de cuentas  y una gran marketiniana @MariaRufeteCT.





Gracias a ellos y a un gran grupo de mentores que estuvo a nuestra disposición conseguimos convertir un proyecto local en otro con una visión global, Places Play.

Con Places Play pretendemos crear una nueva manera de reservar destinos turísticos a través de una experiencia completamente visual y en familia o grupo.

Y aunque parezca mentira en un fin de semana creo que hemos conseguido encaminar un producto y montar un prototipo para el Apple TV.

Nuestro siguiente paso es conseguir algo de financiación para poder cubrir los costes iniciales de desarrollo de este gran producto. Para poneos los dientes largos os voy a enseñar algunas partes de la App de Apple TV que ya está en marcha.







Así que si estáis interesados o conocéis a algún inversor que pueda estarlo en este gran proyecto, no dudéis en contactar con nosotros.

martes, 24 de noviembre de 2015

App de pago o gratuita. El caso Doula & Yoga

Una pregunta que nos formulan muchos clientes en inup es sobre el precio que deben poner a su App. Yo les pregunto a ellos y os pregunto a vosotros.

- ¿Has comprado alguna App en la última semana?
- ¿Has comprado alguna App en el último mes?
- ¿Has comprado alguna App en tu vida?

No os preocupéis si vuestra respuesta es NO a las tres preguntas anteriores. Por desgracia, estáis en la media de los consumidores españoles de cualquier producto de electrónica y consumo. Sin embargo no en todos los países es así, donde la gente es capaz de armar una revolución porque a WhatsApp se le ocurre cobrar 0,79 euros al año por usar su App 3 horas de media al día y ahorrar a los consumidores cientos de euros en SMS. Y tenemos la suerte que los mercados de las apps son globales, y hay gente acostumbrada a pagar por los servicios que se le ofrecen (qué cosas).

Esta reflexión viene en relación a una preciosa App para embarazadas que han desarrollado los amigos de Simed. Después de comprar la versión de pago (lo sé, soy un bicho raro para los segmentadores de mercado en España) ya que da la casualidad de que mi mujer está embarazada me puse a pensar en el trabajo que puede llevar hacer una App así.


Tras un primer vistazo a esta bonita App me di cuenta que sólo en Diseño llevará una dos semanas de trabajo. Me puse a navegar por todas las pantallas, que están bastante cuidadas, y les calculé un mínimo de 4 semanas de desarrollo por un programador avanzado. Después está el contenido que ofrece la autora de los vídeos Montse Cob


Y entonces yo me pregunto. Por 5 euros que cuesta la App, mi mujer tiene contenido de alta calidad para los próximos 6 meses, ¿merece la pena? Por supuesto.

De esos 5 euros ya os confirmo por experiencia que el 30% se lo quedan o Apple o Google. Después sobre los beneficios quitar impuestos, licencia anual de 100 euros de App, Montoro, etc, etc.

Por lo tanto no me queda otra que recomendar a mis queridos lectores que compren Apps si les ofrecen un servicio de calidad. Y si alguna lectora está embarazada o conocéis a alguien en esta maravillosa situación os recomienda esta útil y preciosa App, Doula & Yoga. Os dejo aquí los enlaces de la App para iPad y iPhone



Su Facebook https://www.facebook.com/Doula-Yoga-951414618252755/




sábado, 19 de septiembre de 2015

Primeras impresiones del nuevo Apple TV

Una de las grandes novedades de la pasada Keynote ofrecida por los de Cupertino fue sin lugar a dudas las presentación del nuevo Apple TV. Pues gracias al programa de desarrolladores de iOS & MacOS de la cual formo parte desde hace ya unos años, los amigos de Apple me han mandado un Apple TV para comenzar a desarrollar Apps.


Las características técnicas del nuevo Apple TV son las siguientes:
  • Procesador A8 de 64-bit
  • 32GB o 64GB de disco duro
  • 2 GB de RAM
  • 10/100 Mbps Ethernet
  • WiFi 802.11/a/b/g/n/ac
  • Resolución 1080p
  • HDMI
  • Nuevo mando a distancia con Siri.



Sin duda alguna, nada más sacar todos los componentes de la caja lo que más llama la atención es el mando del AppleTv cuyas características técnicas son:

  • Superficie táctil al más puro estilo iPhone.
  • Diferentes botones de control.
  • Botón de invocación a Siri.
  • Ranura para carga.
  • Un diseño exquisito.

En próximos artículos os iré comentando las primeras sensaciones sobre el desarrollo en TvOS.



    viernes, 28 de agosto de 2015

    Crear un formulario en iOS nivel PRO con UITextField. Parte III.

    Continuamos a partir del anterior artículo, el cual podréis ver pulsando aquí. Lo primero que vamos a hacer es crear un botón. Este botón posteriormente será de Login, pero como todavía no podemos hacer login a ningún sitio, lo utilizaremos para hacer comprobaciones en los UITextField.

    loginButton = [[UIButton alloc] initWithFrame:CGRectMake(0., 0., 100., 30.)];
        [loginButton setCenter:CGPointMake(self.view.center.x, passWordTextField.center.y + passWordTextField.frame.size.height + loginButton.frame.size.height)];
        [loginButton setTitle:NSLocalizedString(@"Check", nil) forState:UIControlStateNormal];
        [loginButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
        [loginButton addTarget:self action:@selector(checkAction) forControlEvents:UIControlEventTouchUpInside];
        

        [self.view addSubview:loginButton];

    Posteriormente declaramos el método checkAction y el método checkFields que devolverá un booleano analizando los diferentes UITextField creados.

    - (void)checkAction
    {
        if([self checkFields])
            NSLog(@"Todo OK");
    }

    - (BOOL)checkFields
    {
        if(nameTextField.text.length == 0)
        {
            [self presentAlertViewWithMessage:NSLocalizedString(@"El campo nombre no puede estar vacío.", nil)];
            return false;
        }
        if(nameTextField.text.length > 20)
        {
            [self presentAlertViewWithMessage:NSLocalizedString(@"El campo nombre no puede superar los 20 caracteres.", nil)];
            return false;
        }
        if(passWordTextField.text.length == 0)
        {
            [self presentAlertViewWithMessage:NSLocalizedString(@"El campo password no puede estar vacío.", nil)];
            return false;
        }
        if(passWordTextField.text.length > 6)
        {
            [self presentAlertViewWithMessage:NSLocalizedString(@"El campo password no puede superar los 6 caracteres.", nil)];
            return false;
        }
        if(mailTextField.text.length == 0)
        {
            [self presentAlertViewWithMessage:NSLocalizedString(@"El campo email no puede estar vacío.", nil)];
            return false;
        }
        if(mailTextField.text.length > 50)
        {
            [self presentAlertViewWithMessage:NSLocalizedString(@"El campo email no puede superar los 50 caracteres.", nil)];
            return false;
        }
        
        return true;

    }

    Si compilamos y ejecutamos la App podemos comprobar como nos muestra las alertas si no cumplimos alguna de las condiciones. Pero, si yo quiero prohibir al usuario, que por ejemplo no añada más de 20 caracteres en su UITextField haremos los siguiente.


    Tendremos que modificar el siguiente método del delegado de UITextField

    //Método que se llama cuando se introducae algún valor por teclado
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        NSUInteger newLength;
        
        newLength = [textField.text length] + [string length] - range.length;
        
        if([textField isEqual:nameTextField])
            return (newLength > 20) ? NO : YES;
        if([textField isEqual:mailTextField])
            return (newLength > 50) ? NO : YES;
        if([textField isEqual:passWordTextField])
            return (newLength > 6) ? NO : YES;

        return YES;
    }

    Si ahora compilamos y ejecutamos la App. Podemos comprobar como si intentamos introducir más caracteres de los indicados en el método, el UITextField no nos permite añadirlos.


    Os dejo el código en el siguiente path de GitHub





      

    viernes, 26 de junio de 2015

    Crear un formulario en iOS nivel PRO con UITextField. Parte II.

    Continuamos a partir del anterior artículo, el cual podréis ver pulsando aquí. Lo primero que haremos será crear dos nuevos UITextFields para introducir una contraseña y un email.

    @property (nonatomic, strong) UITextField *passWordTextField;
    @property (nonatomic, strong) UITextField *mailTextField;

    Les añadiremos nuevas características como la introducción de datos en modo oculto para la contraseña y un botón de borrado.

        [mailTextField setDelegate:self];
        [mailTextField setPlaceholder:@"Email"];
        [mailTextField setKeyboardType:UIKeyboardTypeEmailAddress];
        [mailTextField setReturnKeyType:UIReturnKeyDone];
        [mailTextField setBorderStyle:UITextBorderStyleLine];
        [mailTextField setClearButtonMode:UITextFieldViewModeAlways];
        
        [self.view addSubview:mailTextField];
        
        [passWordTextField setDelegate:self];
        [passWordTextField setPlaceholder:@"Contraseña"];
        [passWordTextField setKeyboardType:UIKeyboardTypeEmailAddress];
        [passWordTextField setReturnKeyType:UIReturnKeyDone];
        [passWordTextField setBorderStyle:UITextBorderStyleBezel];
        [passWordTextField setSecureTextEntry:YES];
        [passWordTextField setClearButtonMode:UITextFieldViewModeWhileEditing];
        

        [self.view addSubview:passWordTextField];




    A continuación editaremos algunos elementos gráficos del UITexField. Por defecto tiene cuatro tipos de borde, aunque en próximos artículos explicaré como aumentar estas posibilidades a infinito. También le indicaremos el botón de retorno y el tipo de aspecto que queremos que tenga el teclado.
    Tras ejecutar el código y comprobar los métodos del delegado del UITextField la primera duda que nos surgirá será cómo diferenciar los diferentes UITextField.


    - (BOOL)textFieldShouldClear:(UITextField *)textField
    {
        if([textField isEqual:mailTextField])
            [mailTextField setText:@""];
            
        else if(textField == passWordTextField)
            passWordTextField.text = @"";
        return NO;

    }



    Las dos fórmulas utilizadas en el código anterior son correctas. Si lo que queremos es que al pulsar el botón de borrado siempre se borre el texto del UITextField seleccionado bastará con devolver un TRUE.

    Como ya comenté en el anterior artículo, iré subiendo el código al siguiente enlace de GitHub
    https://github.com/ManuelManzanera/FormularioViewController