<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Enmanuel Toribio</title>
    <description>The latest articles on DEV Community by Enmanuel Toribio (@eatskolnikov).</description>
    <link>https://dev.to/eatskolnikov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F26704%2F469066e2-d846-40e2-b6cc-1543bd9a89fe.jpg</url>
      <title>DEV Community: Enmanuel Toribio</title>
      <link>https://dev.to/eatskolnikov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eatskolnikov"/>
    <language>en</language>
    <item>
      <title>Obtener la firma del usuario en tu aplicación móvil</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Mon, 13 Jan 2020 23:56:54 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/obtener-la-firma-del-usuario-en-tu-aplicacion-movil-2909</link>
      <guid>https://dev.to/eatskolnikov/obtener-la-firma-del-usuario-en-tu-aplicacion-movil-2909</guid>
      <description>&lt;p&gt;Esta es una característica solicitada para muchas aplicaciones en el mundo corporativo, si estás trabajando en algún tipo de aplicación de procesamiento de pagos o una aplicación de entregas. También es posible que necesites la firma del usuario para confirmar que ha recibido un paquete, que se ha entregado un pedido o muchos otros escenarios.&lt;/p&gt;

&lt;p&gt;Con el control de SignaturePad para Xamarin.Forms puedes obtener la firma del usuario en muy poco tiempo para Android, UWP e iOS.&lt;/p&gt;

&lt;p&gt;Poniendolo a funcionar&lt;/p&gt;

&lt;p&gt;Incluye el paquete de Nuget: &lt;a href="https://github.com/xamarin/SignaturePad"&gt;Xamarin.Controls.SignaturePad.Forms&lt;/a&gt; en todos los proyectos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9KRvgs-f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-7.54.53-PM-1024x689.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9KRvgs-f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-7.54.53-PM-1024x689.png" alt="This image has an empty alt attribute; its file name is Screen-Shot-2019-12-29-at-7.54.53-PM-1024x689.png"&gt;&lt;/a&gt;Agregando el paquete de Nuget Xamarin.Controls.SignaturePad.Forms&lt;/p&gt;

&lt;p&gt;Agregue el control en la página donde quieres que aparezca:&lt;/p&gt;

&lt;p&gt;Y ahora el control está listo para ser usado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1F0RnCWN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/signature.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1F0RnCWN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/signature.gif" alt="This image has an empty alt attribute; its file name is signature.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Observa cómo en el ejemplo, me estoy asegurando de establecer las áreas seguras para iOS, de lo contrario, podría obtener algunas superposiciones como en la imagen a continuación:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YBlgCDhE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-8.07.42-PM-469x1024.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YBlgCDhE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-8.07.42-PM-469x1024.png" alt="This image has an empty alt attribute; its file name is Screen-Shot-2019-12-29-at-8.07.42-PM-469x1024.png"&gt;&lt;/a&gt;Se está cruzando el texto “sign above the line” porque no configuramos el área segura&lt;/p&gt;

&lt;p&gt;Características avanzadas&lt;/p&gt;

&lt;p&gt;La interfaz de usuario del control incluye una línea e instrucciones por defecto para firmar encima de ella. También incluye un botón de reinicio y un mensaje de texto que puedes modificar, por ejemplo, para llevar el nombre del cliente. Todos estos textos se pueden configurar con sus respectivas propiedades y también puedes establecer el ancho y el color del trazo de la firma y el color de fondo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tD9AMQ4A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-8.37.16-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tD9AMQ4A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-8.37.16-PM.png" alt="This image has an empty alt attribute; its file name is Screen-Shot-2019-12-29-at-8.37.16-PM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Puede acceder a la imagen de la firma generada de dos maneras. Una es un Stream de la imagen y el otro es como una matriz de puntos (prefiero este ya que luego puedes serializar como un JSON y guardarlo en una base de datos con mucha facilidad).&lt;/p&gt;

&lt;p&gt;Para obtener el Stream de la imagen, debes llamar al método GetImageStreamAsync desde la instancia del control.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stream bitmap = await signatureView.GetImageStreamAsync (SignatureImageFormat.Png);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Para obtener el arreglo de puntos, debes hacer referencia a la propiedad Strokes (trazos) desde la instancia del control.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var strokes = signatureView.Strokes;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Luego puedes usar los mismos trazos para volver a cargar la imagen.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;signatureView.Strokes = newStrokes;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Y eso es todo. Espero que te haya servido ten un buen día.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2020/01/13/obtener-la-firma-del-usuario/"&gt;Obtener la firma del usuario&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>xamarin</category>
      <category>firma</category>
      <category>recibo</category>
      <category>usuario</category>
    </item>
    <item>
      <title>Handling Excel Files with NPOI</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Mon, 13 Jan 2020 23:36:27 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/handling-excel-files-with-npoi-1j66</link>
      <guid>https://dev.to/eatskolnikov/handling-excel-files-with-npoi-1j66</guid>
      <description>&lt;p&gt;NPOI is a library for working with Office documents like Word and Excel. I mainly been using it for reading and writing Excel files so that’s what I’m going to write about. It works with .csv and .xlsx formats and is based on the Apache POI project for Java.&lt;/p&gt;

&lt;p&gt;It works for .net core and you can check their repo here &lt;a href="https://github.com/dotnetcore/NPOI"&gt;https://github.com/dotnetcore/NPOI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To use it you have to include the Nuget package &lt;strong&gt;DotNetCore.NPOI&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install-Package DotNetCore.NPOI
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The NPOI package defines a few interfaces and classes that you will find very familiar if you have ever worked on a spreadsheet. There are the &lt;strong&gt;IWorkbook&lt;/strong&gt; , &lt;strong&gt;ISheet&lt;/strong&gt; and &lt;strong&gt;IRow&lt;/strong&gt; interfaces that respectively represent Workbooks, Sheets and Rows of the document.&lt;/p&gt;

&lt;p&gt;To create a spreadsheet you need to instantiate a Workbook ( &lt;strong&gt;XSSFWorkbook&lt;/strong&gt; ), you can then add Sheets to the workbook and then rows and cells into the Sheets you have created. You can even define the format of the cells, the value types and even combine them if necessary.&lt;/p&gt;

&lt;p&gt;Finally to write the content of the workbook to a file you have to copy its content to a FileStream.&lt;/p&gt;

