Xamarin

Xamarin is deprecated and no longer supported. The packages and examples on this page describe legacy Xamarin integrations and do not represent a supported binding for the current Help Lightning Android SDK 4.x. Contact Help Lightning before planning Xamarin or .NET MAUI Android work.

This page is retained for applications that already embed legacy Help Lightning calls through Xamarin on iOS or Android. It is not current Android installation guidance.

Prerequisites

Before using a legacy SDK, you need a Help Lightning API key, which requires a Help Lightning site with an Enterprise Tier.

Legacy packages

The following downloads are retained for existing integrations only:

These links do not provide or imply a supported Android SDK 4.x Xamarin or .NET MAUI binding.

The legacy SDK is distributed as NuGet packages. Existing applications can set up a local repository and configure their environment to use the applicable package.

Legacy delegate example

The following C# example is retained for the legacy Xamarin API. Do not copy these API names into a new Android SDK 4.x binding without validating the generated C# surface.

using HelpLightning.SDK;

public partial class CallController : UIViewController, ICallClientDelegate
{
    public override void ViewDidLoad()
    {
        // Set this instance as the default delegate.
        CallClientFactory.Instance.CallClient.Delegate = this;
    }

    public void OnCallEnded(Call call, string reason)
    {
        Console.WriteLine("The call has ended: {0}", reason);
    }

    public void OnScreenCaptureCreated(Call call, object image)
    {
        // Store or upload the captured image.
    }

    public object isShareKnowledgeEnabled(Call call)
    {
        return false;
    }

    public object IsQuickKnowledgeOverlaySupported(Call call)
    {
        return false;
    }
}

Create a legacy Call with the tokens and server URL returned by your integration server, and then start it:

Call call = new Call(sessionId, sessionToken, userToken,
                     url, apiKey, displayName, avatarUrl);

// The second parameter is the UIViewController that hosts the call.
Task<IDictionary<string, object>> task =
    CallClientFactory.Instance.CallClient.StartCall(call, this);

task.ContinueWith(t => {
    if (t.IsCompletedSuccessfully)
    {
        Console.WriteLine("The call has started: " +
            t.Result[Call.HLCallInfoCallKey]);
    }
    else
    {
        Console.Error.WriteLine("Cannot start the call: " + t.Exception);
    }
});

Legacy Xamarin Android initialization

The following generated-binding syntax was documented for the legacy Xamarin Android 16.4-and-later line. It has not been validated as Android SDK 4.x or .NET MAUI syntax.

namespace HelpLightning.SDK.Sample.Android
{
    [Application]
    public class SampleApplication : Application
    {
        public override void OnCreate()
        {
            base.OnCreate();
            HLClient.Instance.Init(ApplicationContext);
        }
    }
}

Android SDK 4.x binding boundary

A normal native Android Gradle application resolves transitive dependencies from the SDK’s published POM. That installation path does not apply to a Xamarin/.NET MAUI binding or an application that manually packages AAR files. Help Lightning does not currently document a supported 4.x Xamarin/.NET MAUI Android package.

A customer maintaining its own binding must regenerate it against the complete released POM and validate the generated C# API. The 4.x dependency transition includes all of the following:

  • Remove the OpenTok Android dependency com.opentok.android:opentok-android-sdk:2.29.2.
  • Remove com.vipaar.lime:libtinysplinej:1.0.1.
  • Bind Zoom Video SDK core us.zoom.videosdk:zoomvideosdk-core:2.5.0.
  • Bind io.github.afreakyelf:Pdf-Viewer:2.3.7.
  • Use companion artifacts from the same Help Lightning SDK release for ballyhoo, camera, libyuv, zebracamera, core-di, and core-android-util.
  • Raise the Android minimum to API 28.

The Zoom 2.5.0 AAR contains native libraries for arm64-v8a and armeabi-v7a. A manually produced package must preserve those libraries. The artifact does not support x86 or x86_64 Android emulators, so validation must use a physical ARM device or an ARM emulator. Do not assume a legacy NuGet package handles these requirements.

The regenerated binding must also validate and document:

  • A custom service derived from InCallService, including whether generated bindings require overrides for Java default methods such as Report a Bug.
  • HLClient.selectQuickKnowledgeOverlay(Uri) as the binding-safe quick-overlay entry point.
  • Opt-in embedded chat and embedded participant-invite callbacks.
  • Host-owned unread badge updates, including sending 0 when messages are read.
  • EmbeddedContentDescriptor construction from C#, including its Fragment class and Bundle arguments.

Consumers must implement the generated equivalent of HLClientDelegate through InCallService; HLCallDelegate is an internal SDK bridge and is not a public host contract.

Legacy examples

These repositories contain historical Xamarin examples. They are not evidence of Android SDK 4.x or .NET MAUI compatibility:

Legacy iOS screen sharing

The Xamarin iOS screen-sharing tutorial is retained for the legacy iOS integration.