Search in sources :

Example 11 with OptimizelyManager

use of com.optimizely.ab.android.sdk.OptimizelyManager in project android-sdk by optimizely.

the class APISamplesInJava method samplesForDoc_CustomUserProfileService.

public static void samplesForDoc_CustomUserProfileService(Context context) {
    class CustomUserProfileService implements UserProfileService {

        public Map<String, Object> lookup(String userId) throws Exception {
            return null;
        }

        public void save(Map<String, Object> userProfile) throws Exception {
        }
    }
    CustomUserProfileService customUserProfileService = new CustomUserProfileService();
    OptimizelyManager optimizelyManager = OptimizelyManager.builder().withSDKKey("<Your_SDK_Key>").withUserProfileService(customUserProfileService).build(context);
}
Also used : UserProfileService(com.optimizely.ab.bucketing.UserProfileService) HashMap(java.util.HashMap) Map(java.util.Map) OptimizelyManager(com.optimizely.ab.android.sdk.OptimizelyManager)

Example 12 with OptimizelyManager

use of com.optimizely.ab.android.sdk.OptimizelyManager in project android-sdk by optimizely.

the class APISamplesInJava method samplesForDoc_ForcedDecision.

public static void samplesForDoc_ForcedDecision(Context context) {
    OptimizelyManager optimizelyManager = OptimizelyManager.builder().withSDKKey("FCnSegiEkRry9rhVMroit4").build(context);
    OptimizelyClient optimizelyClient = optimizelyManager.initialize(context, R.raw.datafile);
    // -- sample starts here
    // Create the OptimizelyUserContext, passing in the UserId and Attributes
    OptimizelyUserContext user = optimizelyClient.createUserContext("user-id");
    OptimizelyDecisionContext flagContext = new OptimizelyDecisionContext("flag-1", null);
    OptimizelyDecisionContext flagAndABTestContext = new OptimizelyDecisionContext("flag-1", "exp-1");
    OptimizelyDecisionContext flagAndDeliveryRuleContext = new OptimizelyDecisionContext("flag-1", "delivery-1");
    OptimizelyForcedDecision variationAForcedDecision = new OptimizelyForcedDecision("variation-a");
    OptimizelyForcedDecision variationBForcedDecision = new OptimizelyForcedDecision("variation-b");
    OptimizelyForcedDecision variationOnForcedDecision = new OptimizelyForcedDecision("on");
    // set a forced decision for a flag
    Boolean success = user.setForcedDecision(flagContext, variationAForcedDecision);
    OptimizelyDecision decision = user.decide("flag-1");
    // set a forced decision for an ab-test rule
    success = user.setForcedDecision(flagAndABTestContext, variationBForcedDecision);
    decision = user.decide("flag-1");
    // set a forced variation for a delivery rule
    success = user.setForcedDecision(flagAndDeliveryRuleContext, variationOnForcedDecision);
    decision = user.decide("flag-1");
    // get forced variations
    OptimizelyForcedDecision forcedDecision = user.getForcedDecision(flagContext);
    Log.d("Optimizely", "[ForcedDecision] variationKey = " + forcedDecision.getVariationKey());
    // remove forced variations
    success = user.removeForcedDecision(flagAndABTestContext);
    success = user.removeAllForcedDecisions();
}
Also used : OptimizelyDecision(com.optimizely.ab.optimizelydecision.OptimizelyDecision) OptimizelyDecisionContext(com.optimizely.ab.OptimizelyDecisionContext) OptimizelyClient(com.optimizely.ab.android.sdk.OptimizelyClient) OptimizelyUserContext(com.optimizely.ab.OptimizelyUserContext) OptimizelyManager(com.optimizely.ab.android.sdk.OptimizelyManager) OptimizelyForcedDecision(com.optimizely.ab.OptimizelyForcedDecision)

Example 13 with OptimizelyManager

use of com.optimizely.ab.android.sdk.OptimizelyManager in project android-sdk by optimizely.

the class APISamplesInJava method samplesForDoc_ExampleUsage.

public static void samplesForDoc_ExampleUsage(Context context) {
    // Build a manager
    OptimizelyManager optimizelyManager = OptimizelyManager.builder().withSDKKey("<Your_SDK_Key>").build(context);
    // Instantiate a client synchronously with a bundled datafile
    // copy datafile JSON from URL accessible in app>settings
    String datafile = "REPLACE_WITH_YOUR_DATAFILE";
    OptimizelyClient optimizelyClient = optimizelyManager.initialize(context, datafile);
    // Create a user-context
    Map<String, Object> attributes = new HashMap<>();
    attributes.put("logged_in", true);
    OptimizelyUserContext user = optimizelyClient.createUserContext("user123", attributes);
    // Call the decide method
    OptimizelyDecision decision = user.decide("product_sort");
    // did the decision fail with a critical error?
    String variationKey = decision.getVariationKey();
    if (variationKey == null) {
        List<String> reasons = decision.getReasons();
        Log.d("Optimizely", "decision error: " + reasons);
        return;
    }
    // execute code based on flag enabled state
    boolean enabled = decision.getEnabled();
    OptimizelyJSON variables = decision.getVariables();
    if (enabled) {
        String varStr = null;
        try {
            varStr = variables.getValue("sort_method", String.class);
        } catch (JsonParseException e) {
            e.printStackTrace();
        }
    }
    // or execute code based on flag variation:
    if (variationKey.equals("control")) {
    // Execute code for control variation
    } else if (variationKey.equals("treatment")) {
    // Execute code for treatment variation
    }
    // Track an event
    user.trackEvent("purchased");
}
Also used : OptimizelyJSON(com.optimizely.ab.optimizelyjson.OptimizelyJSON) HashMap(java.util.HashMap) OptimizelyDecision(com.optimizely.ab.optimizelydecision.OptimizelyDecision) JsonParseException(com.optimizely.ab.config.parser.JsonParseException) OptimizelyClient(com.optimizely.ab.android.sdk.OptimizelyClient) OptimizelyUserContext(com.optimizely.ab.OptimizelyUserContext) OptimizelyManager(com.optimizely.ab.android.sdk.OptimizelyManager)

