Crash Analytics en Xamarin Forms

Saludos en esta entrada trataré un tema muy interesante e importante para una aplicación, vamos a ver cómo obtener la analítica de Crash (cuando nuestra app explota) de la aplicación de Xamarin Froms. Crash Analytics nos permite realizar un seguimiento de las excepciones, eventos y el comportamiento de la aplicación, puede ser Android o iOS., está diseñada para rastrear a los usuarios, los eventos y los veces que nuestra aplicacion se detiene, análisis de incidentes capturará todos los datos de su aplicación y automáticamente se sincronizará con el servidor y en  tiempo real  se reflejará en el portal respectivo de Crash Analytics que estemos usando. Herramientas como las de Google Analytics nos ayudarán a comprender que la gente está utilizando nuestra aplicación, cuál es el punto de error y cómo podemos mejorar nuestra aplicación.

Hay diferentes tipos de herramientas de Analytics están disponibles en el mercado, cada uno de ellas tiene diferentes capacidades para capturar análisis, algunas de estas  son pagas  y algunas de libre también. A continuación se muestra la lista de varias herramientas de análisis,

  1. Google Analytics
  2. Flurry Analytics
  3. Mix Panel

Crash Analytics con Flurry

A continuación  voy a explicar detalladamente sobre el análisis de Flurry que está disponible gratis y fácil de usar, sino que también proporciona los datos efectivos para fines de análisis, algunas de las ventajas de la Flurry Analytics son los siguientes,

  • Seguimiento de la sesión
  • Registro de eventos, con parámetros opcionales
  • Seguimiento de la vista de página
  • Seguimiento de datos demográficos, como edad, sexo e identificador de usuario
  • Seguimiento de ubicación
  • Seguimiento de la versión de la aplicación, etc …

Aqui estan los pasos para agregar las analiticas de flurry a una aplicacion hecha en Xamarin Forms

  • 1. En primer lugar, tendrás que crear una cuenta en Flurry (es gratis) para crear una cuenta. Visita https://login.flurry.com/signup, completa todos los pasos de registro y accede al portal de Flurry.
  • 2. Después de iniciar sesión Elija la plataforma en la que desea obtener los análisis, como Android / iOS, etc.
  • 3. Ahora vamos a la pestaña Aplicaciones y agregamos la aplicación, Añadir nombre y la categoría de la aplicación, luego saltará a la pantalla Aplicación donde puede ver la clave de la aplicación que es una clave única y se utiliza para identificar su aplicación.

Para cada SDK vamos necesitar un key diferente, ahora mediante el nuget package agregamos el paquete Flurry Analitycs

Hecho esto podemos agregar ya el siguiente codigo para empezar a analizar nuestra aplicación, como en el portal de flurry dijimos que la app era Android , debemos tener en cuenta que vamos a poner el siguiente codigo en el MainActivity.cs  de nuestro proyecto android.

El código es el siguiente:

 FlurryAgent.Init(Xamarin.Forms.Forms.Context, "Your_App_Key");             
FlurryAgent.OnStartSession(Xamarin.Forms.Forms.Context);                                  
FlurryAgent.SetLogEnabled(true);                                         
FlurryAgent.SetLogEvents(true);

Ya que hemos hecho la configuración para la plataforma android, podemos empezar a registrar errores, eveno y excepciones.

Para errores:

 AnalyticsApi.LogError("My Exception", ex); 

Para eventos:

   AnalyticsApi.LogEvent("My Event"); 

Para bindaer datos en los eventos

AnalyticsApi.LogEvent("My Event"+data);    

 

Podemos registrar Eventos y Excepciones en cualquier parte del código,

  • Views: login.xaml.cs
  • ViewModel
  • Repositorio (llamadas API)

Así que ahora  terminado con el registro de la excepción y los eventos de la aplicación,  para ver el análisis que tenemos, debemos iniciar sesión en el portal de Flurry, y seleccionar la aplicación que hemos creado, en el tablero de aplicaciones se pueden ver varias opciones de informes y métricas.

