July 20, 2015

Same Day Xamarin Support for Visual Studio 2015

By

Today, Microsoft is unveiling the final release of Visual Studio 2015 in a global webcast, and we are joining the celebration! Visual Studio Logo Now Released to Market (RTM) for full use in production, Visual Studio 2015 includes many new features and improvements that make it easier to build apps quickly, including diagnostics, new C# 6 language features, and tighter integrations with TFS for streamlined DevOps.

We’re excited to announce same-day Xamarin support for Visual Studio 2015, including Visual Studio 2015 Community Edition, MSFT’s free IDE for non-enterprise apps. Xamarin and Visual Studio help you go mobile quickly, whether you’re building small projects, amazing consumer games, or employee-facing productivity apps. This combination of Xamarin and Visual Studio 2015 is our most integrated release ever – featuring a Visual Studio 2015 installation process that allows you to choose to install Xamarin with a single click, giving you everything you need to start building native cross-platform apps, all in C#.

Watch Storyboard in Visual Studio 2015

Be sure to check out the Visual Studio 2015 launch webcast today at 8:30am PDT, where MSFT product management teams will demonstrate Visual Studio 2015 product enhancements, including the latest from Xamarin.

It’s never been easier to start building iOS and Android apps — all from VS, all in C#. To learn more about developing native iOS and Android apps with Visual Studio and Xamarin, visit xamarin.com/visual-studio.

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInEmail this to someone
July 17, 2015

Can’t Miss Community Content

By

Xamarin developers not only build amazing iOS and Android apps in C#, but love contributing to the Xamarin community through blog posts, components, plugins, and podcasts. The links below will take you to some of favorites over the past few weeks:

Podcasts

    Xamarin Podcast Special Edition: Google IO

    Explore mobile backend options with the Xamarin Podcast.

  • Xamarin Podcast — Exploring Backend Options: Mike James and Pierce Boggan discuss mobile backend options for Xamarin developers, including Oracle MCS, Microsoft Azure, and Facebook’s Parse.
  • Gone Mobile — Automated App Testing with eBay’s Niels Frydenholm: eBay’s Niels Frydenholm joins Greg Shackles and Jon Dick to discuss automatic app testing.

Great Blog Posts

Xamarin.Forms

Add bindable maps with the Maps behavior from Jonathan Yates.

Adam Wolf’s card UI using Xamarin.Forms.

Thanks to these developers for sharing their Xamarin knowledge with the rest of the developer community. If you have an article or blog post related to Xamarin development that you would like to share, please let us know by tweeting @XamarinHQ and it may be featured in an upcoming community content roundup.

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInEmail this to someone
July 16, 2015

Save the Date for Xamarin Evolve 2016

By

Mark your calendars for Xamarin Evolve 2016, taking place April 24-28 in Orlando, Florida! Join the Xamarin team and fellow developers for the largest cross-platform mobile development event in the world.

Xamarin Evolve 2016

Last year, Xamarin Evolve hosted a sell-out crowd of over 1,200 attendees. Speakers from leading companies including Microsoft, Dropbox, Github, Google, Accenture, and IBM led over 90 conference and training sessions covering everything from the Xamarin platform and the latest in iOS and Android development, to the future of C#, mobile security, and cross-platform best practices. Xamarin Evolve attendees were also the first to know about groundbreaking new Xamarin products and capabilities for mobile development.

These are the top five things that Xamarin Evolve attendees told us that they left the conference with:

  • Deeper mobile technical knowledge and skills
  • The ability to go faster with their mobile projects
  • Greater confidence in the success of their mobile strategy
  • Amazing new connections
  • An unforgettable experience

Photos from Xamarin Evolve 2014

Xamarin Evolve 2016 is going to be even more unforgettable! With so much happening in mobile development, and an even bigger venue, you’re going to want to take part in everything Xamarin Evolve has to offer.

Sign up below to be notified when tickets go on sale!