Example 14 with OptimizelyManager

use of com.optimizely.ab.android.sdk.OptimizelyManager in project android-sdk by optimizely.

the class APISamplesInJava method samplesForDoc_EventBatchingAdvanced.

public static void samplesForDoc_EventBatchingAdvanced(Context context) {
    // -- sample starts here
    EventHandler eventHandler = DefaultEventHandler.getInstance(context);
    // Here we are using the builder options to set batch size
    // to 5 events and flush interval to a minute.
    BatchEventProcessor batchProcessor = BatchEventProcessor.builder().withBatchSize(5).withEventHandler(eventHandler).withFlushInterval(TimeUnit.MINUTES.toMillis(1L)).build();
    OptimizelyManager optimizelyManager = OptimizelyManager.builder().withSDKKey("<Your_SDK_Key>").withEventHandler(eventHandler).withDatafileDownloadInterval(15, TimeUnit.MINUTES).withEventProcessor(batchProcessor).build(context);
    OptimizelyClient optimizely = optimizelyManager.initialize(context, R.raw.datafile);
    // log event
    // -- sample starts here
    optimizely.addLogEventNotificationHandler(logEvent -> {
        Log.d("Optimizely", "event dispatched: " + logEvent);
    });
}
Also used : EventHandler(com.optimizely.ab.event.EventHandler) DefaultEventHandler(com.optimizely.ab.android.event_handler.DefaultEventHandler) BatchEventProcessor(com.optimizely.ab.event.BatchEventProcessor) OptimizelyClient(com.optimizely.ab.android.sdk.OptimizelyClient) OptimizelyManager(com.optimizely.ab.android.sdk.OptimizelyManager)

Example 15 with OptimizelyManager

use of com.optimizely.ab.android.sdk.OptimizelyManager in project android-sdk by optimizely.

the class APISamplesInJava method samplesForDoc_BundledDatafile.

public static void samplesForDoc_BundledDatafile(Context context) {
    OptimizelyManager optimizelyManager = OptimizelyManager.builder().withSDKKey("FCnSegiEkRry9rhVMroit4").build(context);
    // -- sample starts here
    // Initialize Optimizely asynchronously with a datafile.
    // If it is not able to download a new datafile, it will
    // initialize an OptimizelyClient with the one provided.
    optimizelyManager.initialize(context, R.raw.datafile, (OptimizelyClient optimizelyClient) -> {
        OptimizelyUserContext user = optimizelyClient.createUserContext("<User_ID>");
        OptimizelyDecision decision = user.decide("<Flag_Key>");
    });
    // Initialize Optimizely synchronously
    // This will immediately instantiate and return an
    // OptimizelyClient with the datafile that was passed in.
    // It'll also download a new datafile from the CDN and
    // persist it to local storage.
    // The newly downloaded datafile will be used the next
    // time the SDK is initialized.
    optimizelyManager.initialize(context, R.raw.datafile);
}
Also used : OptimizelyDecision(com.optimizely.ab.optimizelydecision.OptimizelyDecision) OptimizelyClient(com.optimizely.ab.android.sdk.OptimizelyClient) OptimizelyUserContext(com.optimizely.ab.OptimizelyUserContext) OptimizelyManager(com.optimizely.ab.android.sdk.OptimizelyManager)

Aggregations

OptimizelyManager (com.optimizely.ab.android.sdk.OptimizelyManager)25 OptimizelyClient (com.optimizely.ab.android.sdk.OptimizelyClient)19 OptimizelyUserContext (com.optimizely.ab.OptimizelyUserContext)15 OptimizelyDecision (com.optimizely.ab.optimizelydecision.OptimizelyDecision)13 HashMap (java.util.HashMap)10 OptimizelyJSON (com.optimizely.ab.optimizelyjson.OptimizelyJSON)5 JsonParseException (com.optimizely.ab.config.parser.JsonParseException)4 OptimizelyDecideOption (com.optimizely.ab.optimizelydecision.OptimizelyDecideOption)4 DefaultEventHandler (com.optimizely.ab.android.event_handler.DefaultEventHandler)2 EventHandler (com.optimizely.ab.event.EventHandler)2 OptimizelyConfig (com.optimizely.ab.optimizelyconfig.OptimizelyConfig)2 OptimizelyVariation (com.optimizely.ab.optimizelyconfig.OptimizelyVariation)2 Intent (android.content.Intent)1 IntentFilter (android.content.IntentFilter)1 NonNull (androidx.annotation.NonNull)1 OptimizelyExperimentsClient (com.kickstarter.libs.OptimizelyExperimentsClient)1 OptimizelyEnvironment (com.kickstarter.libs.models.OptimizelyEnvironment)1 OptimizelyDecisionContext (com.optimizely.ab.OptimizelyDecisionContext)1 OptimizelyForcedDecision (com.optimizely.ab.OptimizelyForcedDecision)1 EventRescheduler (com.optimizely.ab.android.event_handler.EventRescheduler)1