How To: Cross Platform Animations with iOS, Android & Windows

With the last post on Xamarin Forms we went over using GZip Compression with Xamarin Forms which helps reduce data going over mobile networks. In this post, we’ll be looking at how to perform some simple animations with Xamarin Forms.

At RedBit we have Kevin, our lead designer, who makes our software and customer software usable and visually appealing. When envisioning and designing a project he suggests subtle animations to provide within the app. Then as a team, along with the customer, decide on what works and what doesn’t and then implement it.

In this article we are going to look at simple animations and sliding a panel in and out from the right side of the screen using Xamarin Forms. This is the end result of this article

show-panel-full-wpshow-panel-full-droid show-panel-full-ios

Continue reading How To: Cross Platform Animations with iOS, Android & Windows

How To: Invoking Methods From Xamarin Test Cloud UITests

test-cloud-logoAs a Xamarin Certified Premier Partner and a Xamarin Test Cloud Partner RedBit has been working with customers implementing iOS and Android apps and automating their test processes using Test Cloud. In that time we have come up with some issues but workarounds were always implemented to accomplish what needed to be done and IApp.Invoke is one of those great workarounds. We used this recently on a project where we needed to test the tapping of a map pin on Android but it just wasn’t available.

In this article, we’ll go through how to use IApp.Invoke to invoke some code in both Android and iOS Xamarin based app. If you are interested specifically in the mapping example leave a comment and we’ll do a write up on that, but for this article, it will go through adding items to a list on both Android and iOS and testing it using UITest.

Continue reading How To: Invoking Methods From Xamarin Test Cloud UITests

Getting Unique Device ID for iOS, Android and Windows with Xamarin

Over a year ago, I wrote a quick tip on getting device Unique ID for Windows and Windows Phone (8 & 7). Lately, at RedBit, we have been doing quite a bit of iOS, Android and Windows projects using Xamarin and recently put two articles up on our learnings, Cross Platform Animations using Xamarin Forms and GZip Compression with Xamarin Forms. For different reasons, we needed to use a unique ID to identify devices and getting the device ID on each platform is obviously different.

For iOS you can use the UIDevice.CurrentDevice.IdentifierForVendor which can be called from a Xamarin iOS or Xamarin Forms app.

UIKit.UIDevice.CurrentDevice.IdentifierForVendor.AsString();

For Android, again it’s a different API but note, that you need API Level 9 or higher for this to work. It is called as follows from Xamarin Android or Xamarin Forms

Android.OS.Build.Serial;

For Windows you can reference this post I wrote a while back Getting Device ID on Windows & Windows Phone.

At RedBit we have an internal library that we use and here is an excerpt of our RedBit.Mobile.Hardware class

public class Hardware
{
    private static Hardware _Default;
    public static Hardware Default
    {
        get
        {
            return _Default ?? (_Default = new Hardware());
        }
    }

    ///