Crash Analytics en cualquier tecnología móvil ayudará a la organización / desarrolladores a aprender dónde se utiliza la aplicación ampliamente y donde los usuarios se enfrentan a problemas, esta servira de  auxilio para entender cómo se comporta la aplicación cuando se utiliza por el cliente y  el análisis proporcionará los datos que hacen que una aplicación sea más optimizada y libre de errores.

Si tienes alguna duda o algún comentario, házmelo saber deja un comentario acá o escribeme a Twitter @yhorbymatias

Concatenar string en un Binding XAML Xamarin Forms

Saludos en esta entrada trabajaré con XAML y XAMARIN FORMS

Imaginemos que tenemos el siguiente código XAML:

<Label Text = "${Binding Price}"
       x:Name = "artPrice"
       HorizontalOptions = "Center"
       VerticalOptions = "Center"
      />

Y queremos que como resultado ese label muestre algo como esto:

$50

pero como resultado cuando ejecutemos nuestra aplicación obtenemos esto:

"${Binding Price}"

Para obtener el resultado deseado nuestro codigo XAML debe estar asi :

<Label Text = "{Binding Price, StringFormat='${0}'}"
       x:Name = "artPrice"
       HorizontalOptions = "Center"
       VerticalOptions = "Center"
      />

Y cuando ejecutemos nuestro label mostrara correctamente el string concatenado y el dato bindeado.

$50

Si tienes alguna duda o algún comentario, házmelo saber deja un comentario aca.

Mayor de N numeros Codigo y Algoritmo -back to basics c#-

Saludos en esta entrada trabajaré con Pseint, C# usando Visual Studio, aca mostrare como llevar un diagrama de flujo, a un algoritmo hasta convertirlo a un ejecutable !!. Si tienes alguna duda o algun comentario, házmelo saber deja un comentario acá o en el video.

Link descarga Pseint: pseint.sourceforge.net

Segundo video

Codigo Fuente

using System;

namespace MayorN
{
 class MainClass
 {
  public static void Main (string[] args)
  {
   

   int mayor=0, menor=0, num=0;
   Console.WriteLine ("Cuantos numeros va ingresar");
   int numeros=int.Parse(Console.ReadLine());
   for(int i =1;i<=numeros;i++){
   Console.WriteLine ("Digite un numero: ");
   num=int.Parse(Console.ReadLine()); 
    
    if(i==1){
     mayor=num;
     menor=num;
    }
    if(num>mayor){mayor=num;}
    if(num<menor){menor=num;}
    
    
    
   num=0; 
   }
   
   Console.WriteLine (" numero mayor es: "+mayor);
   Console.WriteLine (" numero menor es: "+menor);
   
  }
 }
}

Sumando dos variables C# -back to basics c#-

Saludos en esta entrada trabajare con Pseint, C# usando Visual Studio, aca mostrare como llevar un diagrama de flujo, a un algoritmo hasta convertirlo a un ejecutable !!. Si tienes alguna duda o algun comentario, hazmelo saber deja un comentario aca o en el video.

Link descarga Pseint: pseint.sourceforge.net

GTK# Implementacion nativa de UI de C# para Mono y .NET

Saludos en esta entrada veremos como funciona el GTk# una implementacion de UI nativa para sistemas basados en GNOME, ya que cuando dialogas acerca de C# o .net te dicen que es imposible correrla nativa mente en otros SO.

Pues aquí les va una solución !

Que es GTK# ?

Gtk # es un Toolkit de Interfaz de Usuario Gráfico para mono y .Net. El proyecto enlaza el kit de herramientas gtk + y varias bibliotecas GNOME, permitiendo el desarrollo de aplicaciones totalmente nativas Gnome usando los marcos de desarrollo Mono y .Net.

Acá un vídeo usando GTK#

 

 

Portable Class Library (PCL) vs Shared Projects en Xamarin Forms

