Posts Tagged ‘iphone’


El rollo de Apple siempre ha sido la consistencia, que todo funcione igual siempre o casi siempre, bueno, eso y que se vea simple y fácil de usar tal como es ahora iOS y Mac OSX mas la adición de hardware a medida. Pero si eso ya está completo, para el usuario final, tener un iPhone o iPad nuevo, tendrá siempre un no se qué muy familiar que no varía de equipo en equipo y eso es iOS.

Esto no se va a cambiar a corto plazo porque la inversión en el ecosistema es grande, por lo que la innovación tendría que venir en la parte del hardware y ya se está mencionando el cristal para el próximo iPhone 7.

Imaginemos que sea así, y tendremos para fines de este año un equipo todo en cristal pero con algo que nos parecerá viejo: el sistema operativo.

Me parece una pena que no haya planes para un MacBook con pantalla táctil pero significaría el fin de los iPad. Si bien existe la separación en los sistemas operativos, debemos aceptar que en un Mac tan sencillo como el MacBook, el uso que se le da es muy similar al que se le daría a un iPad Pro con teclado. Si quieres hacer diseño o programación te comprarás al menos un MacBook Air que te sale más barato.

Mientras que la innovación se de en los materiales del hardware de los nuevos equipos de Apple, aumentará la necesidad de hacer converger iOS y Mac OSX porque la intersección en equipos será cada vez mas grande considerando las mejoras grandes que tiene Intel en el tema de duración de la batería, y en velocidad que logran los procesadores de Apple AX.

A Microsoft ya le pasó, los equipos medianos o tablets ya vienen con Windows 10 (Sistema operativo desktop) y Windows Mobile se ha dedicado exclusivamente para teléfonos, aunque esta última línea no haya despegado como se debe. Como muchos podrán ver, es muy probable que alguna de esas dos plataformas desaparezca y es casi obvio cual sería.

Si Microsoft ha movilizado el PC hasta hacerlo tan ligero como un tablet, Apple va por el camino contrario: Empoderando el móvil para competir con el PC. El único problema es que en algún momento tendrá que decidir cuál plataforma tiene que morir.


Termina la primera conferencia de Apple en el 2016 y la novedad es iPad Pro.

Con un tamaño mas pequeño que el original y con las mejoras en la pantalla, y todo eso con las funciones agregadas en iOS, hacen de este pequeño tablet, el mas avanzado y potente en Apple. Todo bien hasta que Tim Cook dice que esto es el futuro de la computación personal. 

El tema es que para muchos la computación personal es una laptop con un sistema operativo “completo” como Windows 10 o MacOSX y por eso invertimos algo de dinero en equipos que tengan suficiente poder para soportar el paso del tiempo. Pero si sale un grande como Apple a decir que la computación personal no va por ahí, se hace todo muy confuso sobre todo porque el perjudicado no será el usuario final que ya hizo la inversión en una laptop, sino en el mismo Apple que hace cada vez más difícil vender una laptop considerando que ya dijo el mismo Tim Cook que no piensan en un MacBook con pantalla táctil.

Es bien fácil, ¿Para qué invertir más dinero en una laptop si con un iPad Pro tienes casi todo lo que necesitas y incluso algo más? Obvio que esto no funciona si eres un programador, pero para el resto de usuarios es una pregunta muy válida.

Si vamos a Apple.com una laptop MacBook Pro de 13 con retina display cuesta alrededor de 1600 USD, mientras que ir por un iPad Pro con todos sus accesorios va por el orden de los 1400 USD. Pero el ahorro disminuye si es que eliges las líneas nuevas como Air pero se vuelve casi equivalente si vas por la nueva MacBook donde el modelo “serio” está 1600 USD. De todo esto se desprende una cosa: Si realmente necesitas poder, vas por un MacBook Pro y ahorras dinero, pero si prefieres el look y las cosas básicas, tienes hasta 3 opciones: iPad Pro o Macbook o Macbook Air, casi por el mismo precio, y según Tim Cook iPad Pro es la elección para asegurar el futuro.

Mi sugerencia ya está hecha: Si quieres poder, ahorras dinero con una MacBook Pro. Si eres básico: puedes elegir por iPad Pro, MacBook o MacBook Air en ese orden.


Tengo algo de tiempo jugando con Apache Cordova a través de Ionic y me parece que es lo mejor que hay para desarrollo en móviles a pesar de que existen otras alternativas muy interesantes, tal como NativeScript. Nunca tuve problema alguno para generar aplicaciones tanto para Android como para iOS que funcionaran igual y con buen rendimiento, pero estos no son los únicos en el mercado.

Windows Phone 8.1 creo que ha sido una plataforma menospreciada sin razón alguna, pues tiene muchas ventajas, comenzando con el hardware. Desde el punto de vista de desarrollo, era posible utilizar Ionic para generar para WP8.1 pero había que hacer algunos cambios. Desde la publicación de Cordova 6, se anunciaba el soporte de Windows, faltaba ver si era Windows 10 , 8.1 o WP8.1 o el aún no nacido Windows 10 for mobile.

