Clever Apps SDK

Free from the routine of publishing and supporting a game project.

Read this section to understand how Clever Apps works. Understanding our working principles will allow you to simplify many processes at different stages of game production.

Clever Apps is a powerful tool for quick integration with gaming platforms, increasing player retention and engagement. Clever Apps contains twice as many capabilities of all platforms.

We create a product that should cover all aspects in management, development, support, and distribution of the game and automate and simplify them to the maximum, allowing you to save up to 90% of your resources.

We are developing the service in the following directions:

Unified SDK for Gaming Platforms

We adhere to the concept of "One build - all platforms." You always work with an abstract SDK.

At any moment, you can find out whether purchases, advertising, or authorization are available on the platform. It doesn’t matter to you what the platform is for comfortable work.

How does it work?

A unified SDK will allow you not to integrate each platform manually into all games and make separate builds for each platform.

10 builds for 10 web platforms? Looks costly, routine, and seems like it will lead to burnout of your developers. On Unity, it's almost a full working day just to compile builds. A single build for all platforms is much better.

We support more than 10 gaming platforms. Each platform takes about 1 month of development, but you can use it right away. We constantly add new platforms. Now, to support the same functionality, about a year of work by frontend, backend, QA, and PM specialists is required.

We do not charge fees when working with the SDK, except for methods of working with our game backend. The functionality of the platforms is the merit of the platforms; we will not charge for it.

We provide ready-made interfaces for rendering leaderboards, achievements, chats, and methods that are not supported by the platform but are allowed to be used through independent implementation, such as the "Share Game" function. You just need to call the method to open the window.

Why is this beneficial?
  • At startup, we determine the platform and load the SDK only for the selected gaming platform, so as not to load code from other platforms. This solution allows access to all platform SDKs only when needed and additionally saves the size of the game's code. This differs from connecting each plugin of each platform simultaneously.
  • Advertising, payments, and authorization work directly through the platform’s SDK. Our server is used to process and store payments to not lose purchase data and protect against cheats. Each platform provides a mechanism for matching signatures to prevent invalid purchases.
  • For functions like "Invite Friends," "Share," "Leave a Review," and other platform features, the solution provided by the platform is predominantly used. If the platform does not support a certain method but permits its use, we will provide our own solution or design an overlay for you so that it does not differ in functionality for you.
Interactive example

Initialization

// install code before body close tag

// RU region
<script src="https://pay.zareefgaming.com/static/connector.latest.js?projectId=your_project_id"></script>
// other
<script src="https://publication.labsystech.ru/static/connector.latest.js?projectId=your_project_id"></script>

<script>
    window.onConnectorInit = () => {
        // connector is initialized
    
        connector.payments.whenConnected(() => {
            // payments are connected
        });

        connector.ads.whenConnected(() => {
            // ads are connected
        });

        connector.social.whenConnected(() => {
            // social is connected
        });

        connector.platform.whenConnected(() => {
            // platform is connected
        });
    };
</script>

Local testing

Before integrating with any particular platform, developers should first test the integration on their local machines. To use the connector on localhost, add the following code to index.html, replacing your_project_id with the projectId we provided.

<script async src="https://pay.zareefgaming.com/static/connector.latest.js?projectId=your_project_id&source=test"></script>

Passing source=test enables TestPlatform, allowing you to test the integration of all core functionalities:

  • Making, consuming and restoring purchases.
  • Rewarded, interstitial and sticky ads.
  • Social functions like share & invite.
  • Login.

Configs

Products config

A config containing information about all available products. It is used by both client and server.

Product format:

// tag
"gold500": {
    "price": 1.99,
    "image": "https://pp.userapi.com/c840424/v840424789/24003/67ulmZ-cLVg.jpg",
    // productId
    "id": {
      "instant": "500gold",
      "yandex": "500gold"
    },
    "title": {
        "en": "",
        "ru": ""
    },
    "description": {
        "en": "",
        "ru": ""
    }
}

Products config on client

Products config is downloaded by client during initialization. Platforms that have the appropriate functionality retrieve products catalog via platform SDK and use that catalog as the source of truth. Catalog products are then mapped to corresponding products in config by productId. You can specify product by both productId that can be different for different platforms or tag that is the same regardless of the platform. Platforms that don't support catalog treat products config as the catalog.

Platforms with catalog functionality:

  • Facebook Instant Games
  • Wortal
  • Yandex Games
  • Samsung
  • Discord
  • Android
  • iOS
  • Amazon
  • Rustore

Products config on the server

Some platforms also use products config on the server because they retrieve product info - title, description, image via webhook from our server.

Platforms that require products on the server:

  • VK Games
  • Plinga
  • Kongregate
  • Yookassa

Client config

A config downloaded by the client during initialization, includes data for different platforms

{
    instant: {
        appId: "12345678987654",
        rewarded: "12345678987654"
    },
    vk: {
        appId: "1234567",
        groupId: "your_group_id"
    }
}

Required for platforms:

  • Facebook Instant Games
  • Yandex Games
  • VK Games
  • OK Games
  • My World
  • Samsung
  • Discord
  • Fotostrana
  • Mobage
  • SPMobage
  • Draugiem
  • MSN
  • Xsolla
  • iOS
  • Android
  • Amazon
  • Rustore
  • Mygames
  • GDcom
  • Xiaomi

Server config

Server side only config. Includes secret keys and other data required on the server.

{
    "instant": {
        "appSecret": "loab85jo8gvjos3"
    },
    "xsolla": {
        "merchantId": 123456,
        "authKey": "123456:imvj45i8auoi58gie84",
        "appSecret": "lvsSOEoOSE",
        "appId": "123456"
    }
}

Required for platforms:

  • Facebook Instant Games
  • Yandex Games
  • VK Games
  • OK Games
  • My World
  • Kongregate
  • Discord
  • Fotostrana
  • Mobage
  • SPMobage
  • Plinga
  • Draugiem
  • MSN
  • Xsolla
  • Yookassa
  • iOS
  • Android
  • Amazon
  • Rustore
  • Mygames