Adobe Air devtodev SDK. Analytics Integration

To integrate your application with devtodev system please perform the following actions:

  1. Add the application to the Space using the wizard for adding application. Attention! If your Adobe Air can be used for compilations for different platforms, you need to add the applications in devtodev for each platform. As a result, the statistics will be gained for each platform separately.
  2. Download the latest version of devtodev SDK from the GitHub repository.
  3. Add com.devtodev.sdk.ane library to your application

  4. For Android add the following permissions to the <android><manifestAdditions> in MyApplication.xml file:

    <uses-permission android:name="android.permission.INTERNET"/>
    <!-- Necessary(Required for sending analytics data to our server) -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- Additional (Required for devices' MAC addresses collection) -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- Additional (Required for cellular operator data collection) -->

    To automatically gather the referrals data on Android, add the following strings into tag<application></application>

    <receiver android:name="com.devtodev.InstallReceiver" android:enabled="true" android:exported="true">
    <intent-filter>
         <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
    </receiver>


    For other platforms no changes are needed.

  5. Add the following imports to your source

    import com.devtodev.sdk.core.DevToDev;
    import com.devtodev.sdk.core.data.consts.AccrualType;
    import com.devtodev.sdk.core.data.consts.Gender;
    import com.devtodev.sdk.core.data.consts.SocialNetwork;
    import com.devtodev.sdk.core.data.consts.TutorialState;
    import com.devtodev.sdk.cheat.data.consts.VerifyStatus;
    import com.devtodev.sdk.cheat.data.consts.TimeStatus;
    import com.devtodev.sdk.core.data.metrics.aggregated.events.CustomEventParams;

     

  6. Add following source into initialize event in MyApplication.mxml file:

    DevToDev.init(AppId:String, SecretKey:String);

    The appKey and appSecret values are unique for each app on each platform and can be found in the settings of appropriate app  (My apps -> App Name -> Settings -> Integration).

For example:
file MyApplication.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Application initialize="application1_activateHandler(event)" 
               deactivate="application1_deactivateHandler(event)" 
               xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" applicationDPI="160">
    <fx:Script>
        <![CDATA[
                 import com.devtodev.sdk.core.DevToDev;
                 import com.devtodev.sdk.core.data.consts.AccrualType;
                 import com.devtodev.sdk.core.data.consts.Gender;
                 import com.devtodev.sdk.core.data.consts.SocialNetwork;
                 import com.devtodev.sdk.core.data.consts.TutorialState;
                 import com.devtodev.sdk.cheat.data.consts.VerifyStatus;
                 import com.devtodev.sdk.cheat.data.consts.TimeStatus;
                 import com.devtodev.sdk.core.data.metrics.aggregated.events.CustomEventParams;

                 protected function application1_activateHandler(event:Event):void {
                      DevToDev.init(AppId, SecretKey);
                      DevToDev.startSession();
                 }

                 protected function application1_deactivateHandler(event:Event):void {
                      DevToDev.endSession();        
                 }
        ]]>
    </fx:Script>

    <fx:Declarations>
    </fx:Declarations>

    <s:VGroup>
    </s:VGroup>

</s:Application>

file MyApplication.xml:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<application xmlns="http://ns.adobe.com/air/application/17.0">
   <id>com.my.application</id>
   <filename>myapplication</filename>
   <name>myapplication</name>
   <versionNumber>1.0.0</versionNumber>
   <initialWindow>
      <autoOrients>true</autoOrients>
      <fullScreen>false</fullScreen>
      <visible>true</visible>
      <softKeyboardBehavior>none</softKeyboardBehavior>
   </initialWindow>
   <android>
      <colorDepth>16bit</colorDepth>
      <manifestAdditions><![CDATA[
         <manifest android:installLocation="auto">
            <uses-permission android:name="android.permission.INTERNET"/>
            <uses-permission android:name="android.permission.WAKE_LOCK"/>
            <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
            <application>
                 <receiver android:name="com.devtodev.InstallReceiver" android:enabled="true"
                 android:exported="true">
                   <intent-filter>
                        <action android:name="com.android.vending.INSTALL_REFERRER" />
                   </intent-filter>
                 </receiver>
            </application>
         </manifest>
      ]]></manifestAdditions>
   </android>
   <iPhone>
      <InfoAdditions><![CDATA[
         <key>UIDeviceFamily</key>
         <array>
            <string>1</string>
            <string>2</string>
         </array>
      ]]></InfoAdditions>
      <requestedDisplayResolution>high</requestedDisplayResolution>
   </iPhone>

   <extensions>
      <extensionID>com.devtodev.SDK</extensionID>
   </extensions>
</application>

Additional initialization

If the application you integrate SDK in is a part of cross-platform project, then the user data initialization is required.

Since the analytics of cross-platform projects is based on an unique user (unlike the usual projects where it is based on device identifiers), you have to:

  • Set the unique cross-platform user identifier (it will be used for cross-platform project data collection).
  • Actualize the user data. Mostly it is about game applications where the player has a game level as a characteristic. For such projects you need to set the current player level.

We recommend you to set the user identifier before SDK initialization, otherwise the user identifier from the previous session will be used since the SDK initialization moment till the setUserId method call.

If your cross-platform application supposes to be used without cross-platform authorization, don't use the setUserId method or use the empty string ("") as the user identifier. SDK will assign the unique identifier to user. This identifier will we used until the real cross-platform identifier assigns to the user.

/**
* Method allows to initialize the user. It applies when SDK initialization or user relogin.
* @param activeUserId - unique cross-platform user identifier (max. 64 symbols)
*/
DevToDev.setUserId(activeUserId:String);

/**
* Method sets the current user level. Using this method allows to actualize the SDK user data
* in game cross-platform applications.
* @param level - number of current game level of the user
*/
DevToDev.setCurrentLevel(level:int);

/**
* devtodev App Id and Secret key can be found in the devtodev application
* settings page (“My apps” → App Name → “Settings” → “Integration”)
* @param appKey - application key
* @param appSecret - application secret
*/
DevToDev.init(appKey:String, appSecret:String);

Attention! If your application allows user to relogin (changing the user during the working session of application), then the setUserID and setCurrentLevel methods should be called just after the authorization. You don't need to call the SDK initialization one more time.

Checking the events
Basic Methods