Finalmente he publicado mi primera aplicación para Windows Store con Visual Studio Tools for Cordova y aquí les dejo algunos consejos para que no gasten tanto tiempo como yo. Un adelanto: Realmente sirve para generar tu app en la nueva Universal Windows Platform.

  1. UWP no asegura que tu aplicación funcione bien en Windows 8.1 o en WP8.1. Mi decisión en este punto fue dejar de lado Windows 8.1, claramente la tendencia es dejar de lado esa plataforma, además que es muy fácil hacer el upgrade a 10.
  2. UWP si asegura que tu aplicación funcione en todo lo que sea Windows 10. Lo que generes y funcione en Windows 10 funcionará bien tanto en 32 y 64 bits y también en Windows 10 for Mobile. Obviamente en algunos ira más rápido o lento pero todo lo demás será igual.
  3. Apache Cordova tiene muchos plugins pero no todos funcionaran con TACO. La arquitectura de Apache Cordova se basa en el uso de plugins para acceder a las capacidades nativas del equipo en la que se ejecuta, tratando de definir un conjunto de métodos comunes para facilitar el desarrollo. Esto se puede gracias a que el desarrollador del plugin, crea un código por cada plataforma que quiere soportar que se encarga de implementar lo definido en los métodos comunes, en algunos casos, se crea un código universal y listo, esto gracias a que debemos recordar que usamos las capacidades del navegador nativo. En sencillo: creo un plugin para Apache Cordova que acceda al lector de huellas y tengo que crear un “conector” para Android, otro para iOS y otro para WP, entonces si alguien quiere usar mi plugin en Blackberry pues simplemente no funcionará. La razón de la ausencia de este conector es que el sistema operativo que queremos soportar puede ser que no soporte lo que queremos hacer, o simplemente no sabemos programar para esa plataforma. Por ejemplo, hay un Plugin para leer el IMEI, que funcionaba en Android y iOS, nunca funcionó en WP y recientemente ya dejó de funcionar para iOS. Para todos los efectos, UWP es una nueva plataforma identificada como “windows” en Cordova, así que cada plugin que no tenga un conector universal, o uno que soporte “windows” no podrá ser usado con TACO.
  4. Nunca publiquen un Appxbundle para Windows Phone 8.1. Windows Store ya ha sido unificado y permite que declaremos varios binarios para una sola aplicación, lo cual está muy bien. Lo malo es que hay reglas algo confusas si es que quieres soportar Windows Phone 8.1. Una de esas reglas es que si subes un Appxbundle para una soportar una plataforma, deberás usar también Appxbundle si quieres subir una actualización. Para Windows 10 esta bien pues es super fácil. El problema es para WP8.1 pues hay dos tipos de proyecto: Silverlight y para Windows Store, y como ya sospecharán, si trabajas en Silverlight no podrás generar un appxbundle. Lo malo es que es  muy probable que tu app en Cordova sólo funcione en Silverlight que sólo genera XAP. Por esto, si quieres soportar WP8.1 debes dejar de lado Appxbundle. Tendrás que hacer un paquete XAP sólo para esta plataforma.
  5. No existe un ancho de pantalla. En Apache Cordova se diseña principalmente en escalas porque en móviles hay muchas resoluciones de pantalla. Es por eso que no se definen dimensiones de pantalla, al menos no a cada rato. En Windows la cosa se pone peor, porque las apps pueden correr maximizadas o en una ventana y las dimensiones pueden ser cambiadas por el usuario. Por esto deben diseñar pensando en posiciones relativas para todos los elementos del UI de su app.
  6. TACO genera un proyecto CordovaApp dentro de platforms. Esto es propio de Cordova, cada plataforma tiene su carpeta donde se pone el código generado. En Vstudio TACO también sucede esto y lo mejor es que podemos abrirlo y tener un mayor control en la publicación de nuestra App. Utilicen este proyecto para publicar a Windows Store, se ahorrarán muchos problemas
  7. Para WP81, mejor generen para WP8 y suban a Silverlight. Sobre el punto anterior, el proyecto que les menciono puede generar para Windows 8.1, Windows 10 y WP 8.1, pero no les recomiendo para nada que usen este proyecto para WP8.1. Desde el proyecto Taco original, pueden generar para WP8 que generará otra carpeta dentro de “platforms” wp8 donde encontrarán otro proyecto WP8 que fácilmente pueden actualizar a WP8.1 mediante la opción Retarget que sale al abrirlo. Este tipo de proyecto funciona mucho mejor que el original y de pasada, soporta mas plugins.
  8. Incluye sólo archivos javascript locales. Esta es una recomendación Cordova en general. En el archivo index.html se fijan todas las librerías que vamos a utilizar y estas deben ser locales pues de esa manera evitará problemas si es que el móvil no tiene conectividad. Hay excepciones pero son pocas, por ejemplo, Google Analytics quiere siempre ser llamado en línea, y como no podemos pelearnos con ellos entonces fijemos a esa librería como la única excepción. Todo lo demás local.
  9. Bower es tu mejor amigo. Javascript es un mundo completo y lo mejor que puedes hacer es utilizar un package manager como Bower. En Visual Studio esta tan bien integrado que incluso puedes cambiar las versiones de librerias y éstas se actualizarán automáticamente. Siempre es mejor usar Bower que copiar los archivos js manualmente.
  10. Las librerías Javascript cambian muy seguido. Ya les dije que Bower es lo mejor, pero faltó decirles que las librerías javascript cambian muy seguido, así que lo mejor es tomar nota las versiones que usamos. Una costumbre muy buena es usar GIT para controlar los cambios al código. Con Bower pueden probar la versión de la libreria que mejor les funcione y luego fijar esa versión.
  11. Typescript es la voz. Typescript es como el papá de javascript y hay muchas ventajas al utilizarlo. Vamos a condensar todas en una sola: Puede que cambien los frameworks que utilizas pero todas estarán basadas en Typescript, por lo que tu código será “future-proof”.

Y para cerrar, la recomendación definitiva es que usen GIT y así evitarán que algún cambio accidental malogre su proyecto.

Finalmente, aquí les va el resultado que he logrado para mi aplicación SuperComics para Windows 10 que funcionará en sus PCs o en sus teléfonos con Windows 10. Spanish_wstore_black_258x67


Me gustan los comics, pero más me gusta coleccionarlos. Es decir, tener la certeza de que tengo las series completas y verificar la secuencia de los mismos: no hay nada mas satisfactorio que saber que completaste una serie. En el mundo Cómic muchos apuestan por el tema digital, pero creo que el cómic impreso tiene para largo, porque la sensación es distinta al del libro, quizá sea porque en un cómic hay mas tinta y sangre puesta.

Desde que Peru21 empezó a publicar su serie de cómics a precio accesible, empecé con este hobbie al punto que puedo decir que tengo todas sus publicaciones. Otras editoriales empezaron como Editorial VUK, Skull Editores, Med Comics y después de todos estos años puedo decir que he pasado por la experiencia completa del coleccionista. Es por eso que me puse a trabajar en una aplicación que ya está lanzada el día de hoy: SuperComics como una forma de facilitar la experiencia del coleccionista.

¿Cuál es la experiencia del coleccionista? Pues en estos puntos los resumo:

  • Cronograma: Si sabes cuando van a publicarse tus cómics, se hace más fácil estar al día. Es tan crítico, porque de lo contrario tendrías que estar dando vueltas a la tienda o al kiosco a cada rato y si bien hay ahora algunas tiendas especializadas en cómics, no es fácil darse un tiempo para visitarlas. Con un cronograma se puede controlar cuáles cómics ya tienes y cuáles te faltan.
  • Inventario: Debes poder llevar un control de los cómics que ya tienes. La clásica es que te compras el cómic en un kiosco, y por ahí que caíste por el centro comercial arenales y te diste una vuelta por las tiendas de cómics, viste una carátula interesante y te la compras para darte cuenta en tu casa de que ya la tenías. Llevar la cuenta es clave.
  • Lista de compras: A pesar de los cronogramas, siempre sucede de que te faltó comprar un cómic, o que por esas cosas, perdiste alguna y necesitas reponer así que tendrás que ir a la tienda, kiosco, feria o evento donde esté la editorial. Tendrás que ir apuntando correctamente cuáles son los cómics que te faltan en una lista, aunque para evitar confusiones, tienes que llevar la carátula.
  • Tiendas: como ya dije hay algunas tiendas de cómics que van surgiendo, y algunos kioscos se han comprado el pleito de ofrecer cómics. Personalmente, hay una señora en Jesús María que incluso me guarda los cómics para no perder ninguno, y cruzando la calle hay otra tienda super caleta que te venden el mismo cómic con tu bolsicartón gratis y en bolsita, super cool. Lo malo es que si no conoces, estos lugares te los pasas sin darte cuenta. Otro ejemplo era la tienda de Perú 21 en el centro de Lima, donde podías comprar los cómics atrasados y encima el encargado te regalaba los posters de promoción, hasta ahora los tengo en su tubo porque ya me falta pared para colgarlos.

