.. _flurry: Flurry ====== Flurry is an analytics platform for analyzing consumer interactions with mobile applications. It offers solutions for marketers to advertise in-apps, as well as a service for applying monetization structures to mobile apps. Apptimize integrates with Flurry by automatically importing the following for iOS and Android: * Events * Specific User Properties: Gender, Age and UserID You are also able to use the Apptimize TestInfo API and our participation callbacks to forward your experiment data to Flurry. :ref:`Please see our data export guidelines for more information on how to set this up.` Automatic Event Importing ^^^^^^^^^^^^^^^^^^^^^^^^^ Apptimize detects Flurry Events and automatically imports them for use as Goals within your Apptimize Experiments. Apptimize does not support event properties so please note that your events will only be imported with their names. .. tabs:: .. code-tab:: objectivec iOS (Objective-C) :caption: iOS (Objective-C) // In this example, Apptimize will auto-import "Article_Read" as an event but will // not include the "articleParams" properties into your Apptimize Goals. NSDictionary *articleParams = [NSDictionary dictionaryWithObjectsAndKeys: @"John Q", @"Author", @"Registered", @"User_Status", nil]; [Flurry logEvent:@"Article_Read" withParameters:articleParams]; // The following logEvent would be auto-imported Apptimize as is [Flurry logEvent:@"EventName"]; .. code-tab:: swift iOS (Swift) :caption: iOS (Swift) // In this example, Apptimize will auto-import "Article_Read" as an event but will // not include the "articleParams" properties into your Apptimize Goals. let articleParams = ["Author": "John Q", "User_Status": "Registered"]; Flurry.logEvent("Article_Read", withParameters: articleParams); .. code-tab:: java Android (Java) :caption: Android (Java) // In this example, Apptimize will auto-import "Plan selected" as an event but will // not include the "Plan: Premium" properties into your Goals. Map articleParams = new HashMap(); // param keys and values have to be of String type articleParams.put("Author", "John Q"); articleParams.put("User_Status", "Registered"); // up to 10 params can be logged with each event FlurryAgent.logEvent("Article_Read", articleParams); // The logEvent following would be auto-imported into Apptimize as is FlurryAgent.logEvent("EventName"); In order for the import to take place, you will first need to trigger your events in a live experiment. We recommend running an A/A test in your app so that you can successfully have all existing events triggered, without affecting your end-users. Once experiment results are posted from your A/A test, you will see your Flurry Events listed as selectable goals for use in your future experiments. Flurry Events that have been automatically imported from Flurry will appear with the prefix "fl:" in your Goals like so: .. image:: flurry/flurry-events.png Note that logError and logEvent with timing methods not automatically imported. If you wish to have other specific events reflected in your Apptimize results, we recommend tracking manually with our :ref:`Apptimize track method ` where the event occurs. Automatic User ID and Properties Importing ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Apptimize will automatically import the following user properties: * Gender * Age * User ID After successfully importing these, you are able to :ref:`Target with them in your Apptimize Experiments.` To have any of these properties be available for targeting, you simply need to fire an event or reach a screen in the app that utilizes your User Properties while your device is paired with the Apptimize Dashboard. To pair with the Dashboard, you will need to open our :ref:`Preview Variants tool`, which will mirror your active device. Once you trigger or navigate to the screen where you call setUserID, setAge, and/or setGender, Apptimize will detect these attributes and automatically import them for use. You should also be able to see the property fire on the left-hand side of the Preview window. Once you have successfully paired and triggered your properties, they will be imported as selectable elements in the Target & Launch dropdown. You will also be able to filter by your user ID/properties in your experiment's Results. If you wish to identify your users in Apptimize, so that the variant they see consistently depends on their user ID, please set their ID with the methods outlined :ref:`in our documentation here.` If there are additional user properties that you would like to target with, please manually set these properties with our :ref:`Custom Attributes ` where they are identified. Exporting Experiment Data ^^^^^^^^^^^^^^^^^^^^^^^^^ Apptimize maintains a TestInfo API which can be used to export Apptimize experiment results data to Flurry. Here are links to the documentation of this API: - `iOS TestInfo API Reference `__ - `Android TestInfo API Reference `__ Calling TestInfo will return a map of the following info for all actively running tests: * Experiment Name * Variant Name * Experiment ID * Variant ID * Enrollment in Experiment Date * Start Experiment Date * User has Participated since Enrollment This data provides comprehensive detail around the user's experiment participation, and can be parsed and/or passed along to flurry or any other third party as you please. As an example, your output might look like: .. code-block:: objective-c testinfo: { "New Experiment" = "Variant \"original\" (157581) of test \"New Experiment\" (11452), enrolled since 2015-06-06 01:15:56 +0000 (started on 2015-06-06 00:47:15 +0000)"; For additional details and sample implementation, please see our :ref:`Data Export documentation page. ` Flurry References ^^^^^^^^^^^^^^^^^ - `iOS Flurry API Reference `__ - `Android Flurry API Reference `__