Si navegamos por la web buscando ejemplos de proyectos o tutoriales de  Xamarin Forms , nos encontraremos  muchos ejemplos usando Shared Projects, por esta razón la mayoría de los recién  iniciados a Xamarin basan sus primeras aplicaciones en estos ejemplos.

Además de los casos de uso heredados, hay razones muy limitadas para usar SharedProjects en aplicaciones Xamarin Forms, las PCL son el método preferido en la mayoría de los escenarios.

En una oportunidad participe en un webinar dictado por el MVP Humberto Jaimes donde toco este tópico, tratare de explicar en este post  lo aprendido y el  research que hice a parte para documentarme.

Shared code

Este al momento de compilar incorpora en cada assembly una referencia al proyecto compartido. Esto puede ser útil cuando deseamos crear assembly por  separados que se orientan a plataformas específicas, pero todavía el código debe ser compartido.

 

Portable Class Library (PCL)

Los proyectos apuntan a perfiles específicos que soportan un conjunto conocido de clases / características BCL. Sin embargo, el lado negativo de PCL es que a menudo requieren esfuerzo arquitectónico adicional para separar el código específico del perfil en sus propias bibliotecas.

Aplicando al mundo real

Con  SharedProject podemos crear las clases como de costumbre, pero si queremos hacer algo específico de la plataforma que estemos trabajando, tenemos que implementar una directiva de compilación en nuestro código.

Por ejemplo.

public string GetTargetPlatform()
{

  var path = "unknown";
  
  #if WINDOWS_PHONE
  path = "windowsphone";
  #else
  
  #if __SILVERLIGHT__
  path = "silverlight";
  #else
  
  #if __ANDROID__
  path = "android";
  #else
  
  #if __IOS__
  path = "iOS";
  #else
  
  
  return path;
}

Estas clases parciales pueden ser buenas para pequeños proyectos o demos.  Sin embargo, si la App tiene varios desarrolladores trabajando en ella  o es  algo más que una aplicación realmente simple o proyecto de demostración, la capacidad de mantenimiento de un proyecto compartido se vuelve menos agradable debido a la falta de control arquitectónico y vamos a estar  luchando por encontrar lo que realmente se está ejecutando en cada plataforma.

Un problema de los shared, es que en un proyecto compartido tiene problemas al definir un nombre de ensamblado. Por ejemplo, en xaml si desea hacer referencia a un control y hacer referencia a un nombre de assembly, cada proyecto nativo tendrá un nombre de assembly distinto, por lo que deberá realizar más ifdefs o OnPlatforms, o nombrar cada proyecto nativo con el mismo nombre de assembly.

las PCLs

No crean que las PCLs no vienen con sus propios  dolores de cabeza pero, proporcionan una asombrosa manera de escribir código fácil  de mantener y probarlo  una vez que la aprendemos a utilizar en múltiples plataformas. Cuando se escribe una PCL, no es necesario insertar directivas de compilación  para cambiar el código en función de cada plataforma, se seleccionan las plataformas que se van a admitir y luego se inicia a escribir el código de nuestra APP. Cuando creamos un PCL, luego podemos ir a Propiedades y establecer los Targets para el proyecto.

targetprofile

PCL son proyectos que pueden dirigirse a diferentes plataformas, podemos elegir cuáles y luego esta nos da acceso a ciertos conjuntos y funciones, dependiendo de cuáles seleccionemos. Las diferentes combinaciones de objetivos para PCL se denominan perfiles y cada perfil tiene su propio número. El perfil más común y recomendado para los proyectos Xamarin Forms es Profile259.

Beneficios

Algunos beneficios del uso de PCL son:
Pruebas de unit testing mas sencillas de aplicar
Código mas facil de leer
Mayor portabilidad
Mejor implementacion  del código

Cual usar ?

Yo en lo personal para grandes proyectos de arquitecturas complejas y una gran necesidad de código portable recomiendo las PCL, en cambio para proyectos pequeños, prototipos y demos recomiendo usar Shared Projects.

 

Si no estas de acuerdo en algo o tienes algo que agregar déjalo en los comentarios ! 🙂