Finalmente, falta una que es el intercambio, porque si eres coleccionista, seguro que tienes repetidos que puedes cambiar o vender.

En la versión 2 de mi aplicación ofrezco las 4 primeras experiencias de tal forma que sea más fácil empezar a coleccionar, o para los que ya llevan algo de tiempo, controlar su colección más fácilmente.

La prioridad es saber lo que hay en este momento publicado y que ya se puede comprar. Por eso la pantalla de inicio comienza justamente con esos cómics:

screen01

screen14

Los 10 últimos cómics publicados se podrán ver en un carrusel, y si haces click en la portada verás todos los datos del mismo, así como la carátula completa.

screen01 screen09

Puedes ver el logo y el nombre de la colección, alguna nota importante, luego la carátula completa y si deslizas hacia abajo verás la información del cómic y sobre todo 3 botones:

  • Nola: marcas este botón si ya tienes el cómic, de tal forma que cuando regreses, podrás ver que ya lo tienes, porque habrá cambiado a “Yala”, como hacías con las figuritas de tu álbum.
  • Comprar: Si es que quieres comprar este cómic, al marcar este botón se agregará a tu lista de compras, de tal forma que los tendrás a la mano cuando vayas a la tienda. El botón se cambiará a “Lista” cuando hayas agregado el cómic.
  • Social: Podrás compartir orgulloso la carátula del cómic y sacarle pica a tus amigos de que ya lo tienes o que te gustó. Este botón te dará la opción de compartir la carátula en las redes sociales que tengas instalado en tu equipo.

Desde aquí, podrás ir casi a donde quieras:

  • Regresar al inicio: Para ver nuevamente el carrusel de comics recién publicados
  • ¿Que otros títulos tiene esta serie?: Al costado del nombre de la colección hay un punto blanco con una flecha hacia arriba. Haciendo click ahí, podrás ver la lista completa de títulos en esa seríe, al menos los que ya han sido anunciados. En algunos casos, la editorial publica un cronograma completo y podrás ver la serie completa con fechas de publicación y todo. Algo como esto:

screen15

Donde podrás ordenarlos o buscar en los títulos. El botón blanco con la flecha esta vez te llevará hacia la pantalla de la editorial:

screen06

Donde verás las otras series publicadas por esta casa, también con la opción de ordenar y buscar.

Ahora prestemos atención a los 4 botones de la parte de abajo:

  • Novedades: Es una sección secreta del app donde estarán los cómics últimos registrados. O sea que puede que aún no estén disponibles en tiendas. Si la editorial la ha anunciado con anticipación, la encontrarás en esta sección.

screen13

  • Catálogo: Encontrarás otro carrusel con los logos de todas las editoriales que publican localmente, ya sea directamente o a través de algún socio. Es el caso de editoriales gringas como Marvel, Dc, Image, Dark Horse, donde sus títulos son publicados por editoriales locales. Igual, si por ejemplo quieres ver donde está “The Walking Dead” la podrás encontrar tanto en Image como en Editorial Vuk, lo mismo para los otros títulos.

screen04 screen05 screen16

  • Compras: Si es que le diste a comprar en algún cómic, aquí es donde podrás ver tu lista de compras. De esta manera no vas a necesitar llevar tu papelito o acordarte de memoria cual querías comprarte. Después que te compres el cómic, no olvides de desmarcarlo para mantener tu lista de compras ordenada.

screen17

  • Tiendas: ¿Quieres saber donde comprar tus cómics? Pues en esta sección verás algunas de las tiendas que más se dedican al tema, y por supuesto, también he puesto el kiosco en Jesús María donde siempre compro los mios. Personalmente les recomiendo este lugar porque suele tener muchos de los números antiguos sobre todo los de Peru21. Podrán ver las tiendas en una lista, pero también en un mapa.

screen11 screen12

Inicialmente, sólo estaban incluidos cómics o “grapa” como se le dice en la jerga, pero gracias a la amabilidad de Skull Editores, ya se ha incluido su colección de Spawm que es un TPB con 4 números en cada volúmen. En la medida que reciba la información de las demás editoriales, las estaré incluyendo.

Y con esto terminamos las funciones que se pueden ver, ahora veamos las funciones que no se pueden ver:

  • Actualización automática: Salió un nuevo cómic o una editorial acaba de anunciar una nueva serie?. No te preocupes que la aplicación se actualizará automáticamente, sin que te pregunte ni nada.
  • Uso de datos: Ok, actualizar automático es cool, pero consume el saldo si no hay wifi. No te preocupes. Cuando descargues el app, viene incluida la última versión de la base de datos, lo que significa que descargarás solamente la nueva información, la cual es de mas o menos 24K por cómic. Saca tu línea: Si se publican 10 cómics en un día, recibirás una actualización de aprox 240 a 260K, casi nada. Además, si es que te quedaste sin saldo, igual podrás utilizar el app, y hacer de todo, menos el mapa que es la única función en línea. La opción Social también funcionará siempre con Whatsapp, ya que se puede usar sin saldo, Facebook te dirá que no puede subir la foto y las demás si te dirán que no tienes red.

En el futuro se vienen cosas interesantes:

  • Backup de la base de datos: Imagina que ya repasaste todo el catálogo y le diste Yala a todo. Sería una pena perder todo eso porque cambiaste de equipo. Pronto podrás hacer un backup de eso y tenerlo disponible para seguir controlando tu colección.
  • Integración con Facebook: Podrás compartir mas cosas en Facebook desde el mismo app.Además, con esto te podrás identificar de tal forma que puedas recuperar el backup de tu colección.
  • Intercambio/Venta de cómics: ¿Tienes cómics repetidos? ¿Te falta algún cómic? Podrás publicarlo y conectarte con los demás que estén en la misma situación.