Sign up

 

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInEmail this to someone
July 15, 2015

Share Even More Code with Plugins for Xamarin

By

One of my top priorities for Moments, a Snapchat clone built with Xamarin.Forms and Microsoft Azure, was to maximize the amount of code shared between my target platforms. I was already achieving a significant amount of shared code with Xamarin.Forms, but I noticed that many things, such as checking for device connectivity or showing a dialog, had to be done on a per-platform basis. Plugins for Xamarin helped fill in those gaps and allowed me to share even more code.

Plugins for Xamarin NuGet Icon

A Plugin for Xamarin is a special kind of NuGet that adds cross-platform functionality or abstracts platform-specific functionality to a common API. These are extremely lightweight and completely cross-platform, so they can be accessed via a Portable Class Library (PCL) or Shared Project. Below, I’ve shared a few of my favorite Plugins for Xamarin that I used to build Moments.

Connectivity

In today’s world, it’s vital that apps maintain connectivity when interacting with web services and other network-dependent logic. With the Connectivity Plugin for Xamarin and Windows, it’s never been easier to check the connection status of a mobile device, gather connection types and bandwidths, and more.

Testing network connectivity from shared code is literally as easy as writing one line of code:

var connected = CrossConnectivity.Current.IsConnected;

The Connectivity Plugin for Xamarin and Windows can also test the reachability of specific hosts using the IsReachable and IsRemoteReachable methods. Finally, you can subscribe to the ConnectivityChanged event to ensure that your app always knows if the device is connected to the internet:

CrossConnectivity.Current.ConnectivityChanged += (sender, args) =>
{
    // Connectivity changed! Check args.IsConnected!
};

Settings

Another common use case among mobile apps is the ability to store user settings. Each platform exposes its own way of storing settings, such as NSUserDefaults on iOS and SharedPreferences on Android. The Settings Plugin for Xamarin and Windows takes the ability to create and access settings cross-platform!

Rather than dealing with the various platform-specific implementations, the Settings Plugin for Xamarin and Windows makes it easy to implement user settings, as seen below:

public class Settings
{
    public bool NotificationsEnabled
    {
        get { CrossSettings.Current.GetValueOrDefault<bool> ("notificationsEnabled"); }
        set { CrossSettings.Current.AddOrUpdateValue<bool> ("notificationsEnabled", value); }
    }
}

Not only is the Settings Plugin for Xamarin and Windows great for managing settings from shared code, but it can also act as a simple cross-platform key-value store with support for many different data types, such as strings, integers, doubles, booleans, DateTimes, and more!

Dialogs

From alert popups to loading spinners, dialogs are a staple of mobile app development. The User Dialogs Plugin for Xamarin and Windows allows you to show almost any type of dialog you can think of from shared code, including loading spinners, alerts, confirmations, and error dialogs.

Loading Indicators
For performing potentially lengthy tasks, such as logging in a user, use the ShowLoading method:

UserDialogs.Instance.ShowLoading ("Loading");

When the task ends, you can hide the dialog using the following method call:

UserDialogs.Instance.HideLoading ();

Success & Failure
If a dialog needs to reflect success or failure, such as the the result of a user log in, you can use the success and failure APIs available within the User Dialogs Plugin for Xamarin and Windows:

// Success
UserDialogs.Instance.ShowSuccess ("Success");
// Failure
UserDialogs.Instance.ShowError ("Error");

Download a Plugin for Xamarin Today

All of the Plugins for Xamarin listed above helped me significantly increase productivity by achieving over 87% shared code in Moments. Check out Plugins for Xamarin on GitHub to find a plugin for your next project, or find out how easy it is to build your own Plugin for Xamarin.

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInEmail this to someone
July 14, 2015

Novarum DX Transforms Global Health Initiatives with Xamarin

By