&lt;p&gt;If you want to read the content of a file, pass its route or a stream to an instance of &lt;strong&gt;XSSFWorkbook&lt;/strong&gt; and then proceed to retrieve the sheets, rows and cells as you wish. Take into consideration that you will only get as many instance of cells in a row as there are cells with values. Empty cells won’t be instantiated so you have to be very careful about how you read the data.&lt;/p&gt;

&lt;p&gt;While NPOI gives you a lot of control on how you want to do things, you may find yourself wanting to just map a collection of a certain object type to an Excel file with named columns. For that specific case we have this other library &lt;strong&gt;NPOI.Mapper&lt;/strong&gt; &lt;a href="https://github.com/donnytian/Npoi.Mapper"&gt;https://github.com/donnytian/Npoi.Mapper&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To use &lt;strong&gt;NPOI.Mapper&lt;/strong&gt; just include the nuget package&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install-Package Npoi.Mapper
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now you can instantiate a &lt;strong&gt;Mapper&lt;/strong&gt; with the route of the file you want to read or a stream to it as a parameter. To read the data just call the method Take() where you specify the class that would represent a row of data.&lt;/p&gt;

&lt;p&gt;If a column doesn’t have a row with a name the Mapper will set the name to the Excel’s display name, like A,B,C, …, AD and so on.&lt;/p&gt;

&lt;p&gt;I hope you find this useful and if you have any doubts the repositories are very well documented and pretty straight forward. If you still have some confusion you can write to me on twitter &lt;a class="comment-mentioned-user" href="https://dev.to/eatskolnikov"&gt;@eatskolnikov&lt;/a&gt;
. Have a good day&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2020/01/13/handling-excel-files-with-npoi/"&gt;Handling Excel Files with NPOI&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>netcore</category>
      <category>core</category>
      <category>dotnet</category>
      <category>excel</category>
    </item>
    <item>
      <title>Getting the user signature with Xamarin Forms</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Mon, 30 Dec 2019 00:49:47 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/getting-the-user-signature-with-xamarin-forms-mi5</link>
      <guid>https://dev.to/eatskolnikov/getting-the-user-signature-with-xamarin-forms-mi5</guid>
      <description>&lt;p&gt;This is a common feature requested for many applications in the corporate world or if you are working on some sort of payment processing application or a delivery app. You may need the user signature to confirm they have received a package, an order has been delivered or many other scenarios.&lt;/p&gt;

&lt;p&gt;With the SignaturePad Xamarin forms control you can get the user sigature in no time for both Android, UWP and iOS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting it to work
&lt;/h3&gt;

&lt;p&gt;Include the nuget package: &lt;a href="https://github.com/xamarin/SignaturePad"&gt;Xamarin.Controls.SignaturePad.Forms&lt;/a&gt; to all target projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9KRvgs-f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-7.54.53-PM-1024x689.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9KRvgs-f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-7.54.53-PM-1024x689.png" alt=""&gt;&lt;/a&gt;Adding the Xamarin.Controls.SignaturePad.Forms nuget package&lt;/p&gt;

&lt;p&gt;Add the control to your page:&lt;/p&gt;

&lt;p&gt;And now the control is ready for use&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1F0RnCWN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/signature.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1F0RnCWN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/signature.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice how In the example gist I’m making sure to &lt;a href="https://blog.torib.io/2019/04/24/layout-safe-areas-for-ios-in-xamarin-forms/"&gt;set the Safe areas for iOS&lt;/a&gt;, otherwise the you could get some overlaps like in the image bellow&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YBlgCDhE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-8.07.42-PM-469x1024.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YBlgCDhE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-8.07.42-PM-469x1024.png" alt=""&gt;&lt;/a&gt;The “sign above the line” text is being crossed because we didn’t set the safe area&lt;/p&gt;

&lt;p&gt;The control interface includes a line and instructions to sign above it. It also includes a reset button and a prompt text that you can set to, for instance, the name of the client. All these texts can be set with their respective properties and you can also set the stroke width, stroke color and background color.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tD9AMQ4A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-8.37.16-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tD9AMQ4A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-29-at-8.37.16-PM.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can access the generated signature image in two ways. One is an Image Stream and the other is as an array of Points (I prefer this one since you can then serialize it a a JSON and save it to a database with much ease)&lt;/p&gt;

&lt;p&gt;To get the image stream you call the GetImageStreamAsync method from the instance of the control&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stream bitmap = await signatureView.GetImageStreamAsync (SignatureImageFormat.Png);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;To get the points array you reference the Strokes property from the instance of the control&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var strokes = signatureView.Strokes;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You can then use the same strokes to load the image back&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;signatureView.Strokes = newStrokes;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;And that’s about it. I hope you enjoyed it and if you did share it with Karen from work she’ll appreciate it, trust me. Have a good day.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2019/12/29/getting-the-user-signature/"&gt;Getting the user signature&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>xamarin</category>
      <category>nugetpackage</category>
      <category>signature</category>
    </item>
    <item>
      <title>Crashing like a pro with App Center</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Sat, 12 Oct 2019 23:44:51 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/crashing-like-a-pro-with-app-center-92f</link>
      <guid>https://dev.to/eatskolnikov/crashing-like-a-pro-with-app-center-92f</guid>
      <description>&lt;p&gt;&lt;strong&gt;Accept your fate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Face it, your app is going to crash at some point. No matter how well you test it or how great the QA team is nor the 100% code coverage or how extensive the device suite for testing you have. There are always going to be edge cases you cannot predict and your app is going to crash at some point.&lt;/p&gt;

&lt;p&gt;Once you accept this fact your job becomes a lot less stressful as you realize your duty from now on is making sure that, when it happens, you get the most context possible, in order to be able to start fixing the problems as they appear and not after getting an angry email from a final user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Picture this scenario&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You and your team have been working on an app for the last 34 weeks and it is ready for production. Because your team is really smart you are using App Center for Continuous Integration and Continuous Delivery, that way the releases will go smoothly every time. You have been testing the app with a big set of different devices with different DPIs and specs, doing unit tests for the code with a lot of code coverage. Everything should work just fine, right? After all, nothing ever goes wrong in production, right?&lt;/p&gt;