La publicación en Google Play Store debe estar en unas dos semanas lista o antes. Con Apple, esto puede tomar algo más de tiempo. Con Windows Store para WP8, voy a demorar un poco más pues Microsoft está en transición así que esa versión me está demorando y si sale esa, podría también estar la versión para Windows 10.

Comentarios y sugerencias en este post, o también al correo del app en supercomics@supermio.com.pe


Esta es una continuación de la serie sobre desarrollo en móviles que comencé aquí. Les recomiendo comenzar a escribir el código fuente desde la parte 1 ya que no se publica el código para descarga.

En esta parte, haremos una introducción a lo que creo que es lo más potente que se ha incluido en Ionic, UI-Router. Hay otros componentes que hacen lo mismo, pero creo que lo más importante aquí es el concepto de estados.

Un estado es un conjunto de vista, controlador y modelo que hace una labor específica en nuestro programa. Tenemos que pensar en una labor muy simple para ver la potencia de este concepto. Por ejemplo, listar todos los correos que tenemos, es un estado, o ver un email en particular es otro estado. Mientras más simple que sea, más reutilizable será el estado.

Ahora, quizá me adelante, pero es posible que un conjunto de estados compartan una base común, por ejemplo, la lista de correos tienen que mostrarse dentro de una ventana con un menú de controles. Para eso, existe el concepto de estados abstractos.

Primero vamos por lo más simple, agregemos los estados. En nuestro caso, es simple pues tenemos solamente un estado que lista todas las noticias. Así que modificamos el archivo app.js para definir el estado.

angular.module('starter', ['ionic','controllers'])

.run(function($ionicPlatform,$rootScope) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }
  });
})
.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider
    .state('news', {
      url: "/",
      views: {
          "home":{
              templateUrl: "templates/news.html",
              controller: "newsController as news"
          }
      }
  })
  // if none of the above states are matched, use this as the fallback
  $urlRouterProvider.otherwise('/');
});

Desde la línea 15 se puede ver la definición del estado. En nuestro caso, hemos llamado al estado con el nombre de “news” y le hemos asignado el url “/”, también se le ha asignado una vista llamada “home” que tiene un template llamado news.html en la carpeta templates y tiene asignado el controlador newsController al que le hemos puesto un alias news. ¿Qué significa todo esto?

Traducción: Al invocarse el estado “news”, AngularJS va a tomar el archivo news.html y le va a asignar el controlador newsController para ejecutarlo. Simple.

En la línea 27 se pone que la aplicación tomará la ruta “/” como ruta por defecto, lo que llevará a la aplicación al estado “news”.

Veamos el archivo news.html.

<ion-view view-title="Noticias">
 <ion-header-bar class="bar-stable">
 <h1 class="title">Ionic Blank Starter>/h1>
 </ion-header-bar>
 <ion-content>
 <p> Hay {{notas.length}} noticias</p>
 <div class="list"
 ng-repeat="noticia in notas">
 <div class="card">
 <div class="item item-divider">
 {{noticia.doc.fecha}}</br>{{noticia.doc.titular}}
 </div>
 <div class="item item-text-wrap">
 <b>{{noticia.doc.resumen}}</b>
 </div>
 <div class="item item-divider">
 Autor: {{noticia.doc.autor}}
 </div>
 </div>
 </div>
 </ion-content>
</ion-view>

El contenido es casi todo lo que antes había en el archivo index.html pero con las tags iniciales en lugar de las <ion-content< que habían antes. Esto le indica a AngularJS que estamos definiendo una vista.

Lo que hemos hecho es separar la vista y asignarle un controlador de forma programática lo cual es muy conveniente para poder reutilizar el código.

Ahora, para que todo esto funcione falta indicarle a AngularJS donde vamos a mostrar el resultado del estado, y para eso veamos como queda el archivo “index.html”

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
 <title></title>
 <!-- compiled css output -->
 <link href="css/ionic.app.css" rel="stylesheet">
 <!-- ionic/angularjs js -->
 <script src="lib/ionic/js/ionic.bundle.js"></script>
 <!-- cordova script (this will be a 404 during development) -->
 <script src="cordova.js"></script>
 <!-- your app's js -->
 <script src="js/services.js"></script>
 <script src="js/controllers.js"></script>
 <script src="js/app.js"></script>
 <script src="lib/pouchdb/dist/pouchdb.js"></script>
 </head>
 <body ng-app="starter">
 <ion-nav-view name="home"</ion-view>
 </body>
</html>

En la línea 20 notarán que hemos reemplazado toda la parte que mostraba las noticias por el tag . Aquí le estamos diciendo a AngularJS que queremos que se muestre la vista llamada “home”, que la hemos definido antes en el archivo app.js.

Traducción, AngularJS cargará news.html, le asignará el controlador newsController y la mostrará en el tag denominado “home”.

¿Cuál es la ventaja de todo eso? la respuesta es separación de responsabilidades. El diseñador Web podrá trabajar en la parte de la presentación con el html y el CSS y colores y demás, mientras que el programador podrá trabajar en el controlador, y si por ahí hay nuevas versiones de la vista o el controlador, pues simplemente se cambia en la definición de la vista y nuestra aplicación no sufrirá el cambio.

Ahora bien, regresemos a la pregunta inicial que recibí y que generó todos estos posts. La pregunta fue que si tenemos una lista de objetos de la base de datos, como hacemos para mostrar los detalles de estos objetos. Pues bien, en nuestro ejemplo, ya estamos recuperando todos los datos así que podríamos tener los detalles ocultos mostrando sólo las cabeceras. Para eso podemos usar la ayuda de Angular-bootstrap, así que instalemos rápidamente.

Paso 1: agregar el CSS en el index.html

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

Paso 2: instalar el componente angular-bootstrap con bower

bower install angular-bootstrap --save

Paso 3: agregar la referencia en el archivo index.html

<script src="lib/angular-bootstrap/ui-bootstrap-tpls.js"></script>

Con el angular-bootstrap listo, sólo nos queda modificar el template news.html para utilizar el componente accordion:

<ion-view view-title="Noticias">
 <ion-header-bar class="bar-stable">
 <h1 class="title">Ionic Blank Starter</h1>
 </ion-header-bar>
 <ion-content>
 <p> Hay {{notas.length}} noticias</p>
 <accordion close-others="oneAtATime">
 <accordion-group ng-repeat="noticia in notas"
 heading='{{noticia.doc.fecha}}-{{noticia.doc.titular}}'>
 <b>{{noticia.doc.resumen}}>/b>;
 </br>
 Autor: {{noticia.doc.autor}}
 </accordion-group>
 </accordion>
 </ion-content>