Novarum DX logoLateral flow tests indicate the presence of specific substances in a fluid by showing one or more lines on a testing substrate. Familiar to many people in one of their simplest forms as home pregnancy tests, as the tests become more sophisticated and complex, reading them accurately becomes more challenging and time-consuming. Today, there are thousands of these tests on the market for a variety of applications, from enabling physicians to monitor the health of HIV/AIDS patients and detecting harmful chemicals in water supplies, to providing near-instant tests for deadly diseases such as Ebola.

While the tests provide a high degree of portability and rapid results for field and point-of-care use, interpreting them often requires laboratory expertise. Novarum DX, based in Edinburgh, Scotland, aims to change that and unlock the full potential of lateral flow tests. “We started Novarum DX three years ago based on the idea that we could make the reading of lateral flow tests easy by using smartphones and their built-in cameras,” says Neil Polwart, Managing Director at Novarum DX. The Novarum Reader can provide pass/fail test results as well as quantitative outputs, providing foolproof performance for virtually any user with minimal training.

Novarum DX app on iPhon 6When Novarum DX first started developing their technology, they looked at the full breadth of cross-platform development tools with a focus on minimizing UI development. They soon realized, however, that the most important thing for the Novarum Reader was native access to the camera, native computational performance, and the ability to reuse business logic. “In other write-once-run-anywhere solutions, you don’t get powerful enough access to the device hardware, nor do you get native performance. We’re doing computationally expensive image processing, so we need the native performance Xamarin provides,” Polwart explains.
 
Xamarin has streamlined the development process for Novarum DX. “We’ve used Xamarin from the beginning. Using native development, we’d have to have two separate teams, so essentially Xamarin enables us to use half the resources we would otherwise,” says Polwart. “We aim for 80% code reuse between platforms.”

The Novarum DX team has grown from two team members to eleven in just three years, including five mobile developers who work across Android, iOS, and Windows Phone. “Since that first app, we’ve undertaken about 20 different projects for a variety of customers, including medical device companies with strict quality and regulatory requirements. We’ve developed a platform approach based on Xamarin that allows us to speed up development for our customers. For a basic app, we expect to be able to build something in four to six weeks, and we’ve generated about 1.5 million US dollars in revenue with Xamarin as our platform.” reports Polwart.
 

View the Case Study
 

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInEmail this to someone
July 13, 2015

Beautiful Material Design with the Android Support Design Library

By

It was clear when Google introduced Material Design that it would shift the Android landscape even more than its Holo predecessor, and thus far the journey for developers to implement those new design principles in their apps has been a bit of a long and bumpy ride.

Material Design for Android Applications Introduction

In the beginning, Material Design was only available on devices running Android 5.0+ Lollipop, but over time the Support Library v7 AppCompat was updated to enable Material theming on older versions of Android.

Theming, though, is only a part of the equation. Material Design also comprised a lot of new UI components and interactions that were not present in AppCompat. This is where the new Android Support Design Library comes in, offering a wide range of implementations of several portions of the Material Design specification in a fully backwards compatible fashion when combined with Support Library v7 AppCompat.

Get The Support Design Library

If you haven’t gotten up to speed yet on switching your apps to use AppCompatActivity and AppCompat theming, be sure to first read through our entire blog post on how to get set up. Once your app has been AppCompat enabled, head over to the component store from inside of Visual Studio or Xamarin Studio and Search for “Android Support Design”.

Component Support Design for Android Applications

Add the component to your project and the Support Design Library NuGet, and samples will automatically be installed in your project. Be sure to browse the sample for an overview of everything that Support Design Library has to offer.

Now that you’re set up, let’s take a look at a few of my favorite new widgets that are built into this awesome library.

Floating Labels with TextInputLayout

The EditText widget offers a wide range of customizations, including my favorite, the Hint property, but there is one small issue with it. While the Hint property displays an indication of what your users should enter when in its unfocused state, it vanishes when the user taps the control or if anything is entered in the EditText field. This usually means you have to add a separate label to your fields to add context.