&lt;p&gt;A few weeks after the release you get a call from the boss. The app has low review scores, a lot of the negative reviews complaining about constant crashes and error messages, none of them with a concrete explanation of what the issue is or steps to reproduce. “That’s impossible, must be trolls or something, it works on all the devices we tested, and we tested on a lot of devices” – you think to yourself as you get the bad news. Everyone is sad, and you wonder: “How could we have prevented this from happening? How can we fix this?”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enter App Center Diagnostics service&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;App Center Diagnostics makes it easier for developers to monitor the health of their apps. With the App Center Diagnostics SDK, you can remove a lot of the guesswork when figuring out the reasons for app crashes and failings. The SDK collects relevant data and uploads it to App Center, making it available for the developer team to analyze.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error reporting like a pro&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After the SDK is set and you have done a few crashes you can see the diagnostics report by going to the Diagnostics option from the App Center Dashboard and you will see something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9wIKiCKb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/10/Screen-Shot-2019-10-12-at-3.39.21-PM-1024x547.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9wIKiCKb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/10/Screen-Shot-2019-10-12-at-3.39.21-PM-1024x547.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see the details of each crash report and it looks something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y8Wwncus--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/10/Screen-Shot-2019-10-12-at-2.00.02-PM-1024x678.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y8Wwncus--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/10/Screen-Shot-2019-10-12-at-2.00.02-PM-1024x678.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice how the stack trace of the exception that was thrown is shown in detail, this is the best lead we can get to find the root of a specific problem.&lt;/p&gt;

&lt;p&gt;You can see the detail of each individual error report by going to the Reports tab. Each error report includes some metadata from the device and optional data you can provide yourself when capturing the errors, these can give you a better look at how things were before the exception was launch. It looks something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zUc8qwWI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/10/Screen-Shot-2019-10-12-at-2.02.22-PM-1024x700.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zUc8qwWI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/10/Screen-Shot-2019-10-12-at-2.02.22-PM-1024x700.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to actually use the SDK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To setup you need to do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add this nuget package: Microsoft.Appcenter.Crashes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GdFJGgzp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/10/Screen-Shot-2019-10-12-at-4.12.37-PM-1024x673.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GdFJGgzp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/10/Screen-Shot-2019-10-12-at-4.12.37-PM-1024x673.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Include the Crashes type in the App Center SDK start call&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By doing this you have crash report all set. That means if the app crashes from an unhandled exception you will get the information.&lt;/p&gt;

&lt;p&gt;To explicitly log a an exception you need to call the TrackError method. It takes two parameters, an Exception object and a dictionary of strings for the optional parameters.&lt;/p&gt;

&lt;p&gt;The SDK will remember if the app crashed during the previous execution. With this information at hand you can show the user a custom message assuring them that, even though the app exploded, you got this, and everything will be ok.&lt;/p&gt;

&lt;p&gt;To know if the app crashed during the previous execution call the HasCrashedInLastSessionAsync method&lt;/p&gt;

&lt;p&gt;Wrapping things up&lt;/p&gt;

&lt;p&gt;Had the team configured the Crash SDK in the scenario I mentioned at the start of the article, they would have been able to monitor the errors, isolate the problems by platform/device and fix them before they became a bigger issue. They would also have been able to notify the user that yes, the app crashed, but the team got an error report, providing the user with a better sense of security.&lt;/p&gt;

&lt;p&gt;And with that I hope you now have all the tools you need to get your app crashing like a pro with the App Center CrashSDK.&lt;/p&gt;

&lt;p&gt;I hope you liked the article and that it was useful. If you liked anything about it please share it on social media and if you have any questions or comments feel free to contact me on twitter &lt;a href="https://twitter.com/eatskolnikov"&gt;@eatskolnikov&lt;/a&gt; and have a good one.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2019/10/12/crashing-like-a-pro-with-app-center/"&gt;Crashing like a pro with App Center&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>appcenter</category>
      <category>crashing</category>
      <category>debug</category>
    </item>
    <item>
      <title>Definiendo estilos para nuestras aplicaciones</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Thu, 01 Aug 2019 03:01:06 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/definiendo-estilos-para-nuestras-aplicaciones-57jk</link>
      <guid>https://dev.to/eatskolnikov/definiendo-estilos-para-nuestras-aplicaciones-57jk</guid>
      <description>&lt;p&gt;El uso de estilos (Styles) puede ayudar a definir una interfaz de usuario coherente para tu aplicación y es una excelente manera de hacer que tus archivos XAML sean más legibles y mantenibles a largo plazo.&lt;/p&gt;

&lt;p&gt;Algunas características de los estilos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Son muy fáciles de definir.&lt;/li&gt;
&lt;li&gt;Se puede heredar para minimizar la reutilización del código.&lt;/li&gt;
&lt;li&gt;Se puede definir en XAML o en C #.&lt;/li&gt;
&lt;li&gt;Puedes implementar múltiples clases de estilo en el mismo control sin necesidad de herencia.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para definir un estilo, debes agregarlo como un recurso. Puedes definirlo dentro de páginas específicas o dentro de la clase de aplicación. Aquí hay un ejemplo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1xXasnNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/antesdespues.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1xXasnNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/antesdespues.png" alt=""&gt;&lt;/a&gt;A la izquierda se ve cómo se ve la aplicación antes del estilo y a la derecha se muestra el resultado después&lt;/p&gt;