</ion-view>

Y obtendremos algo como esto, donde haciendo click en los títulos se despliega el contenido de la noticia:
gen21

Todo bien, pero hay otra alternativa, sobre todo si es que queremos ver los detalles de la noticia de forma mas flexible sobre todo si hay mucho texto, pues en ese caso deberíamos tener una lista de noticias y al seleccionar un titular, ir a otra pantalla para ver solamente esa noticia en toda la pantalla.

Para esto debemos crear otro estado a nuestra app, así que hagámoslo. En el archivo app.js agregamos ese nuevo estado y nuestro nuevo app.js lucirá así:

angular.module('starter', ['ionic','controllers','ui.bootstrap'])

.run(function($ionicPlatform,$rootScope) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }
  });
})
.config(function($stateProvider, $urlRouterProvider) {
    $stateProvider
        .state('news', {
        url: "/",
        views: {
            "home":{
                templateUrl: "templates/news.html",
                controller: "newsController as news"
            }
        }
    })
        .state('detail', {
        url: "/detail/:id",
        views: {
            "home":{
                templateUrl: "templates/detail.html",
                controller: "detailController as detail"
            }
        },
        resolve:{
            detail: function($stateParams){
                return $stateParams.id;
            }
        }
    })
    $urlRouterProvider.otherwise('/');
});

Los puntos de interés son la línea 27 donde fijamos el URL y también indicamos que el url vendrá con el parámetro ‘:id’; la línea 34, donde estamos fijando que la variable “detail” será pasada al controlador y tendrá el valor del parámetro ‘id’.
Ahora veamos como ha quedado el controlador nuevo en el archivo controller.js:

.controller('detailController',function($scope,db,detail){
	db.get(detail).then(function(doc){
        $scope.event=doc;
    })
})

Prestemos atención en la línea 11 que estamos pasando la variable ‘detail’ que definimos en la definición del estado y usamos ese valor para recuperar el objeto desde la base de datos. El valor del parámetro ‘id’ debe ser el id del documento que hemos elegido. La función db.get la estamos invocando desde el servicio que hemos definido en el archivo services.js así que tenemos que agregar este a la definición:

return {
  init: function(){
        db.replicate.from(remote,{live:true,retry:true})
        .on('paused',function(info){
            db.allDocs({startkey:'news_\uffff',endkey:'news_',descending:    true,include_docs:true})
            .then(function(result){
                  $rootScope.$broadcast('refrescar',result.rows);
            });
          });
        },
   get: function(id){
        return db.get(id);
   }
}

El documento resultante lo grabaremos en la variable de escope event para usarla en el template para mostrar.

Para verificar esto, veamos como quedan los templates.
Primero, index.html:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
 <title></title>
 <!-- compiled css output -->
 <link href="css/ionic.app.css" rel="stylesheet">
 <link href="lib/angular-bootstrap/ui-bootstrap-csp.css" rel="stylesheet">
 <link href="css/bootstrap.css" rel="stylesheet">
 <!-- ionic/angularjs js -->
 <script src="lib/ionic/js/ionic.bundle.js"></script>
 <script src="lib/angular-bootstrap/ui-bootstrap-tpls.js"></script>
 <!-- cordova script (this will be a 404 during development) -->
 <script src="cordova.js"></script>
 <!-- your app's js -->
 <script src="js/services.js"></script>
 <script src="js/controllers.js"></script>
 <script src="js/app.js"></script>
 <script src="lib/pouchdb/dist/pouchdb.js"></script>
 </head>
 <body ng-app="starter">
 <ion-nav-bar class="bar-positive">
 <ion-nav-back-button class="button-clear">
 <i class="ion-arrow-left-c"></i> Regresar
 </ion-nav-back-button>
 </ion-nav-bar> 
 <ion-nav-view name="home"></ion-view>
 </body>
</html>

Aquí solamente hemos añadido una cabecera para facilitar la navegación en las líneas 23 a la 27.
Ahora veamos el archivo donde mostramos la lista de noticias: ‘news.html’

<ion-view view-title="Noticias">
 <ion-header-bar class="bar-stable">
 <h1 class="title">Noticias</h1>
 </ion-header-bar>
 <ion-content>
 <ion-list>
 <ion-item ng-repeat="noticia in notas" 
 ui-sref='detail({id:"{{noticia.id}}"})'>
 {{noticia.doc.fecha}}-{{noticia.doc.resumen}}</ion-item>
 </ion-list>
 </ion-content>
</ion-view>

Notaremos en las líneas 6 a la 10 que hemos incluido una lista y cada item tiene una directiva nueva: ui-sref que se encarga de llevarnos al estado que se indica cuando se hace click en el item; además le estamos pasando el parámetro id con el valor del id del documento.
Y ahora, para mostrar la noticia usamos el template detail.html que lucirá así:

<ion-view view-title="Noticia">
 <ion-header-bar class="bar-stable">
 <h1 class="title">Detalle</h1>
 </ion-header-bar>
 <ion-content>
 <div class="card">
 <div class="item-divider">
 <h2>{{event.fecha}} {{event.titular}}</h2>
 </div>
 <div class="item-body">
 {{event.resumen}}
 </div>
 <div class="item-divider">
 <h2>{{event.autor}}</h2>
 </div>
 </div>
 </ion-content>
</ion-view>

Como ven, los detalles del documento recuperado los leemos usando la variable ‘event’.

Y el resultado es una app con dos estados: news que muestra la lista de noticias disponibles y al hacer click en alguna llegamos al segundo estado llamado detail donde se muestra la noticia seleccionada completa, para lo cual recibe un parámetro que nos sirve para recuperar los datos desde la base de datos.

gen22

gen23

Seguramente notaremos que para el ejemplo que he desarrollado, hacer otra llamada a la base de datos puede parecer un desperdicio, pero lo que he tratado de hacer es mostrar como pasar parámetros y como utilizar los estados.Lo mas importante es que tenemos dos estados que podemos reutilizar en el resto de nuestra app.

NOTA: Parece que tengo un lector que ha sido responsable y ha seguido todos los pasos. Muchas gracias a Tercio Santos. Al parecer tiene un problema con el app y luego de pruebas en mi equipo, puedo decir que no hay problema con el código. Sólo por si acaso, recomiendo la instalación del plugin Cordova Whitelist:

ionic plugin add cordova-plugin-whitelist

