Cambiar nombre a una librería CocoaPod

Desgraciadamente no se puede cambiar el nombre a una librería CocoaPod que ya has publicado.
Lo único que puedes hacer es publicarla nuevamente con el cambio de nombre y después despublicar la anterior con este comando.

pod trunk deprecate nombre_viejo --in-favor-of=nombre_nuevo

Tras hacer esto, si buscas en la web de CocoaPods, la librería vieja aparecerá con titulo gris en vez de rojo y no clickable, y debajo pondrá:

nombre_viejo has been deprecated in favor of nombre_nuevo

Activar opciones de desarrollo en dispositivos Android

La semana pasada me compré un teléfono nuevo y hoy he ido a probar una aplicación que estaba desarrollando para ver si funcionaba bien en Android 6, pero para mi sorpresa el dispositivo no aparecía en la lista de dispositivos disponibles.

Entonces me he acordodado de que Google no activa las opciones de desarrollo por defecto, y por alguna extraña razón oculta un poco la forma de activarlas.

Para activarlas, tendremos que ir a Ajustes -> Acerca del teléfono y allí pulsar 7 veces sobre Número de compilación

Una vez hecho esto, nos aparecerá una nueva opción en el menú de Ajustes “Opciones de desarrollo”. Entramos en la nueva opción y activamos “Depuración por USB”, y listo, ya podremos usar nuestro dispositivo para testing.

Lista de certificados raiz de confianza en dispositivos iOS

Si alguna vez desarrollando una app nativa o con cordova tienes problemas de conexión con el servidor al tratar de conectar mediante https, puede ser que el certificado raiz con el que se ha firmado el certificado de tu servidor no sea de confianza.

Para comprobarlo puedes consultar las siguientes listas

Fuente

Bonus:

Si no puedes cambiar el certificado del servidor por uno confiado, pero quieres conectarte puedes usar este método ( no es recomendable usarlo en producción, sólo en desarrollo si tienes un certificado auto firmado )

@implementation NSURLRequest(DataController)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
    return YES; 
}
@end

 

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.