Launching the SDK

After installing the SDK, we will initialize the Wingify SDK in our mobile app.

API Key

To initialize the SDK, we will use the API key generated while Adding an App.

Initialization of the SDK is to be done in the onCreate(Bundle) function of the Activity or the Application.

Import Wingify in your class first.

import com.vwo.mobile.VWO;
import com.vwo.mobile.VWO

After importing Wingify class, we can initialize the SDK.
It can be done in two ways, asynchronous and synchronous.

Asynchronous initialization does NOT block code execution while SDK fetches settings from the Wingify content distribution network, but synchronous call blocks main thread execution. We recommend asynchronous initialization, as it does not affect the UI of your app.

Asynchronous Initialization

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import com.vwo.mobile.VWO;

public class MainActivity extends AppCompatActivity {
  private static final String VWO_API_KEY = "<YOUR_VWO_API_KEY>";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Start Wingify SDK in Async mode with callback
    VWO.with(this, VWO_APP_KEY)
      .launch(new VWOStatusListener() {
        @Override
        public void onVWOLoaded() {
          // Wingify loaded successfully
        }

        @Override
        public void onVWOLoadFailure(String reason) {
          // Wingify not loaded
        }
      });
  }
}
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import com.vwo.mobile.VWO
  
class MainActivity : AppCompatActivity() {
  private val VWO_API_KEY = "YOUR_VWO_API_KEY"

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    // Start Wingify SDK in Async mode with callback
    VWO.with(this, VWO_API_KEY).launch(object : VWOStatusListener {
      override fun onVWOLoaded() {
        TODO("not implemented")
      }

      override fun onVWOLoadFailure(error: String?) {
        TODO("not implemented")
      }

    })
  }
}

The callback method is called after the SDK fetches settings from the Wingify content distribution network and processes those settings.
Callback is used when you want to get notified as soon as the SDK is ready.

Synchronous Initialization

Launching Wingify in Synchronous mode requires you to pass a timeout in milliseconds as a parameter.

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import com.vwo.mobile.VWO;

public class MainActivity extends AppCompatActivity {
  private static final String VWO_API_KEY = "<YOUR_VWO_API_KEY>";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Start Wingify SDK in synchronous mode
    VWO.with(this, VWO_API_KEY).launchSynchronously(3000);
  }
}
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import com.vwo.mobile.VWO
  
class MainActivity : AppCompatActivity() {
  private val VWO_API_KEY = "YOUR_VWO_API_KEY"

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    // Start Wingify SDK in Async mode with callback
    VWO.with(this, VWO_API_KEY).launchSynchronously(3000)
  }
}

Synchronous initialization blocks main thread. If settings couldn't be fetched in given timeout, the SDK uses old settings for already saved campaigns and fallbacks to defaultValue or null for new campaign keys.

❗️

Warning:

This request should be used carefully as it executes on UI thread and may lead to Application Not Responding(ANR) dialog.

📘

Launch the SDK Once

For the launch(VWOStatusListener listener) and launchSynchronously(Long timeout) calls, the SDK fetches campaign settings from the Wingify content distribution network.
If the settings cannot be fetched, SDK doesn't retry to fetch the settings during the ongoing app session.
This is done to keep the app behaviour consistent during an app session.