Skip to content

tengontheway/unity_sdk

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Summary

This is the Unity3d SDK of adjust™. It supports iOS and Android targets. You can read more about adjust™ at adjust.com.

Basic Installation

These are the minimal steps required to integrate the adjust SDK into your Unity3d project.

1. Get the SDK

Download the latest version from our releases page. Unzip the Unity package in a folder of your choice.

2. Add it to your project

Open your project in the Unity Editor and navigate to Assets → Import Package → Custom Package and select the downloaded Unity package file.

3. Integrate adjust into your app

Add the prefab located at Assets/Adjust/Adjust.prefab to the first scene.

Edit the parameters of the Adjust script in the Inspector menu of the added prefab.

Replace {YourAppToken} with your App Token. You can find in your dashboard.

You can increase or decrease the amount of logs you see by changing the value of Log Level to one of the following:

  • Verbose - enable all logging
  • Debug - enable more logging
  • Info - the default
  • Warn - disable info logging
  • Error - disable warnings as well
  • Assert - disable errors as well

Depending on whether or not you build your app for testing or for production you must change Environment with one of these values:

    'Sandbox'
    'Production'

Important: This value should be set to Sandbox if and only if you or someone else is testing your app. Make sure to set the environment to Production just before you publish the app. Set it back to Sandbox when you start testing it again.

We use this environment to distinguish between real traffic and artificial traffic from test devices. It is very important that you keep this value meaningful at all times! Especially if you are tracking revenue.

If your app makes heavy use of event tracking, you might want to delay some HTTP requests in order to send them in one batch every minute. You can enable event buffering by ticking the box for Event Buffering.

If you don't want to start the adjust SDK at the Awake event of the game, tick the box Start Manually. Call the method Adjust.start with the AdjustConfig object as a parameter to start the adjust SDK instead.

For an example of scene with of a button menu with these options and others, open the example scene located at Assets/Adjust/ExampleGUI/ExampleGUI.unity. The source for this scene is located at Assets/Adjust/ExampleGUI/ExampleGUI.cs.

4. Add Google Play Services

Since August 1st, 2014, apps in the Google Play Store must use the Google Advertising ID to uniquely identify devices. To allow the adjust SDK to use the Google Advertising ID, you must integrate the Google Play Services. If you haven't done this yet, you should copy google-play-services_lib folder into the Assets/Plugins/Android folder of your Unity project and after building your app, Google Play Services should be integrated.

google-play-services_lib is part of the Android SDK, which you may already have installed.

There are two main ways to download the Android SDK. If you are using any tool which has the Android SDK Manager, you should download Android SDK Tools. Once installed, you can find the libraries in the SDK_FOLDER/extras/google/google_play_services/libproject/ folder.

If you are not using any tool which has Android SDK Manager, you should download the standalone version of Android SDK from official page. By downloading this, you will have only a basic version of the Android SDK which doesn't include the Android SDK Tools. There are more detailed instructions on how to download these in the readme file provided by Google, called SDK Readme.txt, which is placed in Android SDK folder.

5. Build scripts

To facilitate the build process we integrated build scripts for both Android and iOS. The script runs after each build and is called by the file Assets/Editor/AdjustEditor.cs. They require at least python 2.7 installed to work.

It's possible to disable the post processing by clicking on the menu Assets → Adjust → Change post processing status. Press the same button to re-enable it.

iOS

The iOS build script is located at Assets/Editor/PostprocessBuildPlayer_AdjustPostBuildiOS. It changes the Unity3d iOS generated project in the following ways:

  1. Adds the iAd and AdSupport frameworks to the project. This is required by the adjust SDK - check out the adjust iOS page for more details.

  2. Adds the other linker flag -all_load. This allows the adjust Objective-C categories to be recognized during the build time.

If you have a custom build that puts the Unity3d iOS generated project in a different location, inform the script by clicking on the menu Assets → Adjust → Set iOS build path and choosing the build path of the iOS project.

After running, the script writes the log file AdjustPostBuildiOSLog.txt at the root of the Unity3d project with log messages of the script run.

Android

The android build script is located at Assets/Editor/PostprocessBuildPlayer_AdjustPostBuildAndroid. It changes the AndroidManifest.xml file located at Assets/Plugins/Android/. The problem with this approach is that, the manifest file used for the Android package was the one before the build process ended.

To mitigate this, simply run the build again, using the manifest created or changed by the previous run, or click on the menu Assets → Adjust → Fix AndroidManifest.xml so the script can run before the build process. Either way, it is only necessary to do this step once, as long the manifest file remains compatible with the adjust SDK.

If there is not a AndroidManifest.xml file at Assets/Plugins/Android/ it creates a copy from our compatible manifest file AdjustAndroidManifest.xml. If there is already an AndroidManifest.xml file, it checks and changes the following:

  1. Adds a broadcast receiver. For more details consult the adjust Android page for more details.

  2. Adds the permission to connect to the internet.

  3. Adds the permission to access information about Wi-Fi networks.

After running, the script writes the log file AdjustPostBuildAndroidLog.txt at the root of the Unity3d project with log messages of the script run.

Additional features

Once you integrated the adjust SDK into your project, you can take advantage of the following features.

6. Add tracking of custom events

You can tell adjust about any event you wish. Suppose you want to track every tap on a button. You would have to create a new Event Token in your dashboard. Let's say that Event Token is abc123. In your button's click handler method you could then add the following line to track the click:

AdjustEvent adjustEvent = new AdjustEvent ("abc123");
Adjust.trackEvent (adjustEvent);

7. Add tracking of revenue

If your users can generate revenue by tapping on advertisements or making in-app purchases you can track those revenues with events. Lets say a tap is worth one Euro cent. You could then track the revenue event like this:

AdjustEvent adjustEvent = new AdjustEvent ("abc123");
adjustEvent.setRevenue (0.01, "EUR");
Adjust.trackEvent (adjustEvent);

8. Add callback parameters

You can also register a callback URL for that event in your dashboard and we will send a GET request to that URL whenever the event gets tracked. In that case you can also put some key-value-pairs in an object and pass it to the trackEvent method. We will then append these named parameters to your callback URL.

For example, suppose you have registered the URL http://www.adjust.com/callback for your event with Event Token abc123 and execute the following lines:

AdjustEvent adjustEvent = new AdjustEvent ("abc123");

adjustEvent.addCallbackParameter ("key", "value");
adjustEvent.addCallbackParameter ("foo", "bar");

Adjust.trackEvent (adjustEvent);

In that case we would track the event and send a request to:

http://www.adjust.com/callback?key=value&foo=bar

It should be mentioned that we support a variety of placeholders like {idfa} for iOS or {android_id} for Android that can be used as parameter values. In the resulting callback the {idfa} placeholder would be replaced with the ID for Advertisers of the current device for iOS and the {android_id} would be replaced with the AndroidID of the current device for Android. Also note that we don't store any of your custom parameters, but only append them to your callbacks. If you haven't registered a callback for an event, these parameters won't even be read.

9. Partner parameters

You can also add parameters to be transmitted to network partners, for the integrations that have been activated in your adjust dashboard.

This works similarly to the callback parameters mentioned above, but can be added by calling the addPartnerParameter method on your AdjustEvent instance.

AdjustEvent adjustEvent = new AdjustEvent ("abc123");

adjustEvent.addPartnerParameter ("key", "value");
adjustEvent.addPartnerParameter ("foo", "bar");

Adjust.trackEvent (adjustEvent);

You can read more about special partners and these integrations in our guide to special partners.

9. Receive attribution change callback

You can register a callback to be notified of tracker attribution changes. Due to the different sources considered for attribution, this information can not by provided synchronously. Follow these steps to implement the optional callback in your application:

Please make sure to consider applicable attribution data policies.

  1. Create a method with the signature of the delegate Action<AdjustAttribution>.

  2. After creating the AdjustConfig object, call the adjustConfig.setAttributionChangedDelegate with the previously created method. It is also be possible to use a lambda with the same signature.

  3. If instead of using the Adjust.prefab, the Adjust.cs script was added to another GameObject. Don't forget to pass the name of that GameObject as the second parameter of AdjustConfig.setAttributionChangedDelegate.

As the callback is configured using the AdjustConfig instance, you should call adjustConfig.setAttributionChangedDelegate before calling Adjust.start.

The callback function will get called when the SDK receives final attribution data. Within the callback function you have access to the attribution parameter. Here is a quick summary of its properties:

  • string trackerToken the tracker token of the current install.
  • string trackerName the tracker name of the current install.
  • string network the network grouping level of the current install.
  • string campaign the campaign grouping level of the current install.
  • string adgroup the ad group grouping level of the current install.
  • string creative the creative grouping level of the current install.
using com.adjust.sdk;

public class ExampleGUI : MonoBehaviour {
{
    void OnGUI () {
    {
        if (GUI.Button (new Rect (0, 0, Screen.width, Screen.height), "callback")) 
        {
            AdjustConfig adjustConfig = new AdjustConfig ("{Your App Token}", AdjustEnvironment.Sandbox);
            adjustConfig.setLogLevel (AdjustLogLevel.Verbose);
            adjustConfig.setAttributionChangedDelegate (this.attributionChangedDelegate);

            Adjust.start (adjustConfig);
        }
    }
    
    public void attributionChangedDelegate (AdjustAttribution attribution)
    {
        Debug.Log ("Attribution changed");
        
        // ...
    }
}

10. Disable tracking

You can disable the adjust SDK from tracking by invoking the method setEnabled with the enabled parameter as false. This setting is remembered between sessions, but it can only be activated after the first session.

Adjust.setEnabled(false);

You can verify if the adjust SDK is currently active with the method isEnabled. It is always possible to activate the adjust SDK by invoking setEnabled with the enabled parameter set to true.

Troubleshooting

iOS

Even with the post build script it is possible that the project is not ready to run out of the box.

If needed, disable dSYM File. In the Project Navigator, select the Unity-iPhone project. Click the Build Settings tab and search for debug information. There should be an Debug Information Format or DEBUG_INFORMATION_FORMAT option. Change it from DWARF with dSYM File to DWARF.

Build scripts

The post build scripts require execute permissions to be able to run. If the build process freezes in the end and opens one of the script files, this may be that your system is configured to not allow scripts to run by default. If this is the case, use the chmod tool in both Assets/Editor/AdjustPostBuildiOS and Assets/Editor/AdjustPostBuildAndroid to add execute privileges.

License

The file mod_pbxproj.py is licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

The adjust-sdk is licensed under the MIT License.

Copyright (c) 2012-2015 adjust GmbH, http://www.adjust.com

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

This is the Unity SDK of

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 45.0%
  • C# 42.8%
  • Objective-C 7.8%
  • Objective-C++ 3.9%
  • Makefile 0.5%