&lt;p&gt;Centrémonos en esta parte:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9je1GOTf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-31-at-10.23.45-PM-1024x307.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9je1GOTf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-31-at-10.23.45-PM-1024x307.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vea cómo agregamos las definiciones de sstilos dentro del &lt;strong&gt;ResourceDictionary&lt;/strong&gt; del &lt;strong&gt;ContentPage&lt;/strong&gt; , también podemos hacerlo a nivel de aplicación. La definición de estilo no puede ser más explícita, estas son las partes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La propiedad &lt;strong&gt;TargetType&lt;/strong&gt; : esta propiedad es obligatoria y define el tipo de control al que estamos aplicando el estilo y las propiedades a las que tenemos acceso para establecer.&lt;/li&gt;
&lt;li&gt;Las etiquetas de &lt;strong&gt;Setter&lt;/strong&gt; : debes agregar una etiqueta de Setter por cada propiedad que desee establecer. Tiene una propiedad de &lt;strong&gt;Property&lt;/strong&gt; y una propiedad de &lt;strong&gt;Value&lt;/strong&gt;. El IntelliSense en Visual Studio completa automáticamente las propiedades y valores disponibles de acuerdo con el &lt;strong&gt;TargetType&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;La propiedad &lt;strong&gt;x:Key&lt;/strong&gt; : esta propiedad es opcional. Cuando configuras esta propiedad, estás definiendo inmediatamente el Estilo como un tipo explícito.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Los estilos vienen en seis sabores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Estilos globales:&lt;/strong&gt; Cuando defines tus estilos dentro de tu aplicación y puedes usarlos en todo el proyecto&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estilos implícitos:&lt;/strong&gt; este es el comportamiento predeterminado, siempre que no asigne una clave (la propiedad x:Key) al estilo, se aplicará implícitamente a todos los controles del &lt;strong&gt;TargetType&lt;/strong&gt; especificado&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estilos explícitos:&lt;/strong&gt; cuando se define un estilo y se establece una clave para él, si haces esto necesitas establecer explícitamente la propiedad Style del control al que deseas aplicar el estilo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estilos dinámicos:&lt;/strong&gt; aunque los estilos no pueden modificarse durante el tiempo de ejecución, puedes utilizar recursos dinámicos como solución alternativa para lograr este efecto.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estilos de dispositivo:&lt;/strong&gt; estos solo se pueden aplicar a las instancias de Label por ahora y hay seis en total, que se encuentran en la clase Devices.Styles: &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.bodystyle?view=xamarin-forms"&gt;BodyStyle&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.captionstyle?view=xamarin-forms"&gt;CaptionStyle&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.listitemdetailtextstyle?view=xamarin-forms"&gt;ListItemDetailTextStyle&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.listitemtextstyle?view=xamarin-forms"&gt;ListItemTextStyle&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.subtitlestyle?view=xamarin-forms"&gt;SubtitleStyle&lt;/a&gt; y &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.titlestyle?view=xamarin-forms"&gt;TitleStyle&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Puedes hacer que un estilo herede de otro estilo utilizando la propiedad &lt;strong&gt;BasedOn&lt;/strong&gt;. Los estilos se pueden aplicar a cada elemento visual en Xamarin Forms. Si planeas heredar de un elemento visual y agregar estilos para este nuevo elemento, asegúrate de especificar el nombre de la clase en TargetType o establece &lt;strong&gt;ApplyToDerivedTypes&lt;/strong&gt; en True en la etiqueta Style&lt;/p&gt;

&lt;p&gt;Como siempre gracias por tu tiempo y espero que te sirva de algo este contenido. Nos vemos en una próxima entrega.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2019/07/31/agregando-estilo-a-nuestras-aplicaciones/"&gt;Definiendo estilos para nuestras aplicaciones&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>xamarin</category>
      <category>estilos</category>
      <category>visual</category>
      <category>xamarinforms</category>
    </item>
    <item>
      <title>Prettying things up with Styles</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Thu, 01 Aug 2019 02:48:43 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/prettying-things-up-with-styles-1ma5</link>
      <guid>https://dev.to/eatskolnikov/prettying-things-up-with-styles-1ma5</guid>
      <description>&lt;p&gt;Using styles you can define a consistent UI for your app and is a great way to make your XAML files more readable and maintainable in the long term.&lt;/p&gt;

&lt;p&gt;Some neat characteristics of styles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They are very easy to define.&lt;/li&gt;
&lt;li&gt;Can be inherited to minimize code reuse.&lt;/li&gt;
&lt;li&gt;Can be defined in XAML or in C#.&lt;/li&gt;
&lt;li&gt;You can implement multiple Style Classes so the same control without the need for inheritance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To define a &lt;strong&gt;Style&lt;/strong&gt; you need to add it as a Resource. You can define them inside specific Pages or within Application class. Here is an example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1xXasnNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/antesdespues.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1xXasnNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/antesdespues.png" alt=""&gt;&lt;/a&gt;On the left is how the app looks before the style and on the right is the result after&lt;/p&gt;

&lt;p&gt;Let’s focus on this part:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9je1GOTf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-31-at-10.23.45-PM-1024x307.png" alt=""&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See how we add the Styles definitions inside the ContentPage’s Resource Dictionary, we can do this too at an application level. The Style definition cannot be more explicit, here are the parts of it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;TargetType&lt;/strong&gt; property: This property is mandatory and defines the type of control we are applying the style to and the properties we get access to set.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Setter&lt;/strong&gt; tags: You have to add a Setter tag per each property you want to set. It has a &lt;strong&gt;Property&lt;/strong&gt; property and a &lt;strong&gt;Value&lt;/strong&gt; property. The IntelliSense in visual studio autocompletes the available properties and values according to the &lt;strong&gt;TargetType&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;x:Key&lt;/strong&gt; property: This property is optional. When you set this property you’re immediately defining the Style as an explicit type. You would have to set the style property of the control you want to affect.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Styles come in six flavors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global Styles:&lt;/strong&gt; You can define your styles inside your Application and use them in the whole project&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implicit Styles:&lt;/strong&gt; This is the default behavior, as long as you don’t assign a key to the style it is going to be applied implicitly to all controls of the specified TargetType &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explicit Styles:&lt;/strong&gt; When you define a style and set a key for it you need explicitly set the Style property of the control you want to apply the style too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Styles:&lt;/strong&gt; Although Styles cannot be altered during runtime you can use Dynamic Resources as a workaround to achieve this effect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Device Styles:&lt;/strong&gt; These can only be applied to Labels instances for now and there are six in total, found in the Devices.Styles class: &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.bodystyle?view=xamarin-forms"&gt;BodyStyle&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.captionstyle?view=xamarin-forms"&gt;CaptionStyle&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.listitemdetailtextstyle?view=xamarin-forms"&gt;ListItemDetailTextStyle&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.listitemtextstyle?view=xamarin-forms"&gt;ListItemTextStyle&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.subtitlestyle?view=xamarin-forms"&gt;SubtitleStyle&lt;/a&gt; and &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.styles.titlestyle?view=xamarin-forms"&gt;TitleStyle&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can inherit from a Style by using the BasedOn property. Styles can be applied to every visual element in Xamarin Forms. If you’re planning on inheriting from a visual element and add styles for it, make sure to either specify the class name in the TargetType or set the ApplyToDerivedTypes to True on the Style tag.&lt;/p&gt;

