Initialize the SDK

You must initialize the adjoe SDK before you can use any of its features. To do this, call Adjoe.Init(string, Action, Action<Exception>) when your app is starting.

The initialization will run asynchronously in the background and notify you when it is finished by invoking one of the Action parameters which you pass.

After one successful initialization all following calls to Adjoe.Init will immediately invoke the error callback until your app is removed from the heap.

Best practices for the SDK initialization:

  • Initialize early: You should initialize the SDK as soon as possible after your app starts to make sure that all adjoe features are available when you want to use them.

  • Initialize after your app authentication: You should initialize the SDK (again) with up-to-date details as soon as your user has signed up/signed in to the app so to update the userId.

  • Initialize regularly: For the best user experience, we highly recommend to call this method every time your app comes to the foreground. This should not be noticeable in your app's performance.

  • Initialization triggers: Good places to call this method are the app start and your main comopnent's OnApplicationPause method.

Example

using io.adjoe.sdk;

public class Main {

    void Start()
    {
        Adjoe.Init("sdkHash", options, AdjoeInitialisationSuccess, AdjoeInitialisationError);
    }
    
    public void AdjoeInitialisationSuccess()
    {
        // the adjoe SDK was initialized successfully
    }
    
    public void AdjoeInitialisationError(Exception exception)
    {
        // an error occurred while initializing the adjoe SDK.
        // note that exception might be null
    }

}

The parameters to this call are as follows:

The parameters to this call are as follows:

  • string apiKey: Your adjoe API key.

  • AdjoeOptions options: An object to pass additional options to the adjoe SDK when initializing. This parameter is optional and you can call Adjoe.Init(string) or Adjoe.Init(string, Action, Action<Exception>) instead.

  • Action successCallback: A listener which is called when the adjoe SDK was initialized successfully. This parameter is optional and you can call Adjoe.Init(string) or Adjoe.Init(string, AdjoeOptions) instead.

  • Action<Exception> errorCallback: A listener which is called when the initialization of the adjoe SDK failed. If it failed with an exception, this exception is passed as the first argument. This parameter is optional and you can call Adjoe.Init(string) or Adjoe.Init(string, AdjoeOptions) instead.

You can create an AdjoeOptions object in the following way:

AdjoeOptions options = new AdjoeOptions()
    .SetUserId(userId)
    .SetApplicationProcessName(applicationProcessName)
    .SetAdjoeParams(adjoeParams)
    .SetAdjoeUserProfile(adjoeUserProfile)
    .SetAdjoeExtensions(adjoeExtensions);
  • string userId: A custom identifier that you wish to assign to this user. If you don't have an identifier for your user already, the adjoe SDK will generate one. You can then access it by calling Adjoe.GetUserId(). Only this ID will allow you to match the payouts to your users in the process of Server-to-server payout.

  • string applicationProcessName: Numerous operations within the Adjoe SDK, including initialisation, only execute if the current process matches your application process name. If you manually adjust the android.process for the application tag in the AndroidManifest file, please ensure you also set it in the Adjoe SDK using the setter for this variable.

  • Object AdjoeParams: A table containing User Acquisition and Playtime placement information.

  • Object AdjoeUserProfile: This contains the birthday and the gender of the user using the App. Using this adjoe can provide a more suitable advertising campaign for the user.

  • Object AdjoeExtensions: This object contains additional optional five string identifiers that i.e would have a meaning in your system and they will be provided back in the Server-to-server payout.

If you want to use S2S payout, you have to set the user id in order to match the payout to your user.

Adjoe Parameters

You can pass additional UA and placement parameters when you initialize the SDK

AdjoeParams adjoeParams = new AdjoeParams();
adjoeParams.SetUaNetwork("network")
					.SetUaChannel("Channel")
					.SetUaSubPublisherCleartext("SubPublisherCleartext")
					.SetUaSubPublisherEncrypted("SubPublisherEncrypted")
					.SetPlacement("placement");
AdjoeOptions options = new AdjoeOptions()
    .SetUserId(userId);
    .SetAdjoeParams(adjoeParams);
Adjoe.Init(sdkHash, options, AdjoeInitialisationSuccess, AdjoeInitialisationError);

The IsInitialized method

To check whether the SDK is initialized you can call Adjoe.IsInitialized(). This will return true if the SDK is initialized and false otherwise. However, you should not condition calling Init on the result of IsInitialized because the SDK will do some checks on its own. You should not do something like the following as it can lead to bad user experience:

void Start() {
    if (!Adjoe.IsInitialized()) {
        Adjoe.Init(sdkHash, options, successCallback, errorCallback);
    }
}

Instead, just call Init without checking for IsInitialized. You can however use IsInitialized e.g. for debugging or to check whether the SDK is initialized before calling other methods of the SDK like RequestRewards.