Not anymore! The TextInputLayout can now wrap any EditText and will automatically animate the Hint to be displayed right above the EditText widget.

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <EditText
        android:id="@+id/username"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Username" />
</android.support.design.widget.TextInputLayout>

Here it is in action:
Android Application - Floating Label

Snackbar: Powerful & Enhanced Toast

Toasts on Android are normally used to display short lived information that has no interaction.

The new Snackbar component on the other hand, provides a similar lightweight feedback mechanism but lets you specify extra actions available to users. If you’ve used toasts before, the core API will look familiar:

Snackbar
  .Make (parentLayout, "Message sent", Snackbar.LengthLong)
  .SetAction ("Undo", (view) => { /*Undo message sending here.*/ })
  .Show (); // Don’t forget to show!

Android Application Components - Toasts

You should note the use of a View as the first parameter to Make () — Snackbar will attempt to find an appropriate parent of the Snackbar’s view to ensure that it’s anchored to the bottom.

There are several instances where the Snackbar will come in handy. Take the example above of a login page: you may want to use the new Snackbar to display information when the user attempts to log in. Additionally, if your user enters an incorrect password, you could supply an optional action to clear the password field:

loginButton.Click += (sender, e) => {
  if (string.IsNullOrWhiteSpace (username.Text)) {
    Snackbar.Make (drawerLayout, "Fill in username.", Snackbar.LengthLong)
	    .SetAction ("OK", (v) => { })
	    .Show ();
  } else if (password.Text != "monkey") {
    Snackbar.Make (parentLayout, "Invalid Password", Snackbar.LengthLong)
            .SetAction ("Clear", (v) => { password.Text = string.Empty; })
            .Show ();
  } else {
    Snackbar.Make (parentLayout, "You are now Logged in!", Snackbar.LengthLong)
            .Show ();
  }
};

Snackbar in Android Application

Effective Navigation in Android

Navigation Drawer using Material Design in Android ApplicationThere are several ways to handle navigation in your app, including dashboards, tabs, and even drop down spinners. My favorite, though, is the Navigation Drawer.

By providing a simple, yet highly customizable slide out menu, the Navigation Drawer is an ideal pattern for a lot of apps. Implementing the Navigation Drawer was always a bit of a pain, but this has been greatly simplified by combing the new NavigationView class with the standard DrawerLayout.

The NavigationView makes it easier to display menu items by leveraging the standard menu resource system that you’re already familiar with. It also provides a simplified way of adding a header layout to the top of your NavigationView. You can easily have a beautiful and functional Navigation Drawer up and running with just a few lines of code.

Setup

The root of your app will be a standard Android XML that will house three important items:

  • DrawerLayout: Top-level container for an interactive drawer
  • Your Content: What you want to display on your main activity (usually a fragment that is swapped out)
  • NavigationView: Easy way of implementing the navigation drawer and inflating menu items

Here is the standard code for your Android XML:

<android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">
    <!-- your content layout -->
    <android.support.design.widget.NavigationView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:id="@+id/nav_view"
            app:headerLayout="@layout/drawer_header"
            app:menu="@menu/nav_menu"/>
</android.support.v4.widget.DrawerLayout>

Add the Menu

You should note two attributes for NavigationView: app:headerLayout controls the (optional) layout used for the header and app:menu is the menu resource inflated for the navigation items. Create a new file named nav_menu.xml under Resources/menu.

A simple drawer will just contain a few items, but there’s nothing preventing you from having deeper menu hierarchies with sub-headers, like in the screenshot:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <group android:checkableBehavior="single">
    <item
      android:id="@+id/nav_home"
      android:icon="@drawable/ic_dashboard"
      android:title="Home" />
    <item
      android:id="@+id/nav_messages"
      android:icon="@drawable/ic_event"
      android:title="Messages" />
    <item
      android:id="@+id/nav_friends"
      android:icon="@drawable/ic_headset"
      android:title="Friends" />
    <item
      android:id="@+id/nav_discussion"
      android:icon="@drawable/ic_forum"
      android:title="Discussion" />
  </group>
  <item android:title="Sub items">
    <menu>
      <item
        android:icon="@drawable/ic_dashboard"
        android:title="Sub item 1" />
      <item
        android:icon="@drawable/ic_forum"
        android:title="Sub item 2" />
     </menu>
  </item>