&lt;p&gt;As always I hope this was helpful to you. Until the next one.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2019/07/31/prettying-things-up-with-styles/"&gt;Prettying things up with Styles&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>xamarin</category>
      <category>looks</category>
      <category>styles</category>
      <category>xamarinforms</category>
    </item>
    <item>
      <title>Checking the new Checkbox in Xamarin.Forms 4.1 and overviewing InputKit control</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Fri, 05 Jul 2019 22:10:23 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/checking-the-new-checkbox-in-xamarin-forms-4-1-and-overviewing-inputkit-control-17pd</link>
      <guid>https://dev.to/eatskolnikov/checking-the-new-checkbox-in-xamarin-forms-4-1-and-overviewing-inputkit-control-17pd</guid>
      <description>&lt;p&gt;&lt;em&gt;Pun very much intended…&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;With the release of Xamarin.Forms 4.1 arrives a new &lt;a href="https://docs.microsoft.com/en-us/xamarin/android/user-interface/controls/buttons/check-box"&gt;Checkbox control&lt;/a&gt;. Here is what it looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DP-4Vvml--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-05-at-4.12.25-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DP-4Vvml--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-05-at-4.12.25-PM.png" alt=""&gt;&lt;/a&gt;Image was taken straight from the documentation &lt;a href="https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/checkbox"&gt;&lt;/a&gt;&lt;a href="https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/checkbox"&gt;https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/checkbox&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are the two ways to instantiate it in XAML and C#&lt;/p&gt;

&lt;p&gt;The Checkbox has a bindable property for the checked status (IsChecked) and you can handle the &lt;strong&gt;CheckedChanged&lt;/strong&gt; event too.&lt;/p&gt;

&lt;h4&gt;
  
  
  A little thing
&lt;/h4&gt;

&lt;p&gt;The control has a rounded shape on iOS if you want it to have a square shape you can use the &lt;a href="https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/visual/"&gt;Visual API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For now, the CheckBox control doesn’t include a Text property and it doesn’t render a Label next to it, to achieve this you would need to explicitly include a Label control and align it next to it.&lt;/p&gt;

&lt;p&gt;The result looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZXHt1Mfs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-05-at-6.11.48-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZXHt1Mfs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-05-at-6.11.48-PM.png" alt=""&gt;&lt;/a&gt;On the left side is the iOS version on the right side the Android one&lt;/p&gt;

&lt;h3&gt;
  
  
  Other options
&lt;/h3&gt;

&lt;p&gt;If you’re working on a legacy project or, for whatever reason, you are not able to update to Xamarin.Forms 4.1 but you are still looking to include a CheckBox here are a couple of options for you:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Use the&lt;/strong&gt; &lt;a href="https://docs.microsoft.com/en-us/xamarin/android/user-interface/controls/switch"&gt;&lt;strong&gt;Switch&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;control.&lt;/strong&gt; In a practical/functional way, this is pretty much the same as a CheckBox in that you can manage on/off (true/false) states. The UI is certainly not that of a Checkbox but if all you need is the functionality this will be just fine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use the &lt;a href="https://github.com/enisn/Xamarin.Forms.InputKit"&gt;Xamarin.Forms.InputKit&lt;/a&gt; library&lt;/strong&gt;. It has been out for a while now so the team has had the time to include some neat features, like being able to set the label for the control, radio buttons and set a custom check icon to name a few.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using the Xamarin.Forms.InputKit library&lt;/p&gt;

&lt;p&gt;Like most third-party libraries in the Xamarin Ecosystem, it is very easy to set up and gives you access to a healthy variety of controls. We will focus on the Checkbox functionality, for now. I may write about the complete library on a later entry.&lt;/p&gt;

&lt;p&gt;To set up the library just do as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Include the &lt;strong&gt;Xamarin.Forms.InputKit&lt;/strong&gt; NuGet package in all your projects.&lt;/li&gt;
&lt;li&gt;Initialize it in your target projects by calling &lt;strong&gt;Plugin.InputKit.Platforms.iOS.Config.Init();&lt;/strong&gt; or &lt;strong&gt;Plugin.InputKit.Platforms.Droid.Config.Init(this, savedInstanceState);&lt;/strong&gt; accordingly.&lt;/li&gt;
&lt;li&gt;Reference the library’s namespace in your XAML &lt;strong&gt;xmlns:input=”clr-namespace:Plugin.InputKit.Shared.Controls;assembly=Plugin.InputKit”&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Prepend the input namespace to the controls you want to include.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To create a checkbox you would write something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pGP9zcza--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-05-at-4.57.07-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pGP9zcza--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-05-at-4.57.07-PM.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dkXhIgii--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-05-at-4.57.17-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dkXhIgii--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-05-at-4.57.17-PM.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Same as the new Xamarin.Forms Checkbox control, the InputKit one includes a bindable property for the checked state called &lt;strong&gt;IsChecked&lt;/strong&gt; and you can listen to the checked status changed status either with the event handler &lt;strong&gt;CheckChanged&lt;/strong&gt; or with the command &lt;strong&gt;CheckChangedCommand&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As mentioned before, this library has been around for some time some it includes a few more things than the new Xamarin Forms native Checkbox like the ability to include the checkbox’s label text and the type of checkbox you want to render. These are the different types:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--01QzHyi7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-05-at-4.02.53-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--01QzHyi7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/07/Screen-Shot-2019-07-05-at-4.02.53-PM.png" alt=""&gt;&lt;/a&gt;Image was taken straight from the repository &lt;a href="https://github.com/enisn/Xamarin.Forms.InputKit"&gt;&lt;/a&gt;&lt;a href="https://github.com/enisn/Xamarin.Forms.InputKit"&gt;https://github.com/enisn/Xamarin.Forms.InputKit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wrote a sample project here if you want to check it out &lt;a href="https://github.com/eatskolnikov/CheckBoxSample"&gt;https://github.com/eatskolnikov/CheckBoxSample&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that’s all folks, as always, I hope this information has been of use to you and if you liked it feel free to share it with your peers and check the other posts. Thanks, Bye!&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2019/07/05/checking-the-new-checkbox-in-xamarin-forms-4-1-and-overviewing-inputkit-control/"&gt;Checking the new Checkbox in Xamarin.Forms 4.1 and overviewing InputKit control&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>xamarin</category>
      <category>controls</category>
      <category>ui</category>
      <category>xamarinforms</category>
    </item>
    <item>
      <title>Changing that Back button label on iOS with Xamarin Forms</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Thu, 30 May 2019 11:00:41 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/changing-that-back-button-label-on-ios-with-xamarin-forms-2bc4</link>
      <guid>https://dev.to/eatskolnikov/changing-that-back-button-label-on-ios-with-xamarin-forms-2bc4</guid>
      <description>&lt;h3&gt;
  
  
  Some context
