Muse SDK

Incorporate the SDK into your code to communicate directly with the Muse Hub

The Muse SDK allows for a seamless customer experience for apps that are web based, or require a login/account setup flow to work. The goal is to activate and sign in everything behind the scenes so that the product has a great first-run experience.

It is very straightforward to integrate the Muse SDK into an existing software project. Via the Muse SDK, the product can query the Muse Hub and retrieve information like the Unique User ID, to use it internally or together with a server component.

Package structure

The MuseClientSDK package is structured as follows:

  • README.md Quick overview of the SDK

  • bin

    • macos_universal Contains the universal dynamic library for macOS, supporting both arm64 and x86_64 architectures.

    • win64 Contains the 64-bit dynamic library (.dll) for Windows, along with the respective import library (.lib).

  • include Header files defining the SDK API for accessing library functions.

  • example A cross-platform example demonstrating SDK usage.

Integration

Your product can access the SDK functionality by linking the provided binary libraries and using the API include/MuseClientSdkApi.h.

The SDK is provided with a C interface for maximum compatibility across languages, compilers and ABIs.

Functionality

The easiest way get acquainted with the SDK is to build the example provided in the example directory. This example demonstrates the usage of the SDK in a practical scenario and can serve as a guide for integrating and using the SDK in your own projects.

For a detailed description of the API functions and parameters, please refer to the API header MuseClientSdkApi.h.

General information

  • The API is single threaded.

  • All functions are synchronous and can block the caller up to a few seconds while waiting for external resources. If responsiveness is a concern, it is suggested to use this API on a dedicated thread instead of the UI thread.

  • All returned char* fields are either valid null-terminated strings, or nullptr if not available.

  • All returned memory structures must be released using the dedicated MuseSdk_release functions.

Electron applications

Electron applications can use the SDK via js bindings, known as a native add-on. For your convenience, an Electron add-on is provided with instructions for building for your specific Electron ABI. This add-on exposes a js interface for all the native SDK API.

Initialization

  • MuseSdk_initialize: Initializes the secure inter-process communication with the Muse Hub for subsequent SDK API calls.

Electron applications cannot use MuseSdk_initializeand must use a dedicated API instead:

MuseSdk_initializeElectron: Initializes the secure inter-process communication between an Electron app and the Muse Hub for subsequent SDK API calls. Pass process.execPathas the mandatory argument. This API cannot be used by native applications, that shall use MuseSdk_initialize instead.

  • MuseSdk_initializeTestMode: can be used in alternative to MuseSdk_initialize to ease integration testing, because it does not require your test product to be installed via the Muse Hub to communicate with it.

  • MuseSdk_finalize: Releases the communication channel with the Muse Hub and any associated resources.

User information

The information returned here allows a product to activate and sign in a user behind the scenes.

  • MuseSdk_getUserInfo: Retrieves the UUID associated with the active MuseHub account.

  • MuseSdk_releaseUserInfo: Releases any data created by MuseSdk_getUserInfo.

This functionality is complemented by the Web Hooks feature.

Product information

  • MuseSdk_getSku: Retrieves the SKU specified in the Muse Partner Portal for the current product.

  • MuseSdk_releaseSku: Releases any data created by MuseSdk_getSku.

  • MuseSdk_getSubscriptionOption: Retrieves the ID specified in the Muse Partner Portal for the currently authorized product subscription.

  • MuseSdk_releaseSubscriptionOption: Releases any data created by MuseSdk_getSubscriptionOption.

  • MuseSdk_getActivationStatus: Retrieves the current activation status for the running product. This is useful for server-based products that self-update frequently and do not rely upon the more secure Muse DRM solution.

Last updated