Aprendiendo Cocoa

Por fin, disponible en la AppStore

Febrero 14th, 2009 por admin

Con un asunto “Your application status is Ready for Sale” recibí un email por parte de iTunes Store, anunciandome que mi aplicación ya estaba aprobada y lista para comprar en la AppStore. Básicamente han puesto dos pegas, la primera anunciaba que el logo de la aplicación de 57×57 y el que se ve en itunes, de 512×512, eran distintos, aunque yo creo que eran el mismo archivo, y partían del mismo psd, pero lo rehice todo, volviendo a subir la app. Al cabo de una semana, otra vez me pidieron que ya que la aplicación necesita conexión a internet, si está no está disponible, alerte al usuario de ello. No volví a tener noticias de ellos, hasta la semana y media, mas o menos, recibiendo este gratificante email.
avail_on_app_store2.png

La aplicación se llama Sevicicleta, pertenece a la categoría navegación, y con ella instalada podemos conocer la posición de las estaciones de bicicletas disponibles en Sevilla. Utiliza el GPS disponible en el iPhone, para dar a conocer al usuario, cuál es la estación mas cercana en metros y además cuantas bicicletas disponibles y huecos libres hay en la misma. Una de las novedades mas importantes de la app, es que utiliza un framework llamado RouteMe, que integra un Mapa basado en VirtualEarth, para mostrar las estaciones de bicicleta que se encuentran a menos de 1.5km de nuestra posición actual. Este mapa es magnifico, ya que se comporta como una alternativa a la aplicación de Apple, Mapas, pero debido a que Apple considera el MapKit, un framework privado, no se puede hacer uso todavía de el.

Para guardar aquellas estaciones que utilizamos más, podemos seleccionar la estación y guardarlas como Favoritos, y volver a visitarlas en cualquier momento. Dándole un nombre para poder reconocerla mucho más fácil, tal como Casa, Universidad o cualquier texto. Esto se ha conseguido, utilizando un wrapper para el sistema de base de datos del iphone, SQLite3.

Os invito a utilizar la aplicación, y si tenéis alguna duda, preguntadme sobre cualquier tema referente a la programación de la misma.

imagen-5.pngimagen-6.pngimagen-3.png

Publicado en Cocoa, Actualidad Mac | Sin comentarios »

Esperando una decision

Enero 26th, 2009 por admin

Hola a todos, desde el sábado, mi Proyecto de Fin de Carrera (PFC de aquí en adelante), está siendo revisado por Apple para ponerse a la venta en la AppStore a un precio de 1,59€. El proceso no ha sido precisamente sencillo, ya que al ser una aplicación de pago, solo les ha faltado pedirme el dni de mi abuela. En esto, tengo que decir, que Apple me ha decepcionado un poco, siempre tengo el ejemplo de Adsense, que te manda tu cheque, tan fácil, tan rápido.

Salvando el proceso de programación y desarrollo, para subir la aplicación necesitáis una cuenta como Apple Developer Program (previo pago de 79€) para desde http://developer.apple.com/iphone/ tener acceso a Developer Portal, donde os explica como, de una forma parecida a como probar aplicaciones en un iphone “verdadero” , podéis obtener el certificado que firma vuestra app. Esta forma, es de todo, menos intuitiva, así que ya me diréis. Al final, obtenéis un zip, con vuestra aplicación para subirla en itunesconnect, pero cual fue mi sorpresa que al introducir mi AppleID, me decía que los datos eran incorrectos, si os encontráis con este problema, llamad a alguno de estos numeros o mandad un email al ADC, enseguida te lo arreglan.

En iTunes Connect, además de algunos datos de información, te piden un icono de 57×57 junto al zip de la aplicación, otro de 512×512 para itunes, y varias capturas, pero a la hora de firmar los contratos, me llega a asustar al ver, que yo no tengo un Tax ID, al no ser residente en los EEUU, y tenía que solicitarlo y con la consiguiente espera del trámite, un infierno vamos. Me dedicí enviar un email a un conocido que tengo en la Store, y se informo de este tema, y la solución fue introducir 9 ceros (000000000) en el apartado U.S. taxpayer identification number, se me quedo un poco cara de tonto.
Así, que en esa situación estamos ahora mismo, a la espera del OK por parte de Cupertino de que la aplicación puede estar en su AppStore, cuando la aprueben, os comentaré extensamente la aplicación.
Espero tener información en breve.