</menu>

Code Behind Setup

You’re nearly done! All you have to do now is fill in a little bit of code behind to cue click events to open and close the drawer and react when a menu item is selected. You’ll need to locate the DrawerLayout and NavigationView in OnCreate for your Activity, and then add an event handler to the NavigationView’s NavigationItemSelected event. This is triggered when an item is selected, and you will need to set it to “checked” and close the drawer.

DrawerLayout drawerLayout;
NavigationView navigationView;
protected override void OnCreate (Bundle bundle)
{
  base.OnCreate (bundle);
  // Set our view from the "main" layout resource
  SetContentView (Resource.Layout.main_layout);
  var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
  SetSupportActionBar (toolbar);
  //Enable support action bar to display hamburger
  SupportActionBar.SetHomeAsUpIndicator (Resource.Drawable.ic_menu);
  SupportActionBar.SetDisplayHomeAsUpEnabled (true);
  drawerLayout = FindViewById<DrawerLayout> (Resource.Id.drawer_layout);
  navigationView = FindViewById<NavigationView> (Resource.Id.nav_view);
  navigationView.NavigationItemSelected += (sender, e) => {
    e.MenuItem.SetChecked (true);
    //react to click here and swap fragments or navigate
    drawerLayout.CloseDrawers ();
  };
}

The only other thing to do now is to tell the drawer layout to open the drawer if the hamburger button is pressed:

public override bool OnOptionsItemSelected (IMenuItem item)
{
  switch (item.ItemId)
  {
    case Android.Resource.Id.Home:
      drawerLayout.OpenDrawer (Android.Support.V4.View.GravityCompat.Start);
      return true;
  }
  return base.OnOptionsItemSelected (item);
}

Navigation Drawer In Action in Android Application

So Much More Material

This is only the start of your Material Design adventure. Be sure to check out the Support Design Library’s Getting Started Guide on how to take advantage of native Floating Action Button, Material Tabs, Collapsing Toolbars, and complex animations with CoordinatorLayout.

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInEmail this to someone
July 10, 2015

Explore Backend Options with the Xamarin Podcast

By

This week on the Xamarin Podcast, Pierce and I discuss the mobile backend options available to Xamarin developers, including Microsoft Azure, Oracle MCS, and Facebook’s Parse and share our personal experiences with various backend providers.

Subscribe or Download Today

Knowing the latest in .NET, C#, and Xamarin is easier than ever with the Xamarin Podcast! The Xamarin Podcast is available from iTunes, Stitcher, and SoundCloud. Do you have an interesting story, project, or advice for other .NET mobile developers? If so, we’d love to share it with the Xamarin community! Tweet @pierceboggan or @MikeCodesDotNet to share your blog posts, projects, and anything else you think other mobile developers would find interesting. Be sure to download today’s episode on mobile backend options for Xamarin developers, and don’t forget to subscribe!

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInEmail this to someone
July 9, 2015

Customize Your Xamarin.Forms App With Pages For Each Platform

By

When I was building Moments, a Snapchat clone built with Xamarin.Forms and Microsoft Azure, I needed a way to show a live, in-app camera feed so users could take all the selfies their hearts desire without having to leave the app to take a photo. This type of camera access is possible in traditional Xamarin.iOS and Xamarin.Android development, which I learned how to do from our Xamarin recipes, but I knew that this type of camera access wasn’t part of Xamarin.Forms’ out-of-the-box 40+ controls, layouts, and pages.

Luckily, not only can you extend existing controls and build your own controls in Xamarin.Forms, you can also render platform-specific pages from within your Xamarin.Forms apps. This was the type of customization that I needed, and it was surprisingly simple to implement.