Sucede que en las últimas versiones de Android, es necesario especificar los lugares donde el app puede ingresar y para eso se puede usar whitelist. Si es que no está, Android puede bloquear el acceso a internet de su app, por eso es mejor que esté aunque no lo utilicen todavía. Para una implementación en producción si es necesario configurar bien esos permisos. Ya llegaremos a eso.
Y para que vean que el código camina, aquí va un pantallazo. Recuerden, corre el app la primera vez con red, se muestran los datos, y listo, ya pueden ponerlo en modo avión si quieren y el app tendrá que mostrarle los datos.


Hay algo que se obtiene apenas tomas el iPhone 5s en la mano y es la satisfacción de tener un equipo elegante. Si además puedes desbloquear la pantalla con tan solo poner tu huella, entonces se vuelve una adicción. Realmente Apple aún tiene el toque para hacer equipos que dan gusto utilizar.

Usabilidad: Regresemos al trabajo y me sorprende encontrar que es muy fácil y práctico utilizar el iPhone y su velocidad es muy buena, hasta que tenemos que empezar a ingresar algún texto. El teclado no es malo pero tampoco tan bueno como uno físico.

Las notificaciones es un tema donde si reniego. Mientras que en Android yo puedo ocultar una notificación simplemente arrastrándola, en iPhone sólo puedo borrarlas por grupos, además, si quiero ver realmente que notificaciones tengo pendientes, tengo que abrir el centro de notificaciones pasando el dedo de arriba a abajo, de lo contrario no me entero que hay cosas pendientes. Mal.

Nunca me ha pasado que alguna aplicación se pone lenta o se cuelga, incluso cerrar apps es muy fácil mediante una función copiada de WebOS.

En la parte de correo, la aplicación cliente no es la maravilla pero hace el trabajo, aunque se hace problemas con archivos adjuntos muy grandes. Principalmente, debo resaltar que el soporte para los proveedores de correo mas populares es tan bueno que puedo sin ningún problema sincronizar contactos, calendarios de forma muy fácil, algo que extrañé en Android. El único problema con esto es que iOS se cree tan inteligente que a veces, combina varios contactos en uno solo cuando por algún criterio oscuro cree que se trata de la misma persona. Sugerencia, arregla bien tus listas de contactos antes de sincronizar.

Un punto importante es el Office. Para iOS ustedes sólo podrán modificar archivos si tienen una cuenta de Office365 así que les toca pagar, algo que en otras plataformas es gratis, asi que mientras no lo hagan, sólo podrán visualizar. Así como Office hay otras apps que sólo tienen versión de pago, como por ejemplo Whatsapp así que vayan haciendo algo de caja para actualizar sus apps.

Batería: me sorprendió además que la batería funciona bien, siempre y cuando me dedique a trabajar. Esto no es nada nuevo. Básicamente, si te dedicas a usar cualquier otra app que no sea correo, teléfono o contactos, tu batería va a sufrir y esto también se cumple aquí con iOS. El otro punto es el manejo de las notificaciones Push.

Ya les dije que el cliente de correo es bueno y las opciones de sincronización también lo son, por lo tanto, eso nos permite dejar de usar aplicaciones propias de proveedores como Yahoo o Outlook.com que además de consumirnos recursos, nos consume datos y batería mediante las notificaciones Push. Aquí la regla es que si tenemos una aplicación que tiene la capacidad de alertarnos de contenido nuevo mediante notificaciones, No permitamos que utilice notificaciones. Cada notificación supone consumo de datos y por lo tanto de batería. O sea, fuera Instagram, Facebook, Vine y todas esas, téngalas instaladas y refresquen manualmente para ahorrar algo de batería.

Al final, si se pudieron controlar y dejaron de ver videos de Youtube en su iPhone, puede que lleguen al final de día con batería, o sea igual que el resto de opciones hasta el momento.

Una verdadera molestia es que este teléfono no tenga un puerto micro USB, por lo que tendrán que llevar su cable a todas partes por si es que se quedan sin batería.

 

En conclusión, iPhone 5s es un buen teléfono si es que soy un consumidor de datos, es decir, me la paso leyendo todo lo que me mandan y si contesto algún email, será sólo un par de líneas. Para trabajar a full quizá me quede algo corto tanto en funciones como en batería, pero estaré en la onda si me toca un almuerzo de negocios o una reunión en un bar.


Por un tema técnico, tuve que dejar la revisión del iPhone 5s y hacer la de BB10 Z10 y puedo decir que estoy gratamente impresionado.

Primero, z10 no es un mal equipo principalmente porque su Hub es realmente bueno para enfocarse en los correos electrónicos y mensajes de todo tipo, es como una bandeja de notificaciones, realmente muy práctico. Desde su salida se le criticó por la falta de aplicaciones  y realmente es un problema que sigue en la actualidad, siempre y cuando busquemos aplicaciones nativas BB10 porque una capacidad poco comunicada y explotada permite a estos equipos ejecutar aplicaciones Android, algo que pude comprobar y con un resultado impresionante en algunos casos. Es una pena que Blackberry haya cometido el error de no comunicar propiamente esta funcionalidad, así como otras como la gestión de conexiones y notificaciones.

Usabilidad: Z10 no tiene botones físicos, solamente el de Power y nada más, lo que significa que todo se hace a través de gestos en la pantalla, lo cual esta bien por un rato pero luego se vuelve muy incómodo. Si instalamos muchas aplicaciones, cambiar de aplicación activa se vuelve un ejercicio de gimnasio porque hay que pasar páginas y páginas.

Como era de esperarse leer correos y notificaciones es de lo mejor del equipo, ya que se presentan incluso con la pantalla bloqueada y se puede hacer un vistazo del contenido sin tener que desbloquear el equipo, o ir directamente al mensaje si es que quiero. Sweet.

El teclado no es una maravilla pero es bastante grande y cómodo sin llegar a ser excelente, los que tienen dedos gordos podrán utilizarlo sin problemas.

La configuración de los correos es simple y cubre con una sola aplicación todos los servicios de mensajería, incluyendo algunas redes sociales (Específicamente, Linkedin, Facebook y Twitter) otras redes simplemente no existen como clientes nativos porque recordemos que este es un teléfono de trabajo, pero como ya dije esto se puede solucionar con un app de Android. Para cerrar, el correo se notifica casi tan bien como con la versión clásica de BB y la visualización de los adjuntos es bastante buena. Otro aspecto fundamental es que la sincronización de contactos ya viene para todos los proveedores de mensajería por lo que no tendremos que preocuparnos por dejar algún contacto sin ser reconocido.

BBM está presente y es muy bueno, pero lamentablemente todos mis contactos ya se fueron a otras plataformas así que ya no encuentro a nadie por ahi.