Publicado en Informacion | Sin comentarios »

Persistencia en nuestra iPhone App

Diciembre 27th, 2008 por admin

En el anterior post os comenté sobre como guardar datos de configuración con [NSUserDefaults standardUserDefaults], muy útil si queréis guardar algún dato pequeño o si el usuario no es la primera vez que visita una pestaña, pero siempre algún dato que no nos haga falta buscar sobre él. En el momento que queráis que vuestra app tenga Favoritos, ultimos visitados o frecuentes, debéis ayudaros de una base de datos, para poder realizar consultas rápidas.

Como sabéis, nuestro iPhone posee bastantes librerías, y algunas de ellas nos ayudan a gestionar BBDD del tipo SQLite3 (como libsqlite3.0.dylib y algunas más) que si bien están limitadas por Apple y no tienen todas las extensiones que nos gustaría, podemos gestionar nuestra base de datos sencillamente (o eso parecía). En la aplicación que estoy desarrollando, necesitaba incluir una pestaña de Favoritos, y tuve que empaparme de SQLite3. Primero me baje este add-on para Firefox, SQLite Manager, y me descargue el Sample Code de Apple, SQLite Books, que nos enseña como introducir, recuperar y borrar datos de una base de datos. Me dedique a observar el ejemplo, y me pareció lo mas cercano a un infierno, hay que realizar muchísimas operaciones iguales bastantes veces, hidratar y deshidratar los datos, después de cada inserción o borrado. Para muestra, os enseño como borrar un elemento


- (void)deleteFromDatabase {
// Compile the delete statement if needed.
if (delete_statement == nil) {
const char *sql = "DELETE FROM book WHERE pk=?";
if (sqlite3_prepare_v2(database, sql, -1, &delete_statement, NULL) != SQLITE_OK) {
NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
}
}
// Bind the primary key variable.
sqlite3_bind_int(delete_statement, 1, primaryKey);
// Execute the query.
int success = sqlite3_step(delete_statement);
// Reset the statement for future use.
sqlite3_reset(delete_statement);
// Handle errors.
if (success != SQLITE_DONE) {
NSAssert1(0, @"Error: failed to delete from database with message '%s'.", sqlite3_errmsg(database));
}
}

Pensé que no podía ser verdad, y debía haber una solución, algún FrameWork que utilizará el patrón Fachada para quitarme este banco de posibles errores de en medio. Buscando un poco encontré FMDB y aqui teneis varios ejemplos de uso.
Para mi proyecto, me he creado un DataBaseController, que hace de fachada sobre el wrapper FMDB, teniendo metodos para la insercion, borrado y consulta e internamente realizo los accesos al framework.

Aqui os enseño alguno ejemplos
[self.db executeUpdate:@"delete from borneta where numero=?" ,
borneta.numero];

// Devuelve el array de favoritos
- (NSMutableArray *) devuelveFavoritos
{
NSMutableArray *arrayRetornoFavoritos=[[NSMutableArray alloc] init];
FMResultSet *rs = [self.db executeQuery:@"select * from borneta order by id ASC"];
while ([rs next]) {
Borneta *borneta = [[Borneta alloc] init];
borneta.nombre=[rs stringForColumn:@"nombre"];
borneta.direccion=[rs stringForColumn:@"direccion"];
borneta.numero=[rs stringForColumn:@"numero"];
borneta.numero=[rs stringForColumn:@"numero"];
borneta.lat=[NSNumber numberWithDouble:[rs doubleForColumn:@"lat"]];
borneta.lng=[NSNumber numberWithDouble:[rs doubleForColumn:@"lng"]];
[arrayRetornoFavoritos addObject:borneta];
}
return arrayRetornoFavoritos;
}