&lt;/h3&gt;

&lt;p&gt;I’ve been working on the app for CodecampSDQ (&lt;a href="https://apple.co/2MgbFfA"&gt;iOS&lt;/a&gt; | &lt;a href="http://bit.ly/2Mqsp3A"&gt;Android&lt;/a&gt;) to be celebrated on the premises of Intec this June 1st. The code is based on &lt;a href="https://github.com/xamarinhq/app-conference"&gt;this repo&lt;/a&gt; and we have made some adequations that I will probably talk about in greater detail later.&lt;/p&gt;

&lt;p&gt;I found myself at an impasse for a few minutes doing the localization for the app when trying to change the Back button label on iOS and that’s what I’m going to talk about next.&lt;/p&gt;

&lt;h3&gt;
  
  
  The meat and potatoes
&lt;/h3&gt;

&lt;p&gt;To change the label content all you have to do is set this property &lt;strong&gt;NavigationPage.BackButtonTitle&lt;/strong&gt;. You can set it up using XAML or C#&lt;/p&gt;

&lt;p&gt;Here is the thing though, you need to set the property from within the ContentPage you’re navigating from, instead of the destination page. In other words, say you have &lt;strong&gt;Page1&lt;/strong&gt; and &lt;strong&gt;Page2&lt;/strong&gt; and you want Page2’s back button label to say “Take me home”, you would need to set the &lt;strong&gt;NavigationPage.BackButtonTitle&lt;/strong&gt; property on &lt;strong&gt;Page1&lt;/strong&gt; for it to work. If you set it on &lt;strong&gt;Page2&lt;/strong&gt; it will simply not work and you will get the Back button.&lt;/p&gt;

&lt;h3&gt;
  
  
  Some explaining ensues
&lt;/h3&gt;

&lt;p&gt;To some of you getting started, this implementation may seem a little backward at first. You will probably think “Why would I change the presentation of a page from another page?” and that’s what happened through my mind after spending an unhealthy amount of time trying to figure out why the back labels wouldn’t change.&lt;/p&gt;

&lt;p&gt;A good Justification may be the following: Let’s imagine you want to be able to navigate to a page from different paths (we will call these potential paths &lt;strong&gt;source pages&lt;/strong&gt; ) and you are reusing a page to show samely structured data in different contexts (we will call that a &lt;strong&gt;detail page&lt;/strong&gt; ). In this scenario, you want to be able to remind the user where they are going to land after pressing that back button from the detail page. With the current implementation, you can add as many source pages as you need and you don’t have to modify the Details page at all for every one of them nor will you need to pass a parameter or something in the ViewModel just to specify this value.&lt;/p&gt;

&lt;h2&gt;
  
  
  In conclusion
&lt;/h2&gt;

&lt;p&gt;Overall I think this is a fun simple feature that can make your life easier and help us achieve world peace but remember to implement it correctly.&lt;/p&gt;

&lt;p&gt;If you liked the article and would like to read more articles like this I encourage you to check the other content on the site and if you really really like it I hope you share it with your pal’s and gal’s print it and paste it at your town square or just share it on social media, that works too. Thanks for passing by and have a good one.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2019/05/30/changing-that-back-button-label-on-ios-with-xamarin-forms/"&gt;Changing that Back button label on iOS with Xamarin Forms&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>xamarin</category>
      <category>ios</category>
      <category>localization</category>
      <category>xamarinforms</category>
    </item>
    <item>
      <title>Layout safe areas for iOS in Xamarin Forms</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Wed, 24 Apr 2019 22:11:08 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/layout-safe-areas-for-ios-in-xamarin-forms-bhk</link>
      <guid>https://dev.to/eatskolnikov/layout-safe-areas-for-ios-in-xamarin-forms-bhk</guid>
      <description>&lt;p&gt;Since the launch of the iPhone X there is a notch at the top of the screen on iOS devices that tend to be annoying to work around. You would have to add some sort of margin to avoid your controls to be overlapped by it. The problem with this approach is that you would have to take into consideration wether or not the phone was in landscape or portrait mode.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3uOPejhS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-24-at-5.57.33-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3uOPejhS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-24-at-5.57.33-PM.png" alt=""&gt;&lt;/a&gt;Trying to show a label with the text “Some Fancy content”&lt;/p&gt;

&lt;p&gt;To avoid these frustrations Xamarin Forms introduces a SafeArea flag that you can set on your Page Layout to ensure it’s content will automatically adjust the margin depending on the orientation of the device.&lt;/p&gt;

&lt;p&gt;You can set it with C#&lt;/p&gt;

&lt;p&gt;Or using XAML, see the ios namespace declared bellow and then how we set the flag right after&lt;/p&gt;

&lt;p&gt;And you will get something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uIz5oSjh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-24-at-6.11.05-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uIz5oSjh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-24-at-6.11.05-PM.png" alt=""&gt;&lt;/a&gt;The text is at a healthy distance from the notch and you can clearly see it.&lt;/p&gt;

&lt;p&gt;One &lt;strong&gt;very important thing&lt;/strong&gt; to take into consideration is that you need to set this flag for every &lt;strong&gt;Page&lt;/strong&gt; you have on screen. Say for example you have a MasterDetailPage that looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--js9JaABI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-24-at-5.57.45-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--js9JaABI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-24-at-5.57.45-PM.png" alt=""&gt;&lt;/a&gt;oh no! both the Master and the detail are being overlapped ):&lt;br&gt;&lt;/p&gt;

&lt;p&gt;To fix it you would have to set the safe area to both the Mater and the Detail Page as follows:&lt;/p&gt;

&lt;p&gt;And now it will look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0IBnjnlt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-24-at-6.19.19-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0IBnjnlt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-24-at-6.19.19-PM.png" alt=""&gt;&lt;/a&gt;No text is being overlapped! yey!&lt;/p&gt;

&lt;p&gt;This is another short one but hopefully very useful. If you liked it please share it on social media or at your local church group if you are into that. I will really appreciate it. Have a good one.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2019/04/24/layout-safe-areas-for-ios-in-xamarin-forms/"&gt;Layout safe areas for iOS in Xamarin Forms&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>xamarin</category>
      <category>ios</category>
      <category>notch</category>
      <category>space</category>
    </item>
    <item>
      <title>Image caching in Xamarin Forms</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Thu, 18 Apr 2019 01:23:13 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/image-caching-in-xamarin-forms-2706</link>
      <guid>https://dev.to/eatskolnikov/image-caching-in-xamarin-forms-2706</guid>
      <description>&lt;p&gt;Someone asked me about an issue they were having when showing a ListView that had an image for each cell. When the user would scroll the images would flicker and the UI would turn a bit slow. The images were being loaded from the internet.&lt;/p&gt;