En conclusión, si tuviera un par de botones  mas, el Z10 sería ideal para trabajar, ahora si tuviera un teclado QWERTY sería perfecto. Una lástima que el Q10 tenga un teclado pero con una pantalla reducida, algo que baso el esquema de navegación que tiene BB10 es de un gran impacto.

Ahora, explicaré rápidamente la compatibilidad con Android: Blackberrry hizo bien en implementar la ejecución de apps de Android en BB10, pero se olvidó de algo fundamental, hacer que instalar esas apps en el equipo sea sencillo. Entonces, si es que ustedes quieren ejecutar, por ejemplo, Instagram, tendrán que conseguirse el apk (lo cual es bastante complicado) y pasarlo al equipo (peor) o instalar un Appstore de terceros tal como Amazon store, 1- Mobile o culaquier otro por ahi. Personalmente, recomiendo 1-Mobile (1mobile.com) porque tiene un catálogo mas amplio incluyendo algunas apps propias de Google, inexistentes en el catalogo de Amazon. Lo que sigue es muy simple, elegir la app, descargarla, instalarla y listo.  Como ya estarán sospechando, no todas las apps de Android funcionarán bien, aquí sólo es cuestión de probar, por lo menos he podido comprobar que Google Maps y Instagram funcionan Ok.

Batería: Como también era de suponer, BB hizo un trabajo interesante con el uso de energía a pesar de sus capacidades de multitarea. A pesar de esto, llegar al final del día con carga dependerá de la cantidad de apps que tengan y el tipo de las mismas. Como era de esperar, si instalan apps de Android consumirán mas que si instalan apps nativas. La gran mayoría de apps de BB10 son html5 por lo que su consumo es limitado. Como regla general si tienen un app que use muchas figuritas, sonido y acceso a la red entonces estamos hablando de un alto consumidor de batería.

Igual que con Android, hay que salir a la calle con un cargador. Antes, hay que decidir bien que apps necesitamos verdaderamente.

Consumo de datos: Siendo el correo electrónico la app principal, es la que mejor ha implementado el uso de recursos, así que mientras usemos el BB Hub, estaremos seguros que usaremos la menor cantidad de datos de nuestro plan. Hay que anotar que con BB10 ya no tendremos los servicios de Blackberry.net, al menos no de la forma como estaba en los equipos BB7. Ahora, utilizaremos cualquier plan de datos regular.

Una diferencia fundamental es el manejo de notificaciones. El BB Hub es el app que maneja todo y seremos nosotros quienes decidiremos si aceptar la notificación o no. Entonces, si en Android, una notificación puede iniciar una sincronización sin avisarnos, en BB10 la sincronización se dará si es que aceptamos la notificación. Simple y sobre todo seguro para el usuario.

En conclusión, BB10 es una herramienta especializada para gente que quiere trabajar en la calle, tal vez no sea tan bueno como los equipos con BB7 para el ingreso de texto, pero cumple con su cometido siempre y cuando el correo electrónico sea nuestro único interés porque tendremos que “perdonar” muchas falencias en otros aspectos que son naturales para otras plataformas.  La compatibilidad con Android ayuda un poco pero no ha sido comunicada propiamente.

Para el trabajo podría utilizar un BB10, pero tendría que salir a la calle con otro smartphone para contestar llamadas y demás apps para asegurar que la batería me dure todo el día. Podría contestar correos en el Z10, pero no muy largos. Además, si es que el volumen de correos y cuentas es bastante alto, ésta sería mi única alternativa para poder salir a trabajar a la calle sin problemas.


Acaba de terminar la presentación en WWDC 2014 y lo más notable creo que es que Apple está abriendo los servicios que tiene en iOS a terceros, algo que sonaba a prohibido hace algún tiempo.

Si bien se han introducido nuevos sistemas operativos con algunos cambios y novedades, no hay nada que sea totalmente “ground-breaking”. Si pues, tenemos la integración Mac- iOS y la pantalla de notificación interactiva, y cosas de esas, pero que ahora un tercero pueda usar TouchID o Siri para cosas como prender o apagar las luces de la casa es realmente lo que va a mover el mercado. En otras palabras, Apple ya hizo el gasto creativo, así que ahora le toca a los socios.

Honestamente, teléfonos bonitos ya tenemos varios y algunos son mucho mas bonitos que un iPhone y parece que Apple ya se dió cuenta de eso. Porque ya intentaron con equipos de colores, y con bling bling y ya les funcionó pero no va a durar mucho tiempo. Ya nadie va a ganar la batalla de los teléfonos por sus colores (sorry Lumia), ni por su cámara (sorry Lumia de nuevo)  ni por el procesador que tengan adentro. Para Apple, todo dependerá de lo que puedas hacer con tu teléfono en el mundo real. Suena bien, casi puedo estar de acuerdo con eso, si no fuera porque todo eso viene con un costo que no todos podremos cubrir.

Si me sobrara la plata iría a una tienda de Bang Olufsen y compraría el televisor que se mueve a control remoto y sale de la pared y todo eso y el control remoto que maneja toda mi casa hasta las cortinas pero no me alcanza ni para comprar un pisapapeles de esa tienda. No compraría ni siquiera los Phillips Hue focos porque requieren de un hub que no me serviría para nada mas que para los focos (por ahora). En fin. Es como supercool pero es un ecosistema muy elite. Para los mortales que tenemos que pensar bien las cosas antes de comprar, tendremos que esperar a ver que servicios se vienen y evaluar que tanto nos han movido el piso. Por ahora el terremoto es simplemente una sospecha.

Para los desarrolladores, nos acaban de decir que debemos aprender un nuevo lenguaje de programación, lo cual no me hace nada feliz porque eso significa que va a pasar un tiempo para aprovechar las nuevas ventajas en los programas. Justo a tiempo me puse a leer con atención lo que es trabajar con el proyecto Córdova, y realmente creo que es el camino a seguir. Voy a preparar un Post para explicarles que Córdova significa para los desarrolladores y donde realmente está el truco detrás de esto. Sólo un adelanto: nadie programa en Córdova, se programa en java-script y en los frameworks que se necesitan para no perderse en el espacio.

Hay algo que rescato de todo esto. Siempre dije que la tecnología no es el objetivo, el objetivo es la experiencia y parece que Apple ha comprendido eso y como ya no hay mucho mas que hacer en el campo de hardware, ha abierto las puertas para ver que ideas hay por ahi. Convertir nuestros teléfonos en varitas mágicas que nos abran las puertas de la interacción con servicios y objetos del mundo real. iPhone ya no es un hardware y podría desaparecer sin problema.