Tengo que decir, que me ha resultado muy cómodo tirar de este wrapper que atacar directamente a la libreria de sqlite, por lo que os recomiendo que le deis una oportunidad, si veis que el ejemplo de Apple no os aclara mucho.

Si tenéis alguna pregunta de como utilizar FMDB o cualquier consulta sobre programación en Cocoa, aquí me tenéis.

Publicado en Uncategorized | Sin comentarios »

Preferencias en nuestro iPhone

Diciembre 8th, 2008 por admin

Poneros en la situación en la que estamos desarrollando una aplicación para el iPhone, y necesitamos guardar los ajustes de la misma, por ejemplo, para ello recurrimos a NSUserDefaults, el cual funciona como un diccionario, con pares atributo-valor, donde podemos guardar cualquier objeto para luego acceder a él.
Por ejemplo. para guardar un NSString al terminar la aplicación, en applicationWillTerminate

NSString *cadenaAGuardar= @"Texto de preferencias";
[[NSUserDefaults standardUserDefaults] setObject:cadenaAGuardar forKey:@"cadena"];
[[NSUserDefaults standardUserDefaults] synchronize];
[cadenaAGuardar release];

Y en loadView, recuperaremos esta NSString

NSString *cadenaARecuperar;
cadenaARecuperar=[[NSUserDefaults standardUserDefaults] objectForKey:@"cadena"];

Sencillo, verdad??? Podemos guardar todo tipo de objetos, para luego recuperarlos.
En el siguiente post veremos como guardar datos favoritos mediante SQLite3, el sistema de Base de datos por defectos para el iPhone mediante un framework (FMDB) para lidiar con las austeras clases y métodos que Apple ha preparado para nosotros.

Publicado en Cocoa | 1 Comentario »

Configurar Subversion en Xcode

Octubre 28th, 2008 por admin

En menos de unas 3 horas, 4 amigos me han preguntado como configurar un sistema de versiones para Xcode, para bien trabajar a distancia o simplemente como ayuda para aumentar la seguridad y la productividad en nuestra futura aplicación para Mac o iPhone.

Yo, personalmente, aconsejo Subversion, ya que está completamente integrado en Leopard, pero tambíén acepta CVS y Perforce, para gustos los colores. Una decisión inicial, es donde estará nuestro repositorio (en este caso, el server SVN que hace de repositorio), podemos configurar Leopard para que nuestra propia máquina haga de server, pero seguimos con el problema de una inesperada avería de la misma, y dar al traste con todo lo programado. Por esta razón, vuelvo a aconsejar, utilizar un servidor externo como GoogleCode o el reciente Beanstalk. Cada uno con su elección, pero el primero es mucho más que solo un servidor SVN, y el segundo es más directo, el server es lo de menos.

Cuando tengamos creado nuestro server SVN, nos queda configurar por primera vez XCode. Lo abrimos y sin crear ningún proyecto, abrimos SCM->Repositories en la barra superior, donde obtenemos esta pantalla, para configurar de manera general los repositorios
imagen-3.png

Pulsa aqui para continuar leyendo »

Publicado en Cocoa, Informacion | Sin comentarios »

Os presento a Parseador

Octubre 26th, 2008 por admin

Poco a poco, me voy involucrando más en el iPhone y sobretodo en su desarrollo, hasta tal punto, que he elegido como proyecto fin de carrera una aplicación para el telefono de Apple. Como ya os comenté, adquirí hace poco el iPhone Developer Program, paso necesario para poder instalar aplicaciones , de manera legal, en el mismo.

El desarrollo, es muy parecido a desarrollar para Mac, salvo la diferencia de no contar por ahora, con Garbage Collector ni Bindings, pero creo que desde la vista de un novato como yo, las vistas están mejor gestionadas y es más directo encontrar solución a que utilizar.

Mi (futura) aplicaciónconsite en parsear un XML disponible en una URL publica, y conforme a los datos obtenidos del parseado y de nuestra posición GPS, ordenarlos de menor a mayor, obteniendo el primer resultado el más cercano.

Aqui os dejo una captura, estoy muy contento con él, y la verdad que a todos los amigos que se lo enseño, se quedan sorprendidos. Os iré contando.

img_0004.PNG