Moments, a Snapchat clone built with Xamarin.Forms and Azure.

Implementing a PageRenderer

User interfaces built with Xamarin.Forms look and feel native because they are native — they’re rendered using the native controls for each platform. Developers can easily tap into these native renderings of Xamarin.Forms controls by using custom renderers. There are two main types of custom renderers: renderers for controls, such as EntryRenderer, that all inherit from ViewRenderer, and a renderer for pages called PageRenderer.

As an example, you could have an app where 90% of the screens can be built using the provided Xamarin.Forms controls, but the other 10% of screens cannot. PageRenderers are perfect for those screens that require platform-specific APIs, such as the in-app camera feed in Moments. If you find yourself writing more PageRenderers than not, you should probably use the traditional Xamarin approach instead of Xamarin.Forms.

Subclassing Your Page

In the Shared Project or PCL where your Xamarin.Forms user interface logic resides, create a subclass of ContentPage:

public class CameraPage : ContentPage
{
}

Platform-Specific Implementation

Both the appearance and behavior of our page written using custom renderers will come from a platform-specific implementation. This implementation can take full advantage of 100% of the native APIs on that platform, helping you build complex pages from within a Xamarin.Forms app. To get started, create a new class for your custom page and subclass PageRenderer:

public class CameraPage : PageRenderer
{
}

iOS

Implementing custom pages from iOS is easy — PageRenderer is just a UIViewController, thus allowing you to take advantage of all of the view controller lifecycle methods, such as ViewDidLoad. This is extremely convenient as you may already have code for an existing UIViewController you want to pull into a Xamarin.Forms page, as seen below:

[assembly:ExportRenderer(typeof(Moments.CameraPage), typeof(Moments.iOS.CameraPage))]
public class CameraPage : PageRenderer
{
    public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();
        SetupUserInterface ();
        SetupEventHandlers ();
        SetupLiveCameraStream ();
        AuthorizeCameraUse ();
    }
    public override void ViewDidAppear (bool animated)
    {
        base.ViewDidAppear (animated);
        SetupLiveCameraStream ();
    }
}

Android

On Android a PageRenderer is just a ViewGroup, which is, as its name implies, a grouping of views. You can add views directly to the ViewGroup, or, if you wish to work directly with the activity, access that via the Context property:

[assembly:ExportRenderer(typeof(Moments.CameraPage), typeof(Moments.Android.CameraPage))]
public class CameraPage : PageRenderer
{
    public CameraPage ()
    {
        activity = this.Context as Activity;
        view = activity.LayoutInflater.Inflate(Resource.Layout.CameraLayout, this, false);
        ...
    }
}

For both iOS and Android, if you wish to alter or subscribe to any properties of your Xamarin.Forms page from within your custom renderer, you can access it by overriding the OnElementChanged method.

Finally, to enable Xamarin.Forms to properly find and render your custom page, you must add the [assembly] attribute above the class. The first parameter references the Xamarin.Forms page in your PCL or Shared Project, while the second parameter references the platform-specific page you wish to replace it with:

[assembly:ExportRenderer(typeof(Moments.CameraPage), typeof(Moments.iOS.CameraPage))]

The Result: An In-App Camera Feed

CameraPages

Wrapping It All Up

Adding one or two platform-specific screens to your Xamarin.Forms apps is easy thanks to custom renderers! With Xamarin.Forms, you can share large amounts of code (87% in the case of Moments) and still maintain 100% access to the underlying native APIs, such as use of a live feed from the camera. To get started, check out the docs on custom renderers or view the code from Moments to start adding platform-specific screens into your Xamarin.Forms apps today.

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInEmail this to someone
July 8, 2015

Xamarin and Oracle Join Forces to Build Better Enterprise Apps

By