&lt;p&gt;The problem the person was having was that they were not using a correct caching strategy for the images and now I’m going to explain how you can fix this problem in case it happens to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enough context, let’s do the caching
&lt;/h2&gt;

&lt;p&gt;If you want to add cache to your image you should use something like this:&lt;/p&gt;

&lt;h2&gt;
  
  
  Some explanations ensue
&lt;/h2&gt;

&lt;p&gt;When you want to show an image you know you specify the &lt;strong&gt;Source&lt;/strong&gt; of the Image. Probably as a URL or a route to a resource, both look like strings but if you look a bit further you will notice the Source property of the Image is actually of type &lt;strong&gt;ImageSource&lt;/strong&gt; and it can be assigned any value that inherits from it.&lt;/p&gt;

&lt;p&gt;In the code sample, we set the Source to an instance of &lt;strong&gt;UriImageSource.&lt;/strong&gt; This class has more properties but the three properties we want to focus on are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Uri:&lt;/strong&gt; This is the address of the image we want to show.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CachingEnabled:&lt;/strong&gt; This is a boolean value that will Enable or Disable the caching. The default value is true.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CacheValidity:&lt;/strong&gt; The timestamp when the cache will be dismissed. The timestamp parameters are Days, Hours, Minutes, Seconds. In the Code sample, we are setting the cache to 7 days. In the XAML sample to 30 days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that’s it. Pretty concise and quite useful. Hope you liked reading it as much as I did writing this article. You can get more information on working with images and the source for the feature image in this article from &lt;a href="https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/images?tabs=macos"&gt;the official Xamarin Documentation.&lt;/a&gt; Bye!&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2019/04/17/image-caching-in-xamarin-forms/"&gt;Image caching in Xamarin Forms&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>xamarin</category>
      <category>caching</category>
      <category>images</category>
      <category>xamarinforms</category>
    </item>
    <item>
      <title>Adding fingerprint authentication in Xamarin Forms</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Thu, 11 Apr 2019 06:25:42 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/adding-fingerprint-authentication-in-xamarin-forms-ggd</link>
      <guid>https://dev.to/eatskolnikov/adding-fingerprint-authentication-in-xamarin-forms-ggd</guid>
      <description>&lt;p&gt;Adding a fingerprint authentication for multiplatform projects have never been easier than with the &lt;a href="https://github.com/smstuebe/xamarin-fingerprint"&gt;Plugin&lt;/a&gt;&lt;a href="https://github.com/smstuebe/xamarin-fingerprint"&gt;.Fingerprint&lt;/a&gt; nuget package.&lt;/p&gt;

&lt;h2&gt;
  
  
  But first…
&lt;/h2&gt;

&lt;p&gt;A few things to clarify about biometric/fingerprint authentication. These are implementation limitations by the technology itself and not introduced in any way by the Xamarin Forms implementation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You cannot save “the fingerprint”. There are two reasons for this:

&lt;ul&gt;
&lt;li&gt;The detection of the fingerprint is done &lt;a href="https://www.androidcentral.com/how-does-android-save-your-fingerprints"&gt;inside the hardware&lt;/a&gt; that reads the finger. &lt;/li&gt;
&lt;li&gt;By law you &lt;strong&gt;cannot&lt;/strong&gt; , &lt;strong&gt;should not&lt;/strong&gt; and for now, &lt;strong&gt;won’t&lt;/strong&gt; have access to this information&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If your device has more than one registered fingerprint you &lt;strong&gt;cannot&lt;/strong&gt; tell which fingerprint was used to authenticate.&lt;/li&gt;
&lt;li&gt;You can only tell if the sensor has or hasn’t received a valid fingerprint.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Now to the main event
&lt;/h2&gt;

&lt;p&gt;To start you want to include the Plugin.Fingerprint into all your solution projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UoECBeDo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-11-at-1.19.21-AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UoECBeDo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-11-at-1.19.21-AM.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you have to do a little bit of setup. Don’t be scared it’s just three lines for Android and a couple lines for iOS.&lt;/p&gt;

&lt;h3&gt;
  
  
  On Android:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Request the permissions needed inside your AndroidManifest.xml&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set the Activity running the app so the plugin can show the request dialog when asking for the fingerprint. In the plugin repository, they use the CurrentActivity plugin but I noticed that you can just set it up inside the MainActivity by adding the &lt;strong&gt;this&lt;/strong&gt; keyword&lt;/p&gt;


&lt;h3&gt;
  
  
  On iOS:
&lt;/h3&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Because this plugin works for both Face and Fingerprint authentication, according to the &lt;a href="https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW75"&gt;iOS documentation,&lt;/a&gt; you need to add an entry for &lt;strong&gt;NSFaceIDUsageDescription&lt;/strong&gt; into the &lt;strong&gt;Info.&lt;/strong&gt; &lt;strong&gt;plist&lt;/strong&gt; file. If you do not add this entry the plugin simply won’t work and your app may even crash. This entry describes what you will be using the face id for in case you were to use the face authentication.&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After the setup is done you need to call the AuthenticateAsync method. You should pass the text you want the user to see when you ask them to authenticate. The return is a boolean value that indicates whether the fingerprint was of a valid user or the user canceled the dialog. It also returns a false right away if there are no registered fingerprints.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D51mwngD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/fingerprint.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D51mwngD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/fingerprint.gif" alt=""&gt;&lt;/a&gt;Running the example on a OnePlus6&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus content: Configuring your emulators and simulators for fingerprint authentication
&lt;/h2&gt;

&lt;h3&gt;
  
  
  On the iOS simulator:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Make sure you “enroll” the Touch ID.&lt;/li&gt;