    /// Gets a device unique identifier
    ///

public string DeviceId { get { return GetDeviceIdInternal(); } } ///
/// Gets a device unique identifier depending on the platform ///

/// string representing the unique id private string GetDeviceIdInternal() { var id = default(string); #if __IOS__ id = UIKit.UIDevice.CurrentDevice.IdentifierForVendor.AsString(); #elif WINDOWS_PHONE id = Windows.Phone.System.Analytics.HostInformation.PublisherHostId; #else id = Android.OS.Build.Serial; #endif return id; } }

I’ve put a sample up on GitHub that outputs the device ID for iOS, Android and Windows. Here is the output on iOS.

deviceId-ios

As always, comments welcome!

Using GZip Compression with Xamarin Forms

In a recent project the RedBit team worked on, we decided to use Xamarin.Form to  build an app for Windows Phone, iOS and Android. Xamarin Forms is still a v1 product but the Xamarin team is rapidly releasing updates to fill in some gaps. As a developer you still have the opportunity to extend Xamarin Forms, for example by building custom renderers. We’ll have a series of blog posts on some learnings from the team to help extend Xamarin.Forms and meet our client’s requirements.

For this first post we’ll be looking at how to implement GZip Compression across iOS, Android and Windows. The benefit to using GZip is there is less data going over the wire reducing mobile data consumption. In the US it’s not much of a problem to send large amounts of data because of unlimited data plans, but in Canada (and other parts of the world) data is not so cheap. In terms of compression, here is a chart showing the difference in data size making a request to http://en.wikipedia.org/wiki/Gzip.

To read more about how to use GZip Compression with Xamarin Forms head over to the RedBit post to see the entire walkthrough.

test-cloud-logoCome join me March 12th where I will be presenting at the Toronto ALM Usergroup on how you can Test your iOS and Android apps on 1000+ devices.

 

step-2

 

Here is the session overview

Imagine that you’ve finished an app. You’ve tested on your physical device and all goes well.

You deploy. It doesn’t go well. Someone tests on a device you don’t have. It crashes.

You get one star reviews leaving you frustrated because customers are downloading your app on a device you don’t own. What if you could test on a thousand devices without spending all of your cash to get them?

With Xamarin Test Cloud you can!

Whether you are deploying an enterprise app or deploying a consumer facing app, Test Cloud allows you to test on 1000+ real iOS and Android devices to catch bugs before users do. You will avoid customers who are frustrated with low performance issues and avoid app killing one star reviews.

Let us show you what Xamarin Test Cloud has to offer, how to write and automate your tests, and potentially avoid those dreaded one star reviews.

So if you want to learn about Xamarin Test Cloud and how it can help you come join us! Pizza will be served from 5:30 – 6:00 before the presentation starts at 6:00.  Sign up here to join us for this time saving event.

And don’t forget, RedBit is a Xamarin Preimier Partner & a Xamarin Test Cloud Partner, so if you are looking to implement a cross platform solution for iOS or Android or need assistance in getting setup with Test Cloud contact us to get you going!

Killing Your iOS App using Xamarin

In the middle of a project where the team is building a customer app for iPad using Xamarin a requirement came up to automatically shut down the after a certain action was performed by the user.  Usually it’s recommended to not ‘kill’ your app on iOS and apps may fail certification if you do this.  Make sure to read the iOS documentation.

Now because we are doing an Enterprise Deploy and not an App Store Deploy, we were pretty safe.

I go in more detail in the post titled Exiting an iOS App using Xamarin on the Exiting an iOS App using Xamarin.

Imagine Cup Student DevCamps Followup

imagineCamp2Over the weekend I was at University of Ottawa presenting to the students in the Electrical Engineering and Computer Science program talking about building for Windows and Windows Phone and the best way to leverage and re-use code across the different platforms.  It’s always exciting to meeting and share with students my experience in software development and helping them along in their endeavours/careers.  You can read more about the event on the RedBit blog 

As a follow up here are bunch of resources and links to things I mentioned during the two days

If you attended (or if you didn’t, heard it was mid terms) feel free to connect with me here or via twitter to ask questions on developing for both Windows and Windows Phone or any other questions in general.

Next up will be Queens University register here and another one end of March in the Kitchener Waterloo Region (will post details on that soon).

Toronto Global Game Jam

Throughout my whole career as a developer I have always tried to participate in various events and speak at events to share the knowledge I have learned in developing software.  With the RedBit team expanding, I get introduced to new type of events and get excited to participate.

header

One of those events is the Global Game Jam and the specifically the Toronto Global Game Jam and the RedBit team will be participating. RedBit as a company has also decided to sponsor the Toronto Global Game Jam. At RedBit we are building some games for customers and used tried different software such Unity and MonoGame so we should be able to get something going in the 48hrs. I will be there to help encourage people to think about all platforms including Windows Phone (it outsells iPhone in 24 Countries), think about games that can go global and think about the female demographic as I think that is an area that is overlooked (45% of gamers are female according to The Entertainment Software Association)

250px-Excitebike_cover

Personally, I’ve played games my whole life and yes I did own Excite Bike. I continue to play games with my kids be it on XBox, Phones or desktops. I have also dabbled in creating games using XNA and going through the process with my son and created ‘hello world’ type games such as Tic Tac Toe and Memory Matching games.

I always get asked what tools should you use? We have used Unity3d and MonoGame with Xamarin, both are good and both allow you to go cross platform which is key in my opinion. At RedBit we are buildign using MonoGame and Xamarin as we are a Xamarin Partner and have all appropriate licenses. If you are building a game, you want to target the widest audience possible and using tools that allow you to go Mac, Windows, iOS, Windows Phone, Android is key. Marketing is also another key factor but that is another post entirely!

I’m excited to be participating in the Global Game Jam to see what comes out of it and feel privileged to be in a position where through my company I can help sponsor the event to help support the developer community.

Will you be there? Let me know as would be great to connect with you!

Oakville’s First Open Data Meetup

I have been involved in open data for a while now from a personal interest as a developer and a business interest via RedBit. I’ve participated in various hackathons, events, done presentation, open sourced some code and even help run an open data group called Open Halton where we try to work with cities and municipalities to open up their data.

 

codeCanada

Over the years I’ve seen many cities open up their data and even seen a Canadian National Open Data policy come into place via Data.gc.ca. It was also exciting seeing Open Data being tabled as part of the G8 summit where it is guided by the following principles

 

  • Open Data by Default
  • Quality and Quantity
  • Useable by All
  • Releasing Data for Improved Governance
  • Releasing Data for Innovation

 

logo

Now the City (or Town rather) I live in (Oakville) is ready to open up the town data and is holding the first community meetup. I will be participating representing the developer community here in the region and how RedBit as a business has leveraged Open Data to generate revenue and most importantly create jobs.

If you are free Feb 5 2014 be sure to join as. You can register at EventBrite and we are holding two sessions to try and accommodate everyone.

Have you done anything with open data? Share what you have done in the comments below or via twitter @MarkArteaga

 

10 Years as a Microsoft MVP

MVP_Horizontal_FullColor

The first time I was awarded Microsoft Most Valuable Professional Award I was awarded for .NET Compact Framework which ran on Windows CE and Windows Mobile. Fast forward 10yrs later and was re-awarded for for the 10th time in a row for Windows Phone Development.

Over the past years, I’ve meet a lot a lot of people from all over the world who just love technology and sharing their knowledge with everyone around. Being from Canada, it is great to see so many new faces and people sharing their knowledge with the local community. There are over 4,000 MVPs around the world in 90 countries and it’s a privilege to be part of a group like this.

965320_10151697658475242_1886223971_o

I guess now I’m considered a veteran to the MVP program, but here is to another year in the community and as a Windows Phone Development MVP. If you see me at a conference/event, feel free to say hi, always great to meet new people!