No Image

xAPIWrapper – .NET Standard Library and Xamarin Component

What’s Experience API (xAPI)?

xAPI lets applications share data about human performance (broadly defined). More precisely, xAPI lets you capture (big) data on human performance, along with associated instructional content or performance context information (i.e., experience). xAPI applies “activity streams” to tracking data and provides sub-APIs to access and store information about state and content. This enables nearly dynamic tracking of activities from any platform or software system, from traditional Learning Management Systems to mobile devices, simulations, wearables, physical beacons, and more.

For more information refer to adlnet.gov

Xamarin Component, .NET Standard Library

Q: What we can track with xAPI?

Track micro-behaviors, state, and context, such as…

  • Reading an article or interacting with an eBook
  • Watching a training video, stopping and starting it
  • Training data from a simulation
  • Performance in a mobile app
  • Chatting with a mentor
  • Physiological measures, such as heart-rate data
  • Micro-interactions with e-learning content
  • Team performance in a multi-player serious game
  • Quiz scores and answer history by question
  • Real-world performance in an operational context

Why do we need xAPI?

  • Track any experience (formal, informal, or operational)
  • Platform and subject-matter agnostic
  • Built upon RESTful and JSON (so it’s lightweight)
  • Human (and machine) readable
  • 100% free with no licensing fees or vendor lock-in
  • Open source and community maintained

xAPIWrapper – Xamarin .NET Standard Component for xAPI

xAPIWrapper is a Xamarin .NET Standard component built to simplify interfacing with standards-based LRS from any Xamarin iOS, Android or Windows Mobile Application or any .NET Web, Enterprise or Desktop application. The xamarin component provides a simple interface, very similar to adding Log statements to the code. It has easy-to-use API’s for Android and iOS, helpful classes, and methods to track user interaction with any digital assets in a simple Actor, Object, Verb verbatim. The complex interactions can be captured in form of statements, activities or scores using simple log like statements.

Why use the xAPIWrapper?

  1. It’s a .NET Standard library, that supports the majority of the .NET apps
  2. An xAPIWrapper.js port implemented in C# that can be leveraged within your Xamarin iOS or Android app to interface with any LRS
  3. It abstracts the complexities and semantics of the xAPI specification
  4. It eliminates the need for end-users to know the internals of the xAPI specification
  5. Using the library to generate statements is as easy as adding log statements to your code

Installation and Usage

Import component in your Android and iOS apps.

For Android

Brief: Following code can be used to send a xAPI statement to an LRS

button.Click += async delegate
{
  var apiWrapper = new APIWrapper("xAPI Endpoint","Your Identity","Your Secret");
  var statement = apiWrapper.PrepareStatement("test@ald.net","experienced","Activity");
  var task = await apiWrapper.SendStatement(statement);
  
  if (task.Success)
  {
     button.Text = $"{_count++} sent!";
  }
};

For iOS

Brief: Following code can be used to send a xAPI statement to an LRS
Button.TouchUpInside += async delegate
{ 
  var apiWrapper = new APIWrapper("xAPI Endpoint","Your Identity","Your Secret");
  var statement = apiWrapper.PrepareStatement("test@ald.net","experienced","Activity");
  var task = await apiWrapper.SendStatement(statement);
  var title = $"sending {_count} statement!";
  if (task.Success)
  {
     title = $"{_count++} statements sent!";
  }
  Button.SetTitle(title, UIControlState.Normal);
};

It’s Free and Open Source!

xAPIWrapper is an open source under an Apache License and is 100% free for anyone to use to enhance.

xAPIWrapper is Asynchronous by Design

Each interface and API has a dual implementation with synchronous and asynchronous calls using the async-await pattern to be inherently high performing. The xAPIWrapper is unit tested from within the web and mobile apps to test each interfaces standards compliance.

Xamarin Component, .NET Standard Library