A/B Tests\uf0c1

In this client, we format A/B tests with three nesting components. The first is the Variant, the difference between one kind of push and another. The Variant is a part of the Experiment object, with many variants in an array. Lastly. AbTest handles what Experiments along with their Variants get sent to the various API endpoints. Basic pushes can be added straight to the Variant object on the push instance variable, or a Push object can be created, and the payload applied to the Variant object. For more information on this please visit: https://docs.airship.com/api/ua/#tag/a/b-tests

List Existing A/B Tests\uf0c1

This endpoint will return the existing A/B tests on a project.

require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key:'<app_key>', secret:'<secret_key>')
ab_test = UA::AbTest.new(client: airship)
ab_test.limit = 5
ab_test.list_ab_test

Note

Should return a 200 HTTP status code as well as a list of existing A/B tests with a default offset and a limit of 5. The limit and offset are optional here.

Create A/B Test\uf0c1

As described above, the creation of an A/B Test consists of creating a few objects, grabbing pertinent data out of them, and creating an A/B Test that is as complicated or as simple as you like. In some cases, it might be easier to assign the payload values yourself, but as pushes, and the tests themselves get more complicated, it is easier to let the objects do the work for you.

require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key:'<app_key>', secret:'<secret_key>')
variant_one = UA::Variant.new(client: airship)
variant_one.push = {
    "notification": {
        "alert": "I love cereal"
    }
}
variant_two = UA::Variant.new(client: airship)
variant_two.push = {
    "notification": {
        "alert": "I prefer oatmeal"
    }
}
experiment = UA::Experiment.new(client: airship)
experiment.name = 'Neat experiment'
experiment.description = 'See how neat we can get'
experiment.audience = 'all'
experiment.device_types = 'all'
experiment.variants << variant_one.payload
experiment.variants << variant_two.payload
ab_test = UA::AbTest.new(client: airship)
ab_test.experiment_object = experiment.payload
ab_test.create_ab_test

Note

Should return a 201 HTTP status code as well as other information detailing specific information (such as push_id) for the newly created A/B Test.

List Scheduled A/B Tests\uf0c1

This will list all the scheduled A/B Tests for a project.

require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key:'<app_key>', secret:'<secret_key>')
ab_test = UA::AbTest.new(client: airship)
ab_test.list_scheduled_ab_test

Note

Should return a 200 HTTP status code. Here, you can also apply limit and offset by assigning values to the instance variables on the AbTest object.

Delete A/B Test\uf0c1

This will delete an A/B Test with a given experiment ID.

require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key:'<app_key>', secret:'<secret_key>')
ab_test = UA::AbTest.new(client: airship)
ab_test.experiment_id = '<experiment_id>'
ab_test.delete_ab_test

Note

Response should be a 200 HTTP Response

Validate A/B Test\uf0c1

Very similar to the create A/B Test endpoint, this will validate an A/B Test to see if it is formatted properly.

require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key:'<app_key>', secret:'<secret_key>')
variant_one = UA::Variant.new(client: airship)
variant_one.push = {
    "notification": {
        "alert": "I love cereal"
    }
}
variant_two = UA::Variant.new(client: airship)
variant_two.push = {
    "notification": {
        "alert": "I prefer oatmeal"
    }
}
experiment = UA::Experiment.new(client: airship)
experiment.name = 'Neat experiment'
experiment.description = 'See how neat we can get'
experiment.audience = 'all'
experiment.device_types = 'all'
experiment.variants << variant_one.payload
experiment.variants << variant_two.payload
ab_test = UA::AbTest.new(client: airship)
ab_test.experiment_object = experiment.payload
ab_test.validate_ab_test

Note

Should return a 200 HTTP status code.

Individual A/B Test Lookup\uf0c1

This will lookup a specific A/B Test with a given experiment_id

require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key:'<app_key>', secret:'<secret_key>')
ab_test = UA::AbTest.new(client: airship)
ab_test.experiment_id = '<experiment_id>'
ab_test.lookup_ab_test

Note

Should return a 200 HTTP status code