James Montemagno
James Montemagno

Live, Love, Bike, and Code.

Tags


James Montemagno

Xamarin.Essentials

How-to Integrate Helpful Support Emails in Mobile Apps with Insightful Data & Logs

In the mad rush to finish my most recent app, My Cadence, I forgot to integrate an essential feature. A feature that enables my users to easily get a hold of me to report issues or request features, which is of course email support. Both Google Play and the App Store enable you to supply a support website and email, however this is a very lack luster experience for both you and your users. For your users they need to go open the app store, find your app, and then find the support button. For you…

James Montemagno James Montemagno

Asking for app reviews really works! It just takes 1 line of code!

Last week I launched a new app called My Cadence for both iOS and Android. Even though it was a quick app that only took me a week or so to build and ship, I still followed my checklist of best practices to ensure as much success as I could. I of course did real world testing myself and with TestFlight users, I tested light and dark theme modes, and I even put in-app purchases in from the start! Even with all of this, there one line of code (using the Store Review Plugin) that can really make a…

James Montemagno James Montemagno

Building, testing, & shipping My Cadence for iOS in less than a week

My holiday hacking came early this year when I decided to build my own DIY spin bike. Soon, after a few rides, my mind started to swirl with app ideas of how to improve my ride. Then when Apple released Apple Fitness+ without support for displaying cadence information from sensors I knew I had to build an app. That app is My Cadence, which connects to a small cadence sensor and displays the current cadence. It is actually packed full of awesome features including custom themes, in-app purchases,…

James Montemagno James Montemagno

Optimizing Xamarin Apps & Libraries with the Linker

The Xamarin linker is one of the most important pieces of technology when building mobile apps, that no one knows exists. It does all of the hard work for you, stripping out all unused code from libraries that you include in your apps. It should only be used in release mode as it takes extra time to compile your app, but means that your app will be smaller: The linker has specific implementations for both iOS and Android and is completely customizable. Linking for App Developers Before I get…

James Montemagno James Montemagno

Unique Device & App Installation Identifiers for Mobile Apps

One common query I get all the time from developers is how to get a unique device or application identifier for their mobile app. After deciding to not include an API for this in Xamarin.Essentials we heard a lot of different use cases for it including: Client/Server Communication Login Validation In-App Purchase Verification Licensing Purposes The next obvious question that you may have is why didn't we include it in Xamarin.Essentials if everyone seemed to want it? The answer is actually pret…

James Montemagno James Montemagno

Upgrading to Xamarin.Essentials from Plugins

Xamarin.Essentials is a new official library from Microsoft (that I worked on) that provides developers with over 30 cross-platform APIs for their mobile apps to tap into to access native features. Yes, this may sound similar to Plugins for Xamarin, but it is an evolution that is super optimized for each plaform, provides a consistent API, and is super crazy well documented. And of course it is completely open source on GitHub! Why Upgrade? A lot of developers have asked me why they should up…

James Montemagno James Montemagno

Multi-Targeting: Where Did My Files Go? Fixing .NET Core 2.1 SDK Issues

I love multi-targeting for creating libraries, and it is at the core of all of my plugins and Xamarin.Essentials. If you don't know what multi-targeting is don't worry as it is pretty rare that you would need to use it if you are creating apps. Most likely you will want to use multi-targeting in creating cross-platform libraries. In the past you would have to create multiple libraries for each target framework (such as iOS or Android) that you wanted to support if there was platform specific cod…

James Montemagno James Montemagno

Optimizing C# Struct Equality with IEquatable and ValueTuples

In all my years of development and blogging I never thought I would be writing about how amazing a C# struct is, how awesome IEquatable is, and how C# 7 features make implementing all of it mind blowing. In Xamarin.Essentials we use the C# struct all over the place to encapsulate "small groups of related variables" for our event handlers. They are groups of data that don't need to be created by the developers consuming the data and are only really used for reading the data. I never p…

James Montemagno James Montemagno

I crush code and share it, publish NuGet packages, speak at conferences, upload videos, pretend I am good at playing video games, tweet up a storm, drink gallons of coffee, and ride my bike. Checkout my monthly newsletter that you should subscribe to!