Today, we joined Oracle as a technology partner for the launch of Oracle Mobile Cloud Service (MCS). Combining Xamarin’s strength in delivering consumer-grade native apps for iOS and Android with Oracle’s comprehensive mobile backend-as-a-service (mBaaS) offering, our partnership makes it simple and easy to deliver high-quality enterprise mobile apps.

Oracle + Xamarin

This collaboration enables developers to integrate their fully native, high-performance Xamarin apps to the robust backend features of Oracle MCS, including: push notifications, authentication, mobile APIs, data storage, diagnostics, and analytics. Enterprises can continuously test and monitor their apps to ensure quality, performance and rapid iteration through a combination of Xamarin Test Cloud, Xamarin Insights, and Oracle MCS’ diagnostics and analytics capabilities.

We’re really excited to be working with Oracle to help companies build great mobile apps.

Getting Started

  1. Sign up for an Oracle Mobile Cloud Service account.
  2. Download the Xamarin SDK for Oracle Mobile Cloud Service from Xamarin Component Store.
  3. Open the iOS or Android solution sample from the Xamarin SDK for Oracle MCS samples directory.
  4. Walk through our Getting Started documentation to configure the MCS backend and run the sample app.

Learn More

Join us July 29, 2015 for a live webinar on Enterprise Mobile Success Michael Facemire, Forrester with Xamarin and Oracle to hear from Xamarin and Oracle executives, as well as leading Forrester analyst Michael Facemire.

Register

To learn more about the partnership and to download the Xamarin SDK for Oracle MCS, visit xamarin.com/oracle or read the press release.

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInEmail this to someone
July 7, 2015

Xamarin Test Cloud to Support Appium Framework

By


With Xamarin Test Cloud, our goal has always been to provide a mobile app testing service that developers love while solving the challenges that prevent testing from being a seamless part of the development process. Developers writing Xamarin Test Cloud tests have the choice of using Ruby and the Calabash testing framework or C# with Xamarin.UITest.

Today, we’re excited to announce that we’ll be adding support for writing tests with the Appium automation framework and its multiple language bindings, including Java, JavaScript, Python, and PHP, and we’d like to invite you to join our early access program.

 

appium_logo

A Fully-Integrated Testing Framework

Xamarin Test Cloud gives developers a fully-integrated testing framework by tightly integrating Calabash Ruby and C# Xamarin.UITest with our device cloud infrastructure, reporting capability, and development environment integration. Including the community-led Appium testing framework in Xamarin Test Cloud allows us to help even more developers increase app quality by eliminating challenges that hold back most mobile testing initiatives: deep integration with your development processes and environment and a device management infrastructure that saves thousands of hours and dollars managing devices.

Developer Productivity

Xamarin Test Cloud automates the execution of your tests, helping you find bugs earlier in the development process and preventing regressions. It integrates with popular Continuous Integration (CI) systems like Jenkins, TeamCity, and Team Foundation Server to automatically initiate tests and report results back into CI systems. New features in Xamarin Studio and Xamarin for Visual Studio upload and execute tests to Xamarin Test Cloud directly from the developer environment, making app testing a seamless part of the developer experience.

Appium developers will be able to take advantage of Xamarin Test Cloud’s device management infrastructure, which utilizes real devices running multiple operating system versions and automatically loads, unloads, and securely restores each device to factory OEM standards between each test run, saving thousands of hours of manual labor and device expenses.

Get Started

If you’re already using Appium and are interested in being part of our early access program, let us know by filling out this form. You don’t have to be a Xamarin customer – your participation and feedback is important! We can’t offer access to everyone on day one, but Appium will soon be a fully supported framework alongside Calabash and Xamarin.UITest in Xamarin Test Cloud.

We’ll be doing a live webinar on Xamarin Test Cloud on Wednesday, July 8 at 8:30 am PT covering different mobile testing methodologies and providing an in-depth overview of how it works, along with other the exciting plans in our product roadmap. Click here to register.

Keep building great apps!

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInEmail this to someone