&lt;li&gt;To send a valid or invalid Touch ID you can use the options in the menu or the following keyboard shortcuts Shft+Cmd+M and Shift+Cmd+N&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OL4Fmjjj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-11-at-2.01.03-AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OL4Fmjjj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-11-at-2.01.03-AM.png" alt=""&gt;&lt;/a&gt;Enrolling the Touch ID on an iPhone 8 plus simulator&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  On the Android emulator:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Just go to the emulator options and see the Fingerprints section. From there you get access to a fixed number of the fingerprint.&lt;/li&gt;
&lt;li&gt;Proceed to register them into the device.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hJvcryKw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-11-at-2.16.39-AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hJvcryKw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-11-at-2.16.39-AM.png" alt=""&gt;&lt;/a&gt;Looking for the fingerprint management section&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YSOVYBEK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-11-at-2.17.18-AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YSOVYBEK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/Screen-Shot-2019-04-11-at-2.17.18-AM.png" alt=""&gt;&lt;/a&gt;Configuring the fingerprint. Just tap the “Touch this sensor” button from the emulator options whenever you get asked&lt;/p&gt;

&lt;p&gt;I hope you find this useful. I think something like this could be very useful to include in Xamarin.Essentials. &lt;a href="https://github.com/xamarin/Essentials/issues/71"&gt;From what I’ve gathered&lt;/a&gt; they are in plans of adding it but haven’t yet so maybe this is a good chance to do something about it… Anyways, have a good day and if you liked this article I encourage you to share it on social media or fax it to your dad and your mom, they will probably love it, trust me.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2019/04/11/adding-fingerprint-authentication-on-xamarin-forms/"&gt;Adding fingerprint authentication in Xamarin Forms&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>xamarin</category>
      <category>authentication</category>
      <category>fingerprint</category>
      <category>login</category>
    </item>
    <item>
      <title>Five questions about Startup Weekend</title>
      <dc:creator>Enmanuel Toribio</dc:creator>
      <pubDate>Wed, 10 Apr 2019 01:11:16 +0000</pubDate>
      <link>https://dev.to/eatskolnikov/five-questions-about-startup-weekend-54mp</link>
      <guid>https://dev.to/eatskolnikov/five-questions-about-startup-weekend-54mp</guid>
      <description>&lt;p&gt;From May 10th to the 12th of the current year I will be volunteering as a technology coach in the next entry of Startup Weekend Fintech so I wanted to write a little bit about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Startup Weekend Fintech?
&lt;/h2&gt;

&lt;p&gt;Startup Weekend is an event, kind of like a hackathon, where you get to develop a business idea from nothing to MVP and pitch it in 54 hours. Startup Weekend Fintech is the same but for business ideas related to Financial Technologies.&lt;/p&gt;

&lt;p&gt;The event is &lt;a href="http://bit.ly/2U8VKhR"&gt;not free&lt;/a&gt; and I do not get any sorts of commissions from tickets sales. The cost is about US$15 per participant and you get food for three days, a nice badge, a shirt and a gift bag with useful stuff.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who should participate?
&lt;/h2&gt;

&lt;p&gt;Anyone with curiosity on how to mix businesses and technology. The technology of business is the business of the future.&lt;/p&gt;

&lt;p&gt;In my previous experiences, too few developers participate in SWFintech, maybe it is the name or something but, if you are a developer I want to encourage you to participate. If you are one of the lucky few this will probably make you realize the value you can have, if it happens that there are lots of developers you may realize the number of people who may think like you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should you participate?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e3Oe3o96--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/sweducation.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e3Oe3o96--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.torib.io/wp-content/uploads/2019/04/sweducation.jpg" alt=""&gt;&lt;/a&gt;Back in 2015, feels like ages ago &lt;/p&gt;

&lt;p&gt;Back in 2015 I participated and won on another Startup Weekend. That time was Startup Weekend Education. The people I met back then and the things I’ve learned from the experience are invaluable and it is my hope that you get the same out of the experience.&lt;/p&gt;

&lt;p&gt;If you have a Fintech idea that you haven’t started and you want an excuse to start working on it, this is the perfect chance to validate and learn how to prepare a pitch for that or any other future idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s the catch?
&lt;/h2&gt;

&lt;p&gt;I’m going to be blunt, even if you win the Startup Weekend, the chances are you are not going to be the next Mark Zuckerberg or the next Bill Gates or Peter Thiel. According to some tales, &lt;a href="https://www.entrepreneur.com/article/295798"&gt;9 out of 10 startups fail within the first 18 months&lt;/a&gt;, this may sound or even be &lt;a href="https://tech.co/news/startup-failure-statistic-myth-2016-04"&gt;a little bit hyperbolic&lt;/a&gt; but the point is that from the start &lt;a href="https://www.cbinsights.com/research/startup-failure-reasons-top/"&gt;the odds are going to be against you.&lt;/a&gt; Most successful businesses are made by people who probably knew each other for quite a while before starting a business together and have some level of cohesion and similar values. You may find your matching team and everything can be great but time will always tell.&lt;/p&gt;

&lt;p&gt;My reason for saying all this is that you shouldn’t feel bad if your idea doesn’t work, you will learn a lot of useful information during the event and will probably meet a lot of smart people with whom you can build relationships and then, maybe, even make real businesses not related to the idea you went with.&lt;/p&gt;

&lt;p&gt;Part of the reason behind these kind of events is to prepare you for the future, this is an opportunity to train your conflict resolution skills and your decision making skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you prepare?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Be well rested when you arrive&lt;/li&gt;
&lt;li&gt;Eat well&lt;/li&gt;
&lt;li&gt;Drink plenty of water&lt;/li&gt;
&lt;li&gt;Think of possible ideas and write them down&lt;/li&gt;
&lt;li&gt;Do not have your idea implemented&lt;/li&gt;
&lt;li&gt;Do not go with a team, part of the fun is networking and getting out of your comfort zone. You can bring friends but avoid being on the same team.&lt;/li&gt;
&lt;li&gt;Leave your ego outside&lt;/li&gt;
&lt;li&gt;Remember the clock is ticking&lt;/li&gt;
&lt;li&gt;Get your ticket &lt;a href="http://bit.ly/2U8VKhR"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you think someone may be interested but not convinced send them this article and let’s hope for the best. I hope you go and if you do say hi and good luck.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://blog.torib.io/2019/04/09/five-questions-about-startup-weekend/"&gt;Five questions about Startup Weekend&lt;/a&gt; appeared first on &lt;a href="https://blog.torib.io"&gt;Enmanuel Toribio&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>events</category>
      <category>fivequestions</category>
      <category>coaching</category>
      <category>entreprenurship</category>
    </item>
  </channel>
</rss>