¿ La pieza perdida en esta estrategia? todo pasa por el Internet o por wifi en el ecosistema de Apple. Bueno, tienen un servicio basado en Bluetooth para estadios muy bonito llamado Beacon, pero creo que falta un método de comunicación que sea local como RFID o NFC o cualquier otro que permita hacer cosas como GPS cuando estemos en el metropolitano y cosas así. La varita mágica para entornos desconectados.

En fin, lo mejor de iOS es lo que ha de venir de terceros y ya no de Apple. Algo que Android ya comenzó hace algún tiempo y Windows Phone también creo que ha avanzando algo en el tema. Pongámoslo fácil, Android, Windows Phone, iOS ¿Quién de ustedes puede entregar primero la experiencia de comprar una entrada al cine con sólo pasar el teléfono por un sensor? No se puede usar Papaya.pe ni Internet en el teléfono.


Tengo más de 10 años trabajando con teléfonos celulares tanto en la parte de red como en la parte de terminales y he podido ver la evolución de la transmisión de datos en el Perú desde sus inicios, desde que no había nada como GPRS o EDGE y cuando 64 kbps eran super ultra velocidad.

El día de hoy estoy familiarizado con tecnologías de transmisión que te hacen llorar de la emoción: LTE, Wimax, o incluso más domésticas como wifi ac y así por el estilo. Es por eso que puedo decir con autoridad que no importa que tan modernos y rápidos sean nuestros teléfonos o nuestras redes, si es que no están diseñados para trabajar en las condiciones mas extremas, no sirven.

Por condiciones extremas no me refiero al Everest o a una fundición, me refiero a las condiciones de velocidad. Es muy lindo trabajar con un teléfono cuando la velocidad de la red está al tope, lamentablemente eso no sucede la mayor parte del tiempo. Por lo general, la red tendrá un rendimiento muy malo, incluso en servicios tan básicos como voz o sms.

Sobre esto también tengo algo de experiencia pues por mi trabajo he tenido que evaluar rendimiento de redes de telefonía celular en varios países, y el común denominador, al menos en América Latina, es que entre las 12 y las 2 pm y las 6 y las 8 pm, no puedes utilizar tu conexión a Internet en tu teléfono.

El día de hoy tuve la oportunidad de comparar el rendimiento de dos teléfonos:

Apple iPhone 5s vs Blackberry 9810.

Suena una pelea injusta, pero los resultados fueron realmente sorprendentes.

Primero, me encontraba en la zona del campo de Marte en Jesús María y la red en el iPhone marcaba EDGE, igual que en el Blackberry pero con una gran diferencia. El iPhone no podía recuperar mis correos de Yahoo (usando la aplicación nativa de Yahoo) ni tampoco mis correos de Exchange mediante la aplicación de correo propia de iOS. En el caso de Yahoo, tenía solamente la cabecera de los mensajes sin el cuerpo, mientras que de los correos de Exchange no tenía indicación alguna. Obviamente, intenté reiniciando el teléfono o apagando la radio y nada. Es más, descubrí que el iPhone se queda congelado por ratos, especialmente en la aplicación Yahoo cuando la red está así de lenta. Toda la tecnología que tiene pero no me servía de nada.

En el Blackberry, las condiciones de la red hacían que incluso se quede sin señal, algo común que en un principio atribuí al teléfono, pero ahora ya veo que es la red. A pesar de todo, pude comprobar que mis correos estaban ahí y pude leer el cuerpo de los mismos menos los archivos adjuntos. Incluso pude enviar sin problema, algo totalmente imposible en el iPhone.

Conclusión: Si quieres un celular para trabajar, mas importante de lo rápido que pueden ir es que trabajen bien cuando la red esta mala que es normalmente lo que vamos a estar enfrentando en la calle.

Ahora, siendo justos, estamos hablando de un tema ajeno al teléfono. Como el correo electrónico es software, su diseño puede ser pensado para soportar entornos de red muy lentos, tal como lo ha hecho Blackberry. Para Apple, y seguramente también Android, el cliente por defecto no debe ser muy inteligente para manejar entornos de red lentos, pero puede mejorarse.

Entonces, para los desarrolladores debemos pensar siempre en aplicaciones que trabajen en forma desconectada y con streaming de datos a fin de depender lo menos posible de la velocidad de la red, y para los usuarios finales, exijamos aplicaciones desconectadas.

 


Tal vez exagere, pero ya me estaba quedando solo en el BBM que tengo en mi BB9810. Ahora, como por arte de magia, veo como mucha gente regresa a estar disponible en BBM gracias a que al fin se ha puesto disponible para iOS y Android.

Lo mejor de todo es que, si tienes tu Blackberry ID, es que “recuperes” tus contactos que dejaste cuando dejaste tu viejo BB7 lo cual es mas que genial y bien hecho, porque esos contactos del BBM son con los que realmente quiero conversar porque todos invertimos tiempo en añadir los contactos.

BBM en smartphones es realmente lo que un IM debe ser, simple y rápido y orientado a mensajes. Ahora, para Blackberry la clave es atraer gente por ahi para que opte por un BB10 donde “hay mas funciones”. Veamos unas cuantas de esas funciones:

– Compartir pantalla: si bonito, “really cool” si tienes algún amigo algo lento a quien quieras ayudar.

– Video llamadas: interesante, pero aceptémoslo, las redes móviles son lentas y si estamos en wifi mejor usamos skype.

– Mensajes de voz: puede ser, pero lo mejor del IM es que no interrumpe, las notas de voz si.

 

Al final, los mayores beneficiados son todos aquellos que aún tenemos un BB7 ya que estamos recuperando contactos y sobre todo, estamos dejando de usar esa cosa rara llamada Whatsapp.

Ahora, podemos decir que todo esto es bueno para Blackberry, pero a que precio? Veamos, si tengo un smartphone, me pongo BBM y listo, si tengo un BB7, podré optar por un lindo smartphone sin perder mis valiosos contactos de BBM, y si tengo un BB10 sólo me queda llorar de la pena por no haber comprado un smartphone.

Conclusión, no ayuda a migrar desde un BB7 a un BB10 pero resulta muy bueno para los que aún tenemos BB7. Tal vez el foco de Blackberry sea todos aquellos con un feature phone con un BB realmente barato con BBM como el centro de todo. Veamos que se viene.

Para finalizar, el pedido para todos los que acaban de instalar BBM, utilicen su antiguo Blackberry ID . No lo pierdan, es el mayor valor que tiene Blackberry y ese valor no es para ellos, es para nosotros.





%d bloggers like this: