Sustituir códigos HTML por el caracter correspondiente de un NSString

Si por alguna razón tienes un NSString que contiene códigos HTML  (como por ejemplo á en vez de á, o ñ en vez de ñ o & en vez del ampersand &) y quieres que se te muestre el caracter equivalente en vez del código, la forma más fácil de conseguirlo es usar un NSAttributedString de la siguiente manera

NSString * stringConCodigosHTML = @"Saludos desde España. ¿Qué tal están?";

NSData *stringData = [stringConCodigosHTML dataUsingEncoding:NSUTF8StringEncoding];

NSDictionary *options = @{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType};
NSAttributedString *decodedString;
decodedString = [[NSAttributedString alloc] initWithData:stringData
options:options
documentAttributes:nil
error:nil];

NSLog(@”%@”,decodedString.string);//sacará por consola “Saludos desde España. ¿Qué tal están?”

Cambiar el User Agent de una UIWebView en iOS

Para cambiar el user agent de una UIWebView en iOS tan solo tenemos que usar el siguiente código:

NSDictionary *dictionario = [[NSDictionary alloc] initWithObjectsAndKeys:@”Mi user agent personalizado”, @”UserAgent”, nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionario];
Se puede usar por ejemplo para que las páginas no nos carguen la versión móvil de una web, poniendo por ejemplo el User Agent de firefox o Chrome.
También cambiaría el User Agent para phonegap, tanto para la CordovaWebView como para el InAppBrowser.
Para saber el User Agent de una UIWebView podemos usar este código:
UIWebView* webViewTemporal = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* userAgent = [webViewTemporal stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
Esto nos puede ser útil para poder modificar el User Agent original de la UIWebView y personalizarlo como acabamos de ver. Ejemplo:
UIWebView* webViewTemporal = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* userAgent = [webViewTemporal stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSString * miUserAgentPersonal = [NSString stringWithFormat:@"Mi app %@",userAgent];
NSDictionary *dictionario = [[NSDictionary alloc] initWithObjectsAndKeys:miUserAgentPersonal, @”UserAgent”, nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionario];
De esta forma mantenemos el User Agent original pero con una pequeña modificación para detectar que se accede desde nuestra aplicación.

 

Othello Classic

Othello Classic is my first phonegap app.

This is the classic board game Othello.

The rules:

Othello is a 2 player game.

The object of the game is to have the majority of your color discs on the board at the end of the game.

Black always move first.

A move consists of “outflanking” your opponent’s disc(s), then flipping the outflanked disc(s) to your color.

If a player can’t place his disc, the game will automatically change the turn.

You can know the turn by the color of the background

My first version of the game was a game for 2 human players, but I’ve added a 1 player mode (or VS machine mode) with 2 levels of difficulty (easy and medium).

The iOS version includes online game with the Game Center Phonegap plugin I developed

You can find the iOS version here

You cand find the free Android version with a new name (Iago Classic) here 

Review del libro PhoneGap Beginner’s Guide

Phonegap es un framework para desarrollar aplicaciones móviles multiplataforma (iOS, WP, webOS, symbian, bada, blackberry, android) con html5, css3 y javascript. Para más información visitar www.phonegap.com

El autor del libro es uno de los desarrolladores de phonegap, por lo que ya se intuye que el libro va a ser bastante completo.

Son más de 300 páginas divididas en 11 capitulos, y en estos capitulos no solo se centra en phonegap, si no que explica bastantes cosas de html5, css y javascript. Para la mayoría de los ejemplos usa la librería javascript XUI, una buena librería para desarrollos móviles, que puede ser una buena alternativa al famoso ( y lento) jquery mobile por ser bastante ligera y completa.

Durante los capitulos se irán realizando una serie de ejercicios para desarrollar mini aplicaciones, por lo que es muy ameno de leer y yo creo que esto sirve mejor para aprender. Además de vez en cuando te hace preguntas test para ver si lo vas comprendiendo, y va poniendote retos.

A lo largo de los capitulos te enseñarán a usar todas las características de su API como son el almacenamiento, camara, brujula, acelerometro, localización, contactos, etc. Y además te enseñan como usar plugins desarrollados por terceros e inlcuso desarrollar tus propios plugins para cuando necesites algo que no esté incluido en la API básica de phonegap.

Me ha parecido un libro perfecto para iniciarse con phonegap, y en el desarrollo movil en general, ya sea desarrollo web móvil o de aplicaciones hibridas.

La unica pega que le veo es que se ha centrado solo en iOS y android, (a quien quiero engañar, son los más usados, yo si hubiese escrito el libro también me hubiese centrado en iOS y android). No obstante, la parte de html, css y javascript debería ser comun o casi para todos los dispositivos. Otra posible pega es que esté en inglés, pero como pasa con la mayor parte de la documentación relacionada con la informática, asi que tampoco es un gran problema)

El libro me lo mandaron de la editorial packtpub, y se puede comprar aqui
http://www.packtpub.com/phonegap-beginners-guide/book