Publicado en Cocoa, Informacion, Actualidad Mac | Sin comentarios »

Problemas con iPhone Developer Program

Octubre 19th, 2008 por admin

Hace tiempo quise unirme al Developer Program (previo pago de mis 70 euros), y tras varios intentos, siempre obtenía un mensaje en perfecta lengua inglesa, que anunciaba que mi petición estaba en trámite y me anunciaba que esperara más, (más todavía¿???). Trás varios días en los que vi que estó no mejoraba, aproveché el otro día mi llamada a la Apple Store para pedir el MacBook le pregunté a nuestro contacto allí la razón de esta interminable espera. El me dió este enlace

http://developer.apple.com/contact/phone.html

Donde están todos los telefonos de la Apple Developer Connection. Una amable chica, en ingles otra vez, me atendió y me envió un email para desbloquear mi cuenta y poder seguir con el proceso de inscripción en el programa. Tras pago de los 70euros y un día de espera, conseguí entrar en el Program Portal, donde puedes seguir las instrucciones para obtener los certificados y asociar tu dispositivo.Está muy bien explicado, pero aún así no es fácil.

Yo me equivoqué en el AppID, no utilicé el * en el Bundle Identifier, para poder utilizarlo con la aplicación que queramos. De todas formas, es una maravilla, y si teneis algún problema, consultad conmigo.

Publicado en Uncategorized | 3 Comentarios»

Vuelve el foro de Cocoaconleche

Octubre 9th, 2008 por admin

Buenas a todos!!

Gracias a mi amigo Carlos, tenemos un foro decente funcionando donde podemos intercambiar nuestros conocimientos en Cocoa y Mac.

Ahora que está tan de moda el programar para Mac, espero que os sintáis cómodos y escribáis todos las dudas que tengáis. Aquí no nos comemos a nadie, ni cerramos ningún hilo porque algún usuario nuevo no ha utilizado las búsquedas.

Solo deciros, una obligación que tenemos todos, y que a muchos usuarios de Mac se le olvida cuando ya han dejado de ser switchers, hay que ayudar a los nuevos tal y como nos ayudaron a nosotros cuando no sabiamos donde estaba el botón de inicio en nuestros Mac OS X,jejeje.

Un saludo, y muchas gracias por visitar nuestra página

Publicado en Informacion, Actualidad Mac | 1 Comentario »

Browser en Softpedia y con Certificado

Agosto 17th, 2008 por admin

Hace un año, mas o menos, empecé una aplicación que luego fui abandonando llamada Browser, un buscador muy sencillo basado en el WebKit (motor de renderizado de Safari) y por supuesto en Cocoa. La tengo publicada en varios sitios, aqui en el blog y en googlecode, por el tema de SVN y demás.
Pues sin actualizarlo desde el 30 de septiembre de 2007, hoy recibo un email de Softpedia informándome que PetyBrowser (así lo tuve que llamar en googlecode) había sido revisado y testeado por ellos, y van a publicarlo en su repositorios de soft. Pero no sólo eso, si no que para garantizar que el navegador es limpio le han dado el certificado de 100% Free. Que curioso!!!

Según dicen en la revisión del software, no se puede esperar mucho de el, ya que está en una fase de desarrollo muy temprana, y estoy completamente de acuerdo con ellos, si casi no funciona bien en Leopard.

Sólo quería compartir con vosotros esta noticia, que me ha hecho gracia, a la vez que ilusionado e incitado a seguir aprendiendo. Os dejo el certificado, que es hasta bonito.jejejeje.
certified

Publicado en Cocoa, Informacion | Sin comentarios »

Asociar un icono a una aplicación

Julio 11th, 2008 por admin

Gracias a que Adrián en el anterior post preguntó como se podía cambiar el icono de la aplicación, he preferido explicarlo en un post y listo.

Para ello nos hace falta una imagen en .icns (más info) la cual podéis obtener a partir de cualquier imagen ayudándonos de Icon Composer (/Developer/Applications/Utilities)

imagen-18.png
Pulsa aqui para continuar leyendo »

Publicado en Cocoa | 1 Comentario »

